Reading view

We turned our sage/acorn theme into a shared upstream for multiple projects

we had a long term client using wordpress and woo, who didn’t want to move to shopify or magento. The store already had custom integrations with local CRM and accounting platforms, so changing the commerce platform would have meant rebuilding a lot of working infrastructure.

The main problems were performance, reliability and years of wp customisations becoming increasingly difficult to maintain. I wanted to see whether we could solve this with a more structured theme architecture based on roots. It worked well enough that we gradually turned it into a shared upstream for our other woo projects.

The current stack:

  • Roots Acorn 6 with Sage architecture and Blade templates
  • Vite Tailwind CSS v4 with CSS custom-property design tokens
  • Alpine.js GSAP, ScrollTrigger and Lenis Swup for page transitions
  • WooCommerce

The shared platform contains the basic design system, woo templates and functionality, universal gutenberg blocks, ajax catalog filters, side cart, search and build tooling. Each client has a separate private fork containing its branding, design tokens, navigation and client-specific blocks. We then pull platform improvements from the shared upstream.

There are still rough edges. Gutenberg blocks and parts of the editing experience need more work, but the frontend performance and level of control have been encouraging so far.

A production example using it: roxder.com
github: https://github.com/antoniaksander/sobe-theme

The part I’m still evaluating is whether the shared-upstream/client-fork model. Has anyone here maintained a similar setup across multiple WooCommerce projects? Looking for people to discuss and test this idea.

Ten years ago sage and blade often felt like overkill for wp and woo. But with AI assisted development, I’m finding the additional structure much easier to justify—but I’m interested to hear where others think of this approach what would be the title be?

submitted by /u/antoniaksander
[link] [comments]
  •  
❌