Web

Next.js 15 and Server Components: Production Lessons After 6 Months

We rewrote a large e-commerce to Next.js 15 with App Router. Here's an honest account - what works great, what hurts, and what we regret.


Six months ago we decided to rewrite the frontend of a large e-commerce (120k products, 50k daily users) from Next.js 12 Pages Router to Next.js 15 with App Router and Server Components. Here's brutal honesty about how it went.

3 months delay from original plan

Why did we rewrite at all?

Pages Router worked, but the list of problems was growing:

  • Frontend bundle size exceeded 400KB gzipped
  • Hydration errors with dynamic components
  • SEO required more and more workarounds
  • Team complained about DX - too much boilerplate

Server Components promised to solve most of these problems. We bought the vision.

What went well

1. Performance - the difference is real

-67% JavaScript sent to client
2.1s → 0.8s Time to Interactive
+23% mobile conversion

Product pages load instantly now. Server Components render on the server and stream to the browser - users see content almost immediately.

2. Data fetching became simple

No more useEffect + useState + loading states for every fetch. Async/await directly in component is a game changer.

3. SEO out of the box

The Metadata API in App Router is brilliant. Dynamic meta tags, Open Graph, Twitter Cards - everything works without additional libraries.

What hurt (and still hurts)

1. Team learning curve

Thinking in Server vs Client Components requires remodeling habits. For the first month, half of PRs came back with comments "this should be a Server Component" or "you need 'use client' here".

2. Cache invalidation is hell

Next.js caches aggressively. Too aggressively. We spent two weeks debugging a case where product updates wouldn't show for an hour despite revalidatePath().

3. Third-party libraries

Half our favorite libraries weren't ready for Server Components. Formik? Client only. React Query? Requires provider in client component.

Was it worth it?

Yes. Despite the pain - yes. Performance gains are real and translated to better business results. The team after passing the learning curve is more productive. Code is cleaner.

Planning a migration to Next.js 15?

We've been through it. We can help plan a staged migration and avoid our mistakes.

Category: Web
Share:

Anna Majewska

Halo Soft Expert

Need Help With a Similar Project?

Contact us - we'd love to help!

Related Articles