# Next.js 15. What's New, What Changed, Breaking Changes.

Source: https://ordergroup.co/blog/nextjs-15-breaking-changes/
Last updated: 2024-09-12

> Next.js has been updated to version 15, and it brings features we were all waiting for.

![Next.js 15. What's New, What Changed, Breaking Changes.](https://ordergroup.co/media/images/Next_mn7ik9r.js_15_desktop.width-2850.format-webp.webp)

Next.js 15. What's New, What Changed, Breaking Changes.

[Aleksander Jess](https://ordergroup.co/authors/aleksander-jess/), Former Copywriter |

September 12, 2024

| 4 min read

Table of Contents

The brief
Intro
What's New
Breaking Changes
Conclusion

The brief

Next.js 15 is an evolution rather than a revolution. It moves to React 19 and brings the React Compiler, incremental adoption of partial prerendering, the experimental after() function, and caching that is now opt-in instead of on by default. We also list the most important breaking changes.

Intro

*Special thanks to* [*Łukasz Gajownik*](https://ordergroup.co/resources/video/reactjs-ai/)*for helping out with this blog post.*Next.js is the most popular full-stack React framework out there, and it's getting its fifteenth major update. It won't be as revolutionary as the previous one, which introduced React Server Components among others, but it will bring many goodies designed to make working with web apps easier and more pleasant. Even after fifteen updates, the base rules haven't changed, and the framework still stays true to them: ["zero setup and using the file system as an API; only using JavaScript, with everything acting as a function; automatic server-rendering and code-splitting; data-fetching is up to the developer; anticipation is the key to performance; and simple deployment."](https://web.archive.org/web/20200809001247/https://www.infoworld.com/article/3136337/next-step-after-nodejs-framework-for-universal-javascript-apps.html)

What's New

React 19React 19 (see [the documentation for version 19 here](https://19.react.dev/)) is perhaps the most significant change this time around. The new version brings some changes that you might or might not have heard about, including:[Actions](https://19.react.dev/blog/2024/04/25/react-19#actions)[New hook: useActionState](https://19.react.dev/blog/2024/04/25/react-19#new-hook-useactionstate)[Form Actions](https://19.react.dev/blog/2024/04/25/react-19#form-actions)[New hook: useFormStatus](https://19.react.dev/blog/2024/04/25/react-19#new-hook-useformstatus)[New hook: useOptimistic](https://19.react.dev/blog/2024/04/25/react-19#new-hook-optimistic-updates)[Server Components](https://19.react.dev/blog/2024/04/25/react-19#server-components)If you have a weird feeling you have seen some of these before, that's because you have, quite possibly in Next 14. This time around, Meta is bringing support for these features to a wider audience, such as non-Next.js users.One underrated change is full support for custom elements. React previously struggled with Web Components, but that's in the past now, as Meta's JS library has full support.React CompilerCompiling framework/library code isn't a new concept. Svelte, Vue, Solid, and others have done it for a long time. The React team picked up on that some time ago and first introduced the compiler during a React talk ["React without memo"](https://www.youtube.com/watch?v=lGEMwh32soc) in 2021. About 3 years later, we can finally give the compiler a shot and offload a lot of busy work, including memoization. Letting the compiler perform optimizations should also make our code simpler, and our apps may turn out faster. If you want to take a quick peek at the before and after code, you can jump in and have fun with the [Compiler Playground.](https://playground.react.dev/)React 19 Breaking Changes[Errors in render are not re-thrown](https://19.react.dev/blog/2024/04/25/react-19-upgrade-guide#errors-in-render-are-not-re-thrown)[Removed: propTypes and defaultProps for functions](https://19.react.dev/blog/2024/04/25/react-19-upgrade-guide#removed-proptypes-and-defaultprops)[Removed: Module pattern factories](https://19.react.dev/blog/2024/04/25/react-19-upgrade-guide#removed-module-pattern-factories)For a full list of breaking changes, please refer to the blog post at [19.react.dev/blog](https://19.react.dev/blog/2024/04/25/react-19-upgrade-guide#breaking-changes).Incremental Adoption of Partial Prerendering (Experimental)[Partial prerendering isn't an entirely new feature - it was introduced in Next.js 14.](https://nextjs.org/blog/next-14#partial-prerendering-preview) The novelty is that the feature can now be adopted incrementally. If you add the "experimental_ppr" route config option to your page, you opt the whole page into Partial Prerendering.Why would you want to do it? Partial prerendering lets you combine static content with dynamic content. Prerendering only part of the page is a compromise between keeping data as fresh as possible on one side, and faster websites, reduced server load, and SEO on the other."next/after" (Experimental)The new module allows you to execute code after a response. Previously, if you deployed your site to a serverless host, running a function right after loading wasn't straightforward. [Quoting the blog](https://nextjs.org/blog/next-15-rc#executing-code-after-a-response-with-nextafter-experimental), "[d]eferring the work after responding to the user poses a challenge because serverless functions stop computation immediately after the response is closed."The Next.js team solved this issue by introducing "after()". Why would you need it? It's useful for "logging, analytics, and other external system synchronization".Caching ChangesPreviously, Next.js App Router had highly opinionated caching defaults. Caching of "fetch" requests, client route changes, and GET route handler requests was opt-out: they were all cached by default. Starting from this release, caching is opt-in instead.In other words, in fetch ["no-store is used by default if a cache option is not provided. This means fetch requests will not be cached by default](https://nextjs.org/blog/next-15-rc#fetch-requests-are-no-longer-cached-by-default)". GET route handlers will not be cached unless you ["opt into caching using a static route config option such as export dynamic = 'force-static'."](https://nextjs.org/blog/next-15-rc#get-route-handlers-are-no-longer-cached-by-default) Lastly, to opt into router caching, [set the route config option of "staleTime" to your preferred values for both dynamic and static pages.](https://nextjs.org/docs/app/api-reference/next-config-js/staleTimes)For web app developers, this means you will have to set cache times consciously on your own, which in theory gives you more control over caching.

Breaking Changes

Next.js 15 Breaking ChangesAs with almost any major update, there are breaking changes. The most important ones are:**Minimum React version is now 19 RC**Removed squoosh in favor of sharp as an optional dependencyChanged default "Content-Disposition" to "attachment"Enable swcMinify, missingSuspenseWithCSRBailout, and outputFileTracing behavior by default and remove deprecated options.[For the full list, refer to the list here.](https://nextjs.org/blog/next-15-rc#other-changes)

Conclusion

The Next.js 15 update is an evolution, not a revolution. This major update brings many changes that will help with SEO. We can optimize the client bundle, opt into partial prerendering page by page, and minification with SWC is enabled by default. For a company that develops big web apps, the introduction of the compiler is perhaps the most important change. Automatic memoization will make it much easier to create efficient apps.If you want to talk about building a custom web app in Next.js, [contact us by clicking this link.](https://ordergroup.co/contact-us/)

Let's work together and shape the future
[Contact us](https://ordergroup.co/estimate-project/?utm_source=blog&utm_medium=referral&utm_campaign=content_marketing)

Explore this topic further

Domain hub
[Software Development](https://ordergroup.co/services/software-development/)

Service
[Web Development Services](https://ordergroup.co/services/software-development/web-app-development/)

Case study
[Zeronest - Solar Panel Monitoring App with Automated Battery Management](https://ordergroup.co/case-studies/zeronest-solar-panel-monitoring-app/)

More articles about Software engineering

[Software engineering
|

November 13, 2024 |

6 min read

Comparing Ionic, NativeScript & React Native](https://ordergroup.co/blog/ionic-vs-nativescript-vs-react-native/)
[Software engineering
|

October 30, 2023 |

4 min read

How Do Electrical Engineers Use Python?](https://ordergroup.co/blog/python-electrical-engineering/)
[Software engineering
|

November 18, 2024 |

5 min read

Backend Development in Python. When to Use Django?](https://ordergroup.co/blog/django-backend-development/)

[All articles about Software engineering](https://ordergroup.co/blog/engineering/)
