The CS-Cart to Next.js migration playbook I actually use
Eight years of freelance CS-Cart work distilled into the migration playbook I hand clients before day one. What to keep, what to strangle, what to burn.
CS-Cart is one of the workhorses of mid-market commerce. It is also one of the most misunderstood — every large CS-Cart deployment I have touched had years of custom add-ons written against the core, and every migration proposal I have reviewed underestimated the cost of preserving them.
Below is the migration playbook I actually use with clients. It is not a template. It is the shape of every successful CS-Cart to Next.js project I have shipped in the last four years.
Step 1 — Inventory the surface area
Before we talk stack, we count. I walk the codebase and list every add-on, every hook, every override, and every third-party integration. On the average project this produces a two-hundred-line spreadsheet. That spreadsheet is the scoping document — everything after this depends on it.
Step 2 — Classify each item
Every row falls into one of three buckets: keep, strangle, or retire. Keep means the CS-Cart back-office continues to own it (catalog, pricing engine, order management). Strangle means we build a Next.js replacement gradually while CS-Cart still serves live traffic. Retire means the functionality no longer earns its keep and gets removed with a migration script.
Step 3 — Design the API boundary
CS-Cart is now a headless service. That means every piece of data the storefront needs — products, categories, pricing tiers, promotions, customer accounts, cart state — must be reachable over a stable HTTP contract. The default CS-Cart REST API is a decent start but usually needs a thin BFF layer to normalise responses and cache aggressively.
Step 4 — Ship in reverse — top of funnel first
The category and product pages ship on Next.js before anything else. That gets the performance and SEO win in the client's board deck early, and every downstream step (search, cart, checkout) benefits from the same rendering path. Checkout itself stays on CS-Cart for as long as possible — the transactional surface area is where all the sharp edges live.
Step 5 — Guard the migration with metrics
Every migrated route gets a synthetic monitor comparing conversion rate and revenue-per-visit against the CS-Cart baseline for two weeks. If the new route underperforms, we rollback at the CDN without a deploy. This is the single most important step, and the one most agencies skip.
The uncomfortable truth
Most CS-Cart to Next.js migrations that fail are not failures of Next.js. They are failures of scope. The team wanted a rewrite and was sold a migration. The playbook above is what a migration actually looks like — incremental, measurable, and reversible at every step.