Next.js 15 has been officially stable since October 2024 and powers a very large share of production React applications in 2026. It introduced several meaningful changes — including breaking changes that require attention when migrating from Next.js 14 — and brought React 19 support, stable Turbopack for development, and a cleaner, more explicit caching model. For teams building or maintaining Next.js applications, understanding these changes is essential for production success.

At PapaSiddhi Technologies, our full-stack team builds and maintains Next.js applications for clients across the UK, Netherlands, and USA. This guide distils the new features, breaking changes, performance characteristics, and deployment considerations — and explains how Next.js 15 relates to the newer Next.js 16.
Next.js 15 Overview: What Changed
Next.js 15 focuses on three themes: a simpler, more predictable rendering and caching model; developer-experience improvements through stable Turbopack dev and better error messages; and alignment with React 19. For teams migrating from Next.js 14, two breaking changes require code updates: the move to asynchronous request APIs, and the change of caching defaults from cached to uncached. Both are straightforward to address, but they touch a significant amount of application code and must be handled before deployment.
For new projects, Next.js 15 is a clean choice: the App Router is mature, Server Components are well-established, and the tooling — including a smooth automated upgrade CLI — is solid.
Where Next.js 15 Sits in 2026
An important point of context: Next.js 15 is no longer the latest major version. Next.js 16 is now the current release line (this very site runs Next.js 16.2.x), and it builds directly on the foundations laid in 15 — the async request APIs, the explicit caching model, and Turbopack. Next.js 15 remains extremely widely deployed and fully viable in production, and because Next.js 16 is an evolution rather than a reinvention, mastering the Next.js 15 model is exactly the right preparation for upgrading. Everything in this guide applies to 15 and carries forward to 16, where Turbopack becomes the default and several Next.js 15 patterns are further refined.
App Router: The Standard for New Projects
The App Router — introduced in Next.js 13 and matured through 14 and 15 — is the recommended routing approach for new projects. The Pages Router is still supported for backward compatibility but receives no new features. In Next.js 15 the App Router provides Server Components by default (rendered on the server with zero client-side JavaScript), Client Components marked explicitly with use client, nested layouts that persist across navigation, route-level loading and error states via loading.tsx and error.tsx, and advanced patterns such as Parallel Routes and Intercepting Routes.
For teams still on the Pages Router, Next.js 15 is a good moment to plan migration: Server Components deliver better performance, collocated layouts improve code organisation, and App Router-only features become available.
Async Request APIs: The Critical Breaking Change
The most impactful breaking change in Next.js 15 is the shift to asynchronous request APIs. To let the server prepare as much as possible before a request arrives, the APIs that depend on request data — cookies, headers, draftMode, params, and searchParams — are now asynchronous and must be awaited.
In Next.js 14, a page component received params typed as { slug: string } and accessed slug synchronously. In Next.js 15, the type becomes Promise<{ slug: string }>: the component must be async and await params before use, as in const { slug } = await params. The same applies to searchParams and to generateMetadata. This affects every dynamic route and every generateMetadata that uses these values. The official codemod — npx @next/codemod@canary upgrade latest, or the dedicated next-async-request-api codemod — automates most of the migration, though unusual type patterns may need manual review. Our team has applied this systematically across multiple codebases.
Caching Changes: Uncached by Default
The second major breaking change is caching. Next.js 14 cached aggressively by default, which led to unexpected stale data. In Next.js 15, fetch requests, GET Route Handlers, and the Client Router Cache are no longer cached by default — caching is now opt-in.
To cache data in Next.js 15, add { cache: 'force-cache' } for indefinitely cached fetches, { next: { revalidate: 60 } } for ISR-style revalidation, or { next: { tags: ['my-tag'] } } with revalidateTag() for on-demand invalidation. The route-level export const revalidate = 60 pattern continues to work, and GET Route Handlers can opt back in with export const dynamic = 'force-static'. Applications that relied on implicit Next.js 14 caching must add these directives explicitly, but the new default is more predictable and prevents a whole class of stale-data bugs.
Turbopack for Development
Turbopack — the Rust-based bundler from Vercel — reached stable status for development in Next.js 15. Running next dev --turbopack delivers substantially faster iteration. On vercel.com, a large Next.js application, Vercel measured up to 76.7% faster local server startup, up to 96.3% faster code updates with Fast Refresh, and up to 45.8% faster initial route compile compared with Webpack. The chart above shows these official figures.
In Next.js 15, production builds still used Webpack by default — stable Turbopack production builds arrived in the later Next.js line (and are the default in Next.js 16). While on 15, the practical approach is to use Turbopack for fast local development and the proven Webpack pipeline (next build) for production.
Partial Prerendering (Experimental)
Partial Prerendering (PPR) is one of the most discussed Next.js features — but it is important to be accurate: in Next.js 15, PPR is experimental and adopted incrementally via the experimental.ppr config option, not a stable, on-by-default feature.
Conceptually, PPR combines static and dynamic rendering within a single route. The static shell (header, navigation, footer, and non-personalised content) is pre-rendered and served instantly, while dynamic sections stream in afterwards using React Suspense. The user sees content immediately, and personalised parts fill in as they resolve. For content-heavy pages with some personalisation — e-commerce, dashboards, marketing sites with dynamic widgets — this is a compelling architecture. Because it remains experimental in Next.js 15, test it thoroughly before depending on it in production, and expect its behaviour to keep maturing across releases. Enable it by setting experimental.ppr in next.config and wrapping dynamic sections in Suspense boundaries.
React 19, Deployment, and Production
Next.js 15 aligns with React 19: the App Router uses React 19, while the Pages Router can remain on React 18 for a gradual upgrade path. Next.js 15 also adds support for the experimental React Compiler, which reduces the need for manual useMemo and useCallback memoisation. The minimum Node.js version is 18.18, and Node.js 22 LTS (or 24) is recommended for new deployments.
On deployment, Vercel remains the lowest-friction option — it detects the Next.js version, configures edge caching, and handles ISR revalidation automatically. Self-hosted deployments on AWS, GCP, or Azure run the standard next start server; note that Next.js 15 now uses sharp automatically for image optimisation, so you no longer need to install it manually. Docker deployments should use multi-stage builds with output: 'standalone' for minimal image sizes. Other useful Next.js 15 additions include the stable instrumentation.js API for observability, the next/form component for enhanced forms, TypeScript support for next.config.ts, and more secure Server Actions with unguessable, non-deterministic endpoint IDs.
Our web development team at PapaSiddhi Technologies builds and maintains Next.js 15 and 16 applications for international clients. If you are migrating from an earlier version, upgrading from 15 to 16, or building something new, contact us to discuss your requirements and timeline.
Frequently Asked Questions
Common questions about Next.js 15 production guide 2026 answered by the PapaSiddhi expert team.