6 min read
[DUMMY] What changed when we moved to Next.js 16
Middleware became Proxy, request APIs went async, and caching turned opt-in. Notes from the migration.
nextjsmigration
Middleware is now Proxy
The rename is not cosmetic. Keeping the old filename means the locale never resolves, and the error message points nowhere useful.
Request APIs are async
Synchronous access to params, cookies() and headers() was removed, not deprecated. Every page signature changes.
Caching is opt-in
Cache Components makes everything dynamic by default. That is the right default, but it inverts what you have to think about.