WooCommerce storefront theme
Your pages are
already made.
WooCommerce rebuilds a category page from scratch every single time somebody opens it. FastestWoo lets a CDN keep the finished page and hand it straight over, so the shop feels instant and your server barely notices the traffic.
Download 0.1.0 See how it works
Free, GPLv2. Needs WordPress 6.4, PHP 8.0 and WooCommerce 8.0. No licence key and no paid tier.
- 1The browser asks the nearest CDN server
- 2The response carries a cookie, so the CDN will not cache it
- 3The request travels on to your own server
- 4 WordPress and WooCommerce build the page measured at ~260 ms
- 5The finished page travels all the way back
Five steps, repeated for every visitor, every time.
- 1The browser asks the nearest CDN server
- 2That server already has the finished page, and returns it
- 3Cart, wishlist and sign-in state load a moment later, without cookies
The page itself never reaches your server. Only the personal details do, and only once it is already on screen.
Speed
Where the speed comes from
WC_Cart hooks maybe_set_cart_cookies() to the wp
action unconditionally, whether or not anything on the page actually touched the cart.
Browse a category archive as an anonymous visitor and WooCommerce still hands you a
session. Your CDN sees that cookie and steps aside, which is the honest reason a stock
shop serves its catalog from PHP.
FastestWoo renders catalog pages identically for every anonymous visitor. No nonces in
the markup, no per-visitor personalisation, nothing that varies the response. The cart
moves into a server-side store addressed by a 128-bit token the browser keeps in
localStorage, so the page can be byte-for-byte the same for everyone and
cached at the edge.
Per-visitor state then loads after the cached HTML has painted. The mini-cart count is painted immediately from the last known value in local storage, before any script runs, and reconciled with the server a moment later. Adding to cart updates the count before the request is even sent.
Your shop
What this means if you run the shop
The short version, with no HTTP headers in it.
Pages open straight away
A cached page is already built and stored close to your shopper. It arrives without your hosting having to put it together first, and that assembly is most of the wait people notice on a slow shop.
Busy days stop being frightening
A sale, a newsletter, a post that does well. Most of that traffic is answered by the CDN and never reaches your server, so the shop behaves the same at ten visitors and at ten thousand.
You keep the WooCommerce you have
Same products, same orders, same checkout, same admin screens. This is a theme, so switching to it does not rebuild your shop or move your data anywhere.
One theme instead of a pile of plugins
Critical CSS, image handling, script trimming, cart, account and cache headers are all already part of the theme. Less to install, less to configure, and less that can quietly break after an update.
None of it needs setting up. Activate the theme and the caching behaviour is already on. If you run Cloudflare, the theme can add the cache rule for you from its own settings page.
Payload
What the browser downloads
Built files at 0.1.0, measured with gzip -9.
| File | Raw | Gzip | Loading |
|---|---|---|---|
style-main.css | 50.2 kB | 8.8 kB | Non-blocking |
main.js | 39.2 kB | 11.3 kB | Deferred |
Above-the-fold CSS is inlined per template and never costs a request. It travels inside the HTML, so it is compressed along with it.
Inlined critical CSS
Left out of every front-end request
wc-cart-fragmentspolls admin-ajax, starts a sessionwc-add-to-cartthe theme handles this itselfwc-blocks-styleno block storefront herewoocommercewc-single-productzoom, lightbox, slidersourcebuster-jswc-order-attributionmoved server-sidewc-js-cookiewc-jquery-blockuidependencies of the above
WooCommerce's zoom, lightbox and slider each load their own library on every product page. The theme opts out and renders a plain gallery, which is a deliberate trade.
Measured
What we measured
Origin render time, with the CDN bypassed.
Profiling the live box found no slow query to fix. Every page ran 3 to 4 SQL statements,
with Redis absorbing the rest. The remaining time was PHP spread over roughly 33,000 hook
fires, including two subsystems this storefront renders nothing from: WooCommerce Blocks
registering 165 block types, and wp_print_font_faces spending 12.2 ms to emit
zero bytes. Both are now skipped on plain front-end requests.
- /shop/−17%50 ms saved
- Product−16%51 ms saved
- Front page−18%42 ms saved
- Category−18%42 ms saved
Method. Interleaved A/B on the deployed site, median of 20 requests per
side, origin-local curl with the cache busted. HTML verified byte-identical on
10 of 11 page types; the 11th differs only where WooCommerce orders related products at
random.
Not published yet
Lighthouse scores, field Core Web Vitals, and a like-for-like comparison against a stock theme on identical hardware. Those numbers are missing because they have not been collected honestly yet, and a benchmark you cannot reproduce is worth nothing.
Design
Make it look like your shop
Appearance › Customize. No page builder needed.
Colour presets
- Default
- Dark
- Warm
- Mono
- Vibrant
Pick one, then override any of eight colours on their own: text, background, accent, border, header background, card surface, muted text and the sale badge. Leave an override empty and it is worked out from the ones you did set, so a dark scheme still gets readable cards and hints.
Everything else in the Customizer
- Typography
- 24 Google Fonts, or the system font. Whichever you choose is downloaded to your own server when you publish, so a visitor never requests anything from Google.
- Homepage
- Four ready-made layouts: Minimal, Showcase, Classic and Editorial.
- Header
- Logo always visible, hidden, or scaled in once the header goes sticky. A category mega menu built from your own product tree, with an optional "By Brand" entry. Instant search on or off.
- Shop pages
- Grid or list as the default view, products per page, which filters appear, and which sort options are offered.
- Layout
- Content width and logo width in pixels, plus your own footer credit line.
- Widgets
- Nine areas: Top Bar, Sticky Header, Non-Sticky Header, Footer Top, three footer columns and two footer bottom slots.
- Social
- Seven optional footer links: X, Instagram, Facebook, YouTube, TikTok, Pinterest and LinkedIn.
Screenshots coming
Real storefront captures of each homepage layout and colour preset will live here once the demo shop is stocked.
Scope
What it deliberately does not do
- It is not a full-page cache plugin, and does not want one
- You do not need to add a caching plugin alongside it. The caching is handed to your CDN, and the theme already does its own half of the job: no cookies on catalog pages, correct cache headers, critical CSS inlined and the unused scripts left out. Your site stays server-rendered classic WordPress and WooCommerce, and the only thing removed is the cookie that was stopping a CDN from helping.
- It does not decouple your front end
- No headless build step and no separate deployment. Classic PHP templates, so child themes and normal template overrides work the way you expect.
- No product image zoom, lightbox or slider
- Each one loads its own JavaScript library on every product page. That is real weight against the reason the theme exists.
- No third-party font requests
- The Customizer offers a curated set of Google Fonts and downloads them to your server on save, so nothing is fetched from Google when a page loads.
- Nothing to install beyond the theme itself
- Cart, account, search and filtering ship inside the theme, behind a cookie-free REST API. One thing to activate, one thing to update.
FAQ
Questions people actually ask
Will my prices go stale in the cache?
No. Changing a product's price, stock or status purges that product's URL along with the shop and category archives it appears on. Pages also carry a one-hour shared-cache lifetime as a backstop.
Is the cart token safe if it is not a cookie?
The token is 128 bits of random_bytes() entropy and is the only thing
addressing a cart, so guessing one is not practical. It is never written into the
cached HTML: the browser mints it and stores it locally, which is what keeps the
cached page identical for every visitor.
Can I use FastestWoo as a parent theme?
Yes. It is a classic PHP template theme, so child themes and standard template overrides work as expected.
What if I do not want to use Cloudflare?
The theme sets standard Cache-Control headers, which Varnish, Fastly,
nginx proxy_cache and browser caches all honour without any
vendor-specific setup. The Cloudflare integration is a convenience for the one thing
headers cannot do on that platform: Cloudflare will not cache HTML on headers alone,
it needs a cache rule.
Install
Three steps, and the third is optional
Upload the theme to
wp-content/themes/fastestwooand activate it.Install and activate WooCommerce, 8.0 or newer.
Point a CDN at it. Cloudflare will not cache HTML on headers alone, so it needs a cache rule, and the theme can create that for you. Varnish, Fastly and nginx
proxy_cachehonour the standardCache-Controlheaders with no vendor setup.
GPLv2 or later, with source on GitHub. Version 0.1.0 is an early release and is labelled as one.