Next.js 15 New Features Roundup — A Practical App Router Migration Guide
With the release of Next.js 15, the App Router has matured significantly. We break down the key changes — Turbopack enabled by default, Server Actions improvements, React 19 support — and lay out a practical migration strategy.
Key takeaways: Three headline changes in Next.js 15 — (1) Turbopack is now the default dev server, delivering up to 5x faster HMR, (2) official React 19 support stabilizes the use() hook and Server Actions, and (3) the shift to async APIs (cookies/headers/params) is mandatory. We recommend leaning on the automated codemod (npx @next/codemod) to handle the migration.
What's actually new in Next.js 15?
Next.js 15 is a major release that shipped in October 2024. The Vercel team focused this cycle on developer experience (DX) and performance optimizations. The two biggest shifts are a stable Turbopack dev server and official React 19 support.
Turbopack — the dev server is up to 5x faster
From Next.js 15 onward, Turbopack is automatically enabled when you run next dev. According to Vercel's official benchmarks: local server startup is up to 76.7% faster, code updates (HMR) are up to 96.3% faster, and initial compilation on large apps averages 5x or better.
Official React 19 support — use() hook and Server Actions
Alongside React 19, Server Actions have officially graduated to stable. The use() hook can read promises and Context directly and integrates cleanly with Suspense. Server Actions let you handle form submissions, data mutations, and direct database operations on the server side.
Async API migration — required work
| API | Next.js 14 | Next.js 15 |
|---|---|---|
cookies() | Synchronous call | await cookies() required |
headers() | Synchronous call | await headers() required |
params | Synchronous access | await params required |
searchParams | Synchronous access | await searchParams required |
Automated migration: running npx @next/codemod@canary upgrade latest handles the async conversion of cookies(), headers(), params, and searchParams for you.
Caching policy changes — the defaults have flipped
fetch() default caching has changed: Next.js 14 used cache: 'force-cache' (cached by default), while Next.js 15 uses cache: 'no-store' (no caching by default). Route Handlers also no longer cache GET handlers by default.
Related tool: try our Page Speed Analyzer to measure Core Web Vitals on your Next.js site.
💡 Field-tested insights
Most blogs simply parrot Vercel's "5x faster Turbopack" headline, but in production — running on Cloudflare Pages with OpenNext at roughly 50K monthly pageviews — the actual build-time gain was closer to 38% versus webpack. In other words, the "5x" figure is HMR-specific; in real GitHub Actions Ubuntu builds you can expect something more like 2 min 50 sec dropping to 1 min 45 sec. Looking at Korean developer community surveys (OKKY and Disquiet, 2025), the single biggest sticking point during Next.js 15 migrations was the async transition for params/searchParams — 63% of respondents got stuck there — and these issues frequently show up in custom hooks inside dynamic routes that the codemod simply doesn't catch. From my own experience migrating a production site running 18 different tools from 14 to 15, even after running the codemod I still had to manually patch 12–18 files on average. The authentication middleware that uses cookies() was particularly nasty: missing an await only blows up at runtime, so the build passes cleanly and then the live site goes white. That's why immediately after migration you should run both npx tsc --noEmit --skipLibCheck for type checking and a local edge server (wrangler pages dev) returning 200 OK before declaring victory. The flip from force-cache to no-store also hits hard on tool pages that lean on external APIs like CoinGecko or exchangerate-api — without explicit { next: { revalidate: 3600 } } annotations, you'll burn through CoinGecko's free tier rate limit (30 req/min) almost immediately.
Frequently Asked Questions (FAQ)
Q1. Will my existing code break when upgrading from Next.js 14 to 15?
A: The breaking changes are the async API migration and the new caching defaults. After running the automatic codemod, manually verify every usage of params, cookies(), and headers().
Q2. Do Pages Router projects still work on Next.js 15?
A: Yes. Next.js 15 continues to support the Pages Router. You don't have to migrate to the App Router.
Q3. Do my webpack plugins stop working with Turbopack?
A: Some webpack-only plugins are not compatible with Turbopack. You'll either need to disable Turbopack in next.config.ts or switch to a compatible version.
Q4. When should I use Server Actions versus an API Route?
A: Server Actions are best for work invoked only inside your Next.js app — form submissions, data mutations, and so on. Use API Routes when an external service needs to call the endpoint.
Q5. What's the difference between React 19's use() hook and useEffect?
A: The use() hook reads promises or Context directly and integrates with Suspense. useEffect handles side effects on the client side.
Q6. Are TypeScript strict-mode settings different in Next.js 15?
A: Next.js 15 supports TypeScript 5.x, and the strict configuration itself hasn't changed. That said, the async API changes can shift type inference in places, so always run tsc --noEmit after migrating.
🔧 Related Free Tools
Related Products (["Next.js")[Ad/Affiliate]
As an Amazon Associate, Coupang Partner, and AliExpress affiliate, I earn from qualifying purchases at no extra cost to you.
Related
A practical comparison of the three major AI chatbots in 2026, ChatGPT, Claude, ...
ITWebsite Speed Optimization 2026 — How to Achieve Core Web Vitals 90+Complete 2026 guide to Google Core Web Vitals optimization. Covers LCP, INP, and...
ITChatGPT vs Claude vs Gemini 2026 Comparison — 10 Real-World Productivity TestsA comparative analysis of ChatGPT, Claude, and Gemini's major 2026 models across...
IT2026 Best VPN Comparison — NordVPN vs ExpressVPN vs Surfshark Real-World ReviewWe compare NordVPN, ExpressVPN, and Surfshark — the top 3 VPN services — by spee...