Let’s jump right in!
1. Caching
fetch
Requests are no longer cached by default!
fetch('https://...', { cache: 'force-cache' | 'no-store' });
no-store
– fetch a resource from a remote server on every request and do not update the cacheforce-cache
– fetch a resource from the cache (if it exists) or a remote server and update the cache
In Next.js 14, force-cache
was used by default, but in Next.js 15 no-store
is used by default
2. Partial Pre-Rendering
Partial Pre-Rendering (PPR) is a special feature introduced in Next.js 14 that allows static and dynamic page content to coexist flawlessly. But in Next.js 15, incremental adoption of PPR is finally available! Partial Prerendering – an experimental feature that allows you to render a route with a static loading shell, while keeping some parts dynamic. In other words, you can isolate the dynamic parts of a route. For example: You can learn more about Partial Pre-Rendering, check out this article3. next/after
next/after
is a brand new API that allows you schedule work after a response has finished streaming. In other words, enabling secondary tasks to run without blocking the primary response.
This feature is experimental and if you want use it you must add experimental.after
to next.config.js
file:
const nextConfig = {
experimental: {
after: true,
},
};
module.exports = nextConfig;
import { unstable_after as after } from 'next/server';
import { log } from '@/app/utils';
export default function Layout({ children }) {
// Secondary task
after(() => {
log();
});
// Primary task
return <>{children}</>;
}
4. React 19 Support
Next.js 15 RC now supports React 19 RC, which includes new features for both the client and server like Actions.Other changes
Optimizing bundling of external packagesBundling external packages can improve the cold start performance of your application. In the App Router, external packages are bundled by default, and you can opt-out specific packages using the new serverExternalPackages config option. Learn more about optimizing external packages.
create-next-app
with a new design--empty
flag remove any extraneous files and styles, resulting in a minimal „hello world” page.