Stackless Theme Review: A Free Minimal WooCommerce Theme
Most free WooCommerce themes ship a web font, an icon font and a page builder’s worth of options, and then leave the Checkout block, the My Account page and every plugin’s buttons looking like they came from 3 different sites. The Stackless theme is a free, minimal WooCommerce theme built the other way round: system fonts, 1 small script, about 100 KB of CSS, and a style for every screen a store actually has.
One thing to say before anything else. The theme is built by Gaurav Tiwari, who also runs Gatilab, as the companion to his Stackless for WooCommerce plugin. This is a first-party review written from the public demo store, the theme’s source and a set of measurements we took ourselves, and the limits section is as plain as the praise for that reason.
Choose the Stackless theme if you run WooCommerce and want a store that looks finished without buying a theme or installing a page builder, and especially if you run Stackless for WooCommerce, because every one of its modules is styled already. It’s free, GPL and licensed for unlimited sites.
Skip it if you want Customizer sliders for colors, header layouts and grid columns, if your store needs RTL, or if you want a block theme you can rebuild in the Site Editor. It is a classic theme with one considered layout, and changing that layout means CSS.
Rating: 4.7 / 5. Measured on the demo store, the theme’s own CSS and JS come to 104 KB with no web font request, against 222 KB of CSS plus a Google Fonts request for WooCommerce’s own Storefront theme.
Pros
- Free, GPL-2.0-or-later, unlimited sites, license key that never expires
- System fonts, no web font, no icon font, no jQuery of its own, 1 script of 4 KB
- Shop, product, Cart and Checkout blocks, My Account, orders and notices share one design
- Every Stackless module styled: wishlist, sold counts, quotes, licenses, subscriptions, order bumps, currency switcher
- Full-screen live search, sticky product summary, live cart count, blog sidebar, author box and related posts
- theme.json with palette, type scale and spacing; editor styles match the front end
Cons
- No color, header or grid controls in the Customizer; one layout
- Classic theme, not a block theme; no Site Editor
- No RTL stylesheet
- Young: first release October 2026, one developer
Quick Comparisons
- vs Storefront: WooCommerce’s own free theme loads 4 stylesheets totaling 222 KB plus Source Sans Pro from Google Fonts and an 80 KB icon-font stylesheet. Stackless loads 100 KB of CSS, no font and inline SVG icons. Storefront has more Customizer controls and an RTL stylesheet. Stackless styles the Cart and Checkout blocks and the Stackless modules, which Storefront does not know about.
- vs Astra or Kadence (free tiers): both give you header builders, color controls and grid settings in the Customizer that Stackless doesn’t have. Both are general-purpose themes with WooCommerce support added. Stackless is a store theme first, and its blog is the add-on.
- vs a block theme such as Twenty Twenty-Five: a block theme lets you rebuild every template in the Site Editor. Stackless is classic PHP with theme.json for the editor, which is far less to configure, and gives up that freedom.
What the Stackless Theme Is
Stackless is a classic WordPress theme for WooCommerce stores, version 1.3.0 at the time of writing, available as a free download from gauravtiwari.org with a license key that comes from the free checkout and never expires. It requires WordPress 6.6, PHP 7.4 and WooCommerce 9.9, and it’s tested up to WordPress 7.1 and WooCommerce 11.2. The source is on GitHub under GPL-2.0-or-later, so it can go on client sites without a license question.
The design comes from Tabler, the open-source admin design system, and the theme says so in its readme: neutral grays, a single blue accent (#066fd1), near-black text (#171717), hairline borders (#e5e5e5), a #fafafa canvas, 6px corners and 44px controls. Tabler Icons 3.47.0 ship as small inline SVG files rather than an icon font. The result looks like a well-made SaaS dashboard turned into a shop, which is the point: nothing in it asks for attention, so the products get it.

It’s built to run beside Stackless for WooCommerce, the 30-module plugin reviewed here already, and it styles every module that plugin renders: wishlist buttons, sold counts, stock urgency labels, quote forms, license tables, subscription screens, saved carts, order bumps, consent checkboxes and the currency switcher. Without the plugin it’s still a complete WooCommerce theme. The Stackless stylesheet only loads when the plugin is active, and the WooCommerce stylesheet only when WooCommerce is.
Who Should Not Use the Stackless Theme
- Stores that want to design in the Customizer. Appearance → Customize has site identity, menus, widgets and 2 Stackless options (how many related posts and products to show). There are no color pickers, no header layout picker and no product grid column setting. The colors are CSS custom properties on
:root, so a child theme with 10 lines of CSS changes them, but that is a developer’s route. - Right-to-left stores. There’s no
style-rtl.cssyet. Storefront ships one. - Anyone who wants the Site Editor. This is a classic theme with PHP templates. The block editor works fully for content, with theme.json settings and editor styles, but templates are files, not blocks.
- Stores with a heavily customized Storefront or Astra setup. You’d be rebuilding header, footer and product grid tweaks from scratch, and the theme gives you fewer dials to do it with.
How Light the Stackless Theme Is
The claim on the product page is system fonts, no jQuery, one script. We measured what that means on the demo store with a headless browser at a 1366px viewport, waiting for the network to go quiet, and then read the theme’s own files to separate what the theme loads from what WooCommerce loads.
The theme’s own assets, as served on the demo (minified):
| File | What it is | Size |
|---|---|---|
| base.min.css | Tokens, elements, forms, core blocks | 20.3 KB |
| layout.min.css | Header, footer, menus, search, sidebar | 25.1 KB |
| woocommerce.min.css | Shop, product, cart, checkout, account (loads only with WooCommerce) | 43.2 KB |
| stackless.min.css | Stackless module styles (loads only with the plugin) | 11.8 KB |
| theme.min.js | Mobile menu and header search | 4.0 KB |
| Total | 104.4 KB |
The body font on the demo resolves to system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", sans-serif, so there is no font request at all, and the icons are inline SVG, so there is no icon font either. The 1.1.1 release switched to minified files, which the changelog puts at 18% smaller overall and 42% smaller for the script.
What the whole demo page loads, by page:
| Page | Requests | Transferred |
|---|---|---|
| Homepage | 35 | 660 KB |
| Shop | 40 | 805 KB |
| Single product | 40 | 722 KB |
| Cart (Cart block) | 89 | 3.1 MB |
| Checkout (Checkout block) | 97 | 3.4 MB |
Two things need saying about that table. First, jQuery is on every page of the demo at 88 KB plus 14 KB of jquery-migrate, and it isn’t the theme’s doing: WooCommerce enqueues it for add-to-cart and its own frontend script, and the theme simply doesn’t add to it. Second, the Cart and Checkout pages are 4 times heavier than the rest because WooCommerce’s blocks ship their React bundles, and no theme can take those away. The Stackless plugin’s Optimizer module removes the roughly 52 prefetch hints WooCommerce adds to every page with a cart, which is why the shop and product pages stay at 40 requests, but the checkout itself is WooCommerce’s weight to carry.
For comparison, Storefront 4.6.2, WooCommerce’s own theme, enqueues its main stylesheet (40 KB), an icon font stylesheet (80 KB), a block stylesheet (43 KB) and a WooCommerce stylesheet (59 KB), all unminified, for 222 KB of theme CSS, and requests Source Sans Pro from Google Fonts on every page. It also loads WooCommerce’s cart-fragments script, which Stackless does not. Those are file sizes from the theme’s zip, not a page measurement, because Storefront’s demo site is a marketing page with tracking on it and wouldn’t be a fair test.
Every Store Screen, Styled
A theme earns its keep on the pages people buy from, and this is where Stackless is strongest. The shop grid is 3 columns with the product image on a tinted tile, the sold count and stock labels from the plugin in their place, and the right button for each product type: Add to cart, Read more for a quote-only product, Log in to buy for a hidden-price product.

The single product page puts the gallery on the left and a sticky summary on the right, so the price and the Add to cart button stay in view while the description, tabs and related products scroll past. Request a quote and Save to wishlist from the plugin sit under the button in the same style as everything else, and since 1.3.0 the related products show 6 in 2 rows of 3, with a Customizer setting from 0 to 12.

The Cart and Checkout blocks are the test most themes fail, because the blocks render from React with their own class names and most themes never touch them. Stackless styles both. The cart gets a totals card and a full-width checkout button, and the checkout gets the order summary on a tinted left panel and the form on the right, with the plugin’s currency selector and consent checkboxes sitting inside it like native fields.


My Account has the navigation beside the content, which sounds basic until you have seen how many themes stack it above. Version 1.2.3 fixed exactly that: WooCommerce’s clearfix pseudo-elements had become grid items and pushed the menu into the content column.

Header, Search and Mobile
The header is one row: logo, a two-level primary menu, and on the right a currency code (when the plugin’s selector is on and more than 1 currency is enabled), a search button, an account link and a cart icon with a live count. Without a primary menu assigned, it lists the shop and a few top-level pages, so a fresh install doesn’t look broken.
The search button opens a full-screen overlay with live product results as you type, popular categories and best sellers, and it keeps focus inside the overlay until you press Esc. On the demo, typing 4 letters returns the matching product with its price and thumbnail before you finish the word.

On a phone the header keeps the logo and 4 buttons in one row, the menu becomes a full-height panel with the two levels indented, and the currency switcher moves to the bottom of that panel, which 1.2.2 added for screens under 600px. The Checkout block stacks the summary above the form.


Blog, Editor and Everything Else
Stores have a blog whether or not anyone planned one, so the theme treats posts as editorial pages: a single column of readable width, an author box, related posts (6 by default, from the same category first, topped up with recent posts) and a blog sidebar on the post list and archives that stacks below the posts under 960px. The sidebar shows search, recent posts and categories until you add widgets of your own.

The style guide page on the demo is the quickest way to judge the rest. Every heading level, list, table, quote and code block, every input type, select, checkbox and radio, and every core block and block style is on one page, in the same tokens as the shop. In the block editor, theme.json supplies the palette, the type scale, spacing and wide and full alignments, and the editor stylesheet makes the editor look like the front end, so what you write is what the page shows.

The Limits
The limits are the price of the restraint, and they are concrete.
- One layout. Header, footer, grid and product page have one arrangement each. The theme exposes its tokens as
--st-*custom properties and two filters for the blog sidebar and the currency switcher, and beyond that you’re writing a child theme. - No Customizer design controls. Logo, menus, widgets and the two related-items counts. Colors and fonts are CSS.
- No RTL stylesheet. A store in Arabic, Hebrew or Persian needs to generate one.
- Classic theme. Templates are PHP files. Block-based template editing in the Site Editor isn’t available, by design.
- Young software from 1 developer. 1.0.0 and 1.3.0 both shipped in October 2026, which is a fast pace and a short record. The GPL license and the GitHub source limit the downside if development stops, because the theme keeps working and anyone can fork it.
- Designed around one plugin. Without Stackless for WooCommerce it’s a clean, fast WooCommerce theme and nothing more. The parts that make it unusual, the styled modules and the currency switcher, need the plugin.
Setting It Up
Setup is short because there is little to configure:
- Download the zip from the theme page. The free checkout gives you a license key that never expires and works on unlimited sites. It’s only used for updates.
- Appearance → Themes → Add New → Upload Theme, choose the zip, activate.
- Appearance → Menus: assign a Primary menu and a Footer menu. Two levels are supported in the header.
- Appearance → Customize → Site Identity: add a logo. Under Stackless, set the related posts and products counts if you want something other than 6.
- Appearance → Widgets: fill the footer widget area, the optional Shop area above the product grid and the Blog sidebar.
If the store runs Stackless for WooCommerce, nothing else is needed. The module styles load when the plugin is active. If you’re on another theme today, switch on a staging copy first and check your product grid, because any grid-column or header tweaks you made in the old theme’s Customizer won’t carry over.
Final Remarks
The Stackless theme is the rare free theme that is better for what it leaves out. Measured on its demo, it loads 104 KB of its own CSS and JS, no web font and no icon font, and it styles the two WooCommerce screens most free themes ignore, the Cart and Checkout blocks, as carefully as the shop grid. For a store that runs Stackless for WooCommerce, it’s the obvious choice and there isn’t a close second, because nothing else knows what those modules render.
For a store on plain WooCommerce, the decision is about control. If you want to design in the Customizer, Astra, Kadence or Storefront give you the dials. If you want a store that looks finished on day 1 and you’re happy to change colors in CSS when the day comes, install this one. 4.7 out of 5, with the missing 0.3 being the RTL stylesheet and the design controls that a 1.x theme can still add.
Stackless theme
Pros
- Free, GPL, unlimited sites, with a license key that never expires
- System font stack, no web font request, one 4 KB script, about 100 KB of CSS on a full store
- Every WooCommerce screen, the Cart and Checkout blocks and every Stackless module styled out of the box
- Full-screen product search with live results, sticky product summary, live cart count
- theme.json palette, type scale and spacing, with editor styles that match the front end
Cons
- One layout: no Customizer controls for colors, header styles or product grid columns yet
- Classic theme, so no Site Editor; changes mean a child theme or CSS custom properties
- No RTL stylesheet yet
- First release was in October 2026 and it depends on one developer
Summary
A free, minimal classic theme that styles every WooCommerce screen, the Cart and Checkout blocks and every Stackless for WooCommerce module, with system fonts, no jQuery of its own and about 100 KB of CSS. Held back by its single layout and the absence of color and layout controls in the Customizer.
FAQs on the Stackless Theme
Is the Stackless theme free?
Yes. It’s free, licensed GPL-2.0-or-later, and the free checkout on gauravtiwari.org gives you a license key that never expires and activates on unlimited sites. The key is only used to deliver updates.
Does the Stackless theme need the Stackless for WooCommerce plugin?
No. It’s a complete WooCommerce theme on its own. The plugin adds the modules (wishlist, quotes, subscriptions, licenses, order bumps, currency switcher) that the theme has styles for, and that stylesheet loads only when the plugin is active.
Is it a block theme?
No. It’s a classic theme with PHP templates and full block editor support through theme.json and editor styles. There is no Site Editor template editing.
How fast is the Stackless theme?
On the demo store the theme’s own CSS and JS total 104 KB minified, with system fonts and inline SVG icons, so no font requests. The homepage loads in 35 requests and 660 KB in total, most of it WooCommerce’s own scripts and styles. The Cart and Checkout block pages are heavier because of WooCommerce’s React bundles.
Can I change the colors?
Yes, in CSS. The theme defines its colors as custom properties on the root element, so a child theme or a few lines in Additional CSS changes the accent, text and canvas colors. There are no color pickers in the Customizer yet.
Does it work with the WooCommerce Cart and Checkout blocks?
Yes, and that’s one of its strengths. Both blocks are styled to match the rest of the store, including the cart totals card and the checkout’s two-panel layout.
Does it support RTL languages?
Not yet. There is no RTL stylesheet in version 1.3.0.
Where do updates come from?
From the theme’s own update server through the license key, not from WordPress.org. Updates appear in the WordPress admin like any other theme update.
Tell Google you want more of this.
Add Gatilab as a preferred sourceOne tap, and this site shows up more often in your own Top Stories, AI Overviews and AI Mode. Remove it any time.