Next.js 16 shipped in autumn 2025 with a new Rust compiler, stable Partial Prerendering and native Server Actions with streaming form support. We migrated three production projects and we'll share the experience without marketing gloss.
What actually got better
- Cold build time dropped by 35–60% thanks to Turbopack on by default
- Hot reload in a 1,200-file project responds in 200–400 ms
- PPR ships a static shell instantly and streams dynamic regions
- Server Actions with useActionState remove 80% of form boilerplate
What broke
- 01next/image with external SVGs — now requires an explicit whitelist via remotePatterns and the dangerouslyAllowSVG flag
- 02Custom server.js is no longer supported — refactor to middleware or custom route handlers
- 03Older @vercel/og versions are incompatible — bump to 0.7+
- 04react-i18next inside Server Components needs a different approach — we moved to a custom LanguageProvider
What we do differently on new projects
First — we use PPR from day one. It forces you to think of data as two streams: a static shell and dynamic widgets. The code structure gets cleaner and Lighthouse scores climb 8–12 points.
Second — we move mutations to Server Actions and keep API routes only for external integrations (webhooks, payment-gateway callbacks).
Next.js 16 is the first release where we see no strong reason to stay on 15. Performance and DX outweigh migration cost.
A 1–2 day migration plan
- 01Upgrade Node to 22 LTS
- 02Run the codemod: npx @next/codemod@latest upgrade
- 03Fix breaking changes in image, middleware and fetch caching
- 04Run E2E tests and Lighthouse — capture a before/after baseline
- 05Deploy to staging with real traffic for 24 hours
Facing a similar challenge in your company?
Tell us about the task — we'll get back within one business day with a call agenda.
Start a project →