Next.js remains a top contender among full-stack frameworks. However, it might be time to move on from Version 14 because the Next.js 15 Release Candidate (RC) is now available! This new release brings a host of exciting features, and today, we’ll delve into four of the most notable ones.
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 cache
force-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 article

3. 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;

Then, import the function in Server Components, Server Actions, Route Handlers, or Middleware.

import { unstable_after as after } from 'next/server';
import { log } from '@/app/utils';
export default function Layout({ children }) {
  // Secondary task
  after(() => {
  // 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 packages
Bundling 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.