Guides · May 4, 2023
How Agencies Should Standardize on a Starter Stack
Agencies that standardize on one Next.js + headless commerce starter ship faster and bill more predictably than agencies that rebuild the stack per client. Here's how to evaluate and lock in a starter stack for real.
By Polo Themes
The agencies that scale past a handful of concurrent client builds are almost never the ones with the most talented individual developers — they're the ones that stopped re-deciding their stack every project. Standardizing on a single Next.js + headless commerce starter, with a documented set of conventions everyone on the team follows, turns each new client engagement into a configuration exercise instead of a from-scratch architecture debate. This guide covers how to actually pick that starter, what to standardize versus leave flexible, and how to roll it out without a painful migration for projects already in flight.
Why "Rebuild It Every Time" Quietly Bleeds Agencies Dry
Most agencies don't consciously choose to rebuild their stack for every client — it happens by drift. A senior developer picks a data-fetching pattern they like for client A. A different developer, on client B six months later, prefers a different state-management approach and a different folder structure. By the time the agency has ten client codebases, no two look alike, and every new hire has to relearn the stack from scratch on every project they're staffed onto. Estimating becomes guesswork because nobody has a stable baseline to estimate against — every project theoretically starts from zero even though 80% of the code (auth scaffolding, cart logic, checkout flow, layout primitives) is functionally the same work done slightly differently each time.
The financial cost shows up in three places: proposal accuracy (agencies without a standard stack routinely underbid discovery and setup because they forget how much time boilerplate actually takes), staffing flexibility (developers can't rotate between projects without a ramp-up period), and knowledge transfer (when the one developer who built a client's custom cart logic leaves, that client's project becomes a maintenance liability). None of this shows up on an invoice. It shows up in margin.
What "Standardizing" Actually Means (and Doesn't)
Standardizing on a starter stack does not mean every client site looks the same, or that the agency loses the ability to build custom features. It means the agency fixes the *load-bearing decisions* — framework version, rendering strategy, commerce backend integration pattern, styling system, component conventions, auth approach — once, and re-derives them per client only when a client's requirements genuinely demand it. Visual design, custom page types, one-off integrations, and business logic stay fully flexible on top of that fixed base.
Think of it the way a construction company thinks about a floor plan versus finish materials. The floor plan — where the load-bearing walls are, where plumbing runs — gets fixed early because changing it later is expensive. The finish materials — paint, fixtures, flooring — stay flexible because changing them is cheap and expected to vary per client. A starter stack is the floor plan. The storefront design, brand system, and custom features are the finish materials.
The Decisions Worth Fixing Across Every Client Project
- Framework and rendering strategy: Next.js App Router with a deliberate, documented split of which routes are static, which are server-rendered per request, and which use incremental static regeneration. This single decision eliminates the most common source of "why is this page slow" debugging.
- Commerce backend integration pattern: a single, well-tested approach for talking to the headless commerce API — how product data is fetched, how cart mutations are handled, how webhooks sync inventory and order state back. Rebuilding this per client is the single biggest source of wasted setup time.
- Component and design-token architecture: a base component library and a token layer (spacing, color roles, typography scale) that every client theme overrides, rather than every client starting from unstyled primitives.
- Auth and session handling: one pattern for customer accounts, guest checkout, and session persistence, adapted per client rather than reinvented.
- Environment and deployment conventions: consistent environment variable naming, a standard CI pipeline, and a shared deployment runbook so any developer can deploy any client project without a separate mental model per codebase.
- Testing and quality gates: a baseline of type-checking, lint rules, and smoke tests that ship with the starter so quality isn't renegotiated project by project.
What to Deliberately Leave Flexible
Resist the urge to standardize visual design or over-constrain custom features — that's where client differentiation actually lives, and agencies that lock down too much end up with client sites that all look the same, which is its own competitive liability. Leave flexible: page-level layout and visual design, brand-specific component variants, custom landing page types, promotional and merchandising logic, and any integration specific to a single client's existing tools (a particular ERP, a particular loyalty program). The starter stack should make these things easy to build on top of, not dictate what they look like.
A Practical Evaluation Framework for Choosing a Starter
When evaluating a candidate Next.js + headless commerce starter — whether building one in-house or adopting a commercial one — score it against a short list of criteria rather than judging on first impression or however clean the demo looks.
- Rendering strategy clarity: does the starter make an explicit, documented choice about which pages are static versus server-rendered, or does it leave that decision implicit and inconsistent across routes?
- Commerce backend coupling: how tightly is the storefront code coupled to one specific commerce backend's API shape? A starter that abstracts cart and product-fetching behind a clean interface is far easier to adapt if the agency ever needs to swap backends for a specific client.
- Theming depth: can a new client's brand be applied through tokens and configuration, or does every rebrand require touching component internals?
- Onboarding time for a new developer: how long does it take an unfamiliar developer to become productive in the codebase? This is the single best proxy for whether the conventions are actually documented and consistent, versus tribal knowledge.
- Upgrade path: does the starter have a track record of being kept current with the underlying framework's major versions, or does it calcify the moment it's forked per client?
- Test and type coverage out of the box: does the starter ship with baseline type safety and smoke tests, or does every client project start from zero on quality tooling?
Rolling Out a Standard Without Disrupting Projects in Flight
Agencies rarely get the luxury of standardizing on a blank slate — there are usually several client projects already live on inconsistent stacks. The practical rollout sequence is: freeze the standard for all *new* engagements first, write down the conventions so they survive beyond the person who invented them, and treat existing projects as a separate, deliberately slower migration track rather than something to retrofit under deadline pressure.
- Document the standard before the first new project uses it — a starter with no written conventions just becomes "however the last developer who touched it did things," which defeats the purpose.
- Pilot the standard on one new client engagement before mandating it agency-wide, and treat that pilot as the reference implementation new hires get pointed to.
- Don't force-migrate live client projects onto the new standard on a deadline — schedule the migration as part of a planned redesign or major feature request for that client, when the cost is already being absorbed.
- Assign one person (not necessarily the most senior developer, but the most consistent one) as the standard's maintainer, responsible for reviewing proposed changes to the conventions.
- Revisit the standard on a fixed cadence — quarterly is reasonable — rather than continuously, so the team isn't relearning conventions mid-project.
Where This Is Headed: Next.js and Headless Commerce Starters as Category
The reason this decision matters more now than it did a few years ago is that Next.js plus a headless commerce backend has become the default serious option for agencies building storefronts that need both strong performance and design flexibility that a locked-down platform theme can't offer. That combination is powerful, but it also means the ecosystem of "starters" varies wildly in quality — from thin boilerplates that barely wire up a product page, to genuinely production-grade starting points with real commerce logic, tested checkout flows, and sane defaults for rendering strategy.
Polo Themes has built its Shopify and Figma theme lines around exactly this kind of "get the load-bearing decisions right once" philosophy — see the Optics, Medical, and Electronix Shopify themes, or the matching Figma kits design teams use to prototype before a build. We're now applying that same approach to production-grade Next.js and headless commerce starters, aimed specifically at agencies that want the standardization benefits described in this guide without building the base stack from scratch in-house. That line isn't available to buy yet, but it's a committed direction for where Polo Themes is headed, and agencies evaluating their own starter strategy today should expect more credible options like it to reach the market over the next development cycle.
In the meantime, the evaluation framework in this guide holds regardless of which starter an agency ultimately adopts or builds in-house — fix the load-bearing decisions, document them, leave design and custom features flexible, and roll out changes on a deliberate cadence rather than reactively. Agencies that treat their starter stack as a durable internal product, rather than a per-project afterthought, consistently quote more accurately and staff more flexibly than agencies that don't.
Frequently Asked Questions
Should a small agency bother standardizing, or is this only worth it at scale?
Even a two- or three-person agency benefits, because the real payoff is estimating accuracy and knowledge continuity, not just staffing flexibility. A documented starter stack means a new project's setup phase is predictable rather than re-litigated, which matters just as much for a small team's margins as a large one's.
What if different clients need genuinely different commerce backends?
This is exactly why commerce backend coupling matters in the evaluation framework above. A well-built starter abstracts product fetching and cart logic behind an internal interface, so swapping the backend for one client is a contained change rather than a full rewrite. If the agency finds itself rewriting the entire storefront every time a client's backend differs, that's a sign the starter's abstraction layer needs work, not a reason to abandon standardization.
How often should the standard stack itself be upgraded?
Treat major framework version bumps and dependency upgrades as a planned, scheduled task — quarterly is a reasonable default — rather than something done ad hoc inside a client project's timeline. Client work should consume a stable, already-upgraded starter, not become the testing ground for an upgrade under deadline pressure.
Is it worth buying a commercial starter versus building one in-house?
It depends on whether the agency's differentiation is in the base stack or in what's built on top of it. Most agencies differentiate on design, client relationships, and custom feature work — not on cart logic or auth scaffolding — which makes a well-vetted commercial starter a reasonable buy-versus-build decision, provided it passes the evaluation criteria above, particularly around theming depth and commerce backend coupling.