React 19 and Next.js 15 shipped within weeks of each other in late 2024, and together they represent the most significant change to the React frontend ecosystem since hooks in 2018. The React Compiler eliminates the need for manual memoisation. Next.js 15 introduces stable Partial Prerendering and async components. Understanding what changed — and what it means for your codebase — is essential for any team upgrading in 2025.
The React Compiler: What It Actually Does
The React Compiler (formerly React Forget) automatically memoises components, values, and callbacks that would previously require manual useMemo, useCallback, and React.memo calls. The compiler analyses component code and generates optimised output that prevents unnecessary re-renders without developer intervention.
The practical implication: removing hundreds of lines of manual memoisation boilerplate from existing codebases, and writing new components without performance micro-optimisation in mind. The React Compiler documentation includes a codemod for gradually adopting it in existing projects without a full rewrite.
Next.js 15: Partial Prerendering in Production
Partial Prerendering (PPR) is the most architecturally significant Next.js 15 feature. It allows a single route to combine a static shell (served instantly from CDN) with dynamic holes (streamed from the server). Previously, a route was either fully static or fully dynamic — PPR eliminates that binary choice.
The Next.js 15 documentation also stabilises the after() API for executing code after a response is sent (useful for analytics and logging), and improves the caching model that caused confusion in Next.js 14 — fetch requests no longer cache by default, matching developer expectations.
React 19 Server Components and Actions
React Server Components (RSC) are stable in React 19. Server Actions allow form submissions and mutations to call server-side functions directly from client components, eliminating explicit API route creation for many data mutation patterns. This changes the full-stack development model for teams using Next.js App Router.
The migration risk is real: existing class components, older React patterns, and third-party libraries that use internal React APIs may break. Run the React 19 upgrade guide codemod on your codebase before planning a migration timeline.
Should You Upgrade in 2025?
New projects: Start on React 19 + Next.js 15 — the new defaults are correct and the ecosystem has caught up
Existing Next.js 13/14 App Router projects: Upgrade to Next.js 15 — mostly backwards compatible with targeted breaking changes
Large existing Pages Router codebases: Plan migration in phases; App Router is the strategic direction but do not rush a full rewrite
React 18 class component codebases: Audit third-party dependencies first before upgrading
Our frontend engineering team at Cynaris helps organisations migrate and modernise React applications, including App Router adoption, performance audits, and React Compiler integration.