Next.js 15 brought significant improvements to the React framework, and with Next.js 16 now available, it's worth reviewing the features that shaped modern Next.js development.
Key Features in Next.js 15
Stable Turbopack
Turbopack became the default bundler in development mode, offering:
- 5x faster cold starts
- 10x faster HMR (Hot Module Replacement)
- Near-instant route changes
Improved Server Components
React Server Components became more mature with:
- Better error handling and error boundaries
- Improved streaming SSR
- Partial prerendering (experimental)
Enhanced Caching
Next.js 15 refined its caching strategy:
fetchrequests no longer cached by default- More explicit cache control with
unstable_cache - Better cache invalidation with
revalidateTag
Async Request APIs
Request-based APIs moved to async:
// Before (Next.js 14)
const params = useParams();
// After (Next.js 15+)
const params = await props.params;
Server Actions Improvements
Server Actions received significant upgrades:
- Better TypeScript inference
- Improved error handling
- Progressive enhancement support
- Form status with
useFormStatus
Partial Prerendering (PPR)
The experimental PPR feature combines:
- Static shell rendered at build time
- Dynamic content streamed on request
- Best of both SSG and SSR
Middleware Improvements
- Better Edge Runtime compatibility
- Improved request/response manipulation
- Chained middleware support
Migration Tips
- Update your
next.config.jstonext.config.ts - Review and update caching strategies
- Migrate to async request APIs
- Test with Turbopack in development
Conclusion
Next.js 15 set the foundation for the modern Next.js experience. If you're still on Next.js 14, upgrading is worth it for the performance improvements alone.