---
name: Next.js
slug: next-js
type: github
source_url: https://github.com/vercel/next.js
organization: Vercel
organization_slug: vercel
total_releases: 237
latest_version: v16.3.0-canary.2
latest_date: 2026-04-18
last_updated: 2026-04-19
tracking_since: 2025-12-04
canonical: https://releases.sh/vercel/next-js
organization_url: https://releases.sh/vercel
---

<Summary type="rolling" window-days="90" release-count="175">
Next.js oscillated between rapid canary iterations and selective backports during this 90-day window, revealing a shift from stability consolidation toward infrastructure evolution. The major thrust across releases centered on three threads: adapters and deployment-time optimization (moving adapterPath into stable config, handling deployment IDs in asset URLs, enabling segment-specific caching strategies), experimental instant navigation and cached navigations (validation in dev, testing APIs, runtime prefetch handling), and Turbopack hardening (server HMR, persistent caching tuning, workspace-relative asset handling). A notable security update in mid-January patched HTTP request smuggling in rewrites; separately, v16.2.0 shipped with proper Pages Router export handling and partial fallbacks gating. By late January, the 16.2.0 line began with PPR fallback fixes and React upgrades, then pivoted toward segment cache decoupling and prefetch optimizations before stabilizing at v16.2.4 with Windows Arm64 fixes and filesystem watcher config corrections.
</Summary>

<Summary type="monthly" period="March 2026" release-count="55">
March shipped improvements to deployment adapters, dev experience with Turbopack HMR, and stability fixes. Adapters gained proper handling of dynamic metadata routes and expanded documentation, while Turbopack's server HMR for app route handlers and CSS HMR on Safari made development more reliable. The month also addressed several security concerns and shipped breaking changes for TypeScript v6 deprecations around `baseUrl` and `moduleResolution`.
</Summary>

<Summary type="monthly" period="February 2026" release-count="46">
The month focused on stabilizing Instant Navigation and refactoring Turbopack's runtime infrastructure. Work landed on validation for the new `instant()` config in dev mode, a testing API for instant navigations, and restructuring how Turbopack manages HMR and server communication—including infrastructure for server HMR and runtime file reorganization. Alongside this, the team shipped deployment ID handling across multiple asset types (fonts, CSS URLs, images), improved error handling for deeper causal chains, and continued upgrading React daily builds.
</Summary>

<Release version="v16.3.0-canary.2" date="April 18, 2026" published="2026-04-18T23:44:17.000Z" url="https://github.com/vercel/next.js/releases/tag/v16.3.0-canary.2">
### Misc Changes

- Improve "make root node" trace attributes: #92941
- CI: Track SWC native binary size in PR stats comment: #92938

### Credits 

Huge thanks to @sokra for helping!

</Release>

<Release version="v16.3.0-canary.1" date="April 17, 2026" published="2026-04-17T23:45:49.000Z" url="https://github.com/vercel/next.js/releases/tag/v16.3.0-canary.1">
### Core Changes

- Support more prefetch configuration options: #92859
- Improve deduping of concurrent `'use cache'` invocations: #91830
- [partial fallbacks]: include prefetch requests in shell upgrade handling: #92894
- Redesign blocking route dev overlay and build errors: #92638
- Switch to cargo-binstall and pre-built sccache binaries: #92911
- Remove prefetch from instant config: #92761

### Misc Changes

- Fix flake in rewrites-manual-href-as test: #92948
- docs: amends to preserving-ui-state guide: #92270

### Credits 

Huge thanks to @gnoff, @unstubbable, @ztanner, @aurorascharff, @mmastrac, and @icyJoseph for helping!

</Release>

<Release version="v16.3.0-canary.0" date="April 17, 2026" published="2026-04-17T16:09:30.000Z" url="https://github.com/vercel/next.js/releases/tag/v16.3.0-canary.0">
### Core Changes

- fix(next/image): ensure `images.maximumResponseBody` applies to local images too: #92920
- Refactor trace server sort to SortMode enum (execution order / value / name): #92873
- Perf: Simplify static metadata handling: #92630
- remove flag guarding `unstable_io`: #92923

### Misc Changes

- [ci] Cache passing test results so CI retries skip them: #92832
- fix accidental test duplication: #92922
- rename MagicAny: #92918
- turbopack: reduce EffectStateStorage memory by storing u128 content hashes: #92902
- turbo-trace-server: reduce allocation overhead when loading large trace files: #92896
- Turbopack: optimize SelfTimeTree performance, memory usage, and fix range query boundaries: #92931
- [ci]: fix backport sync script: #92942

### Credits 

Huge thanks to @styfle, @mmastrac, @ztanner, @lukesandberg, @sokra, @timneutkens, and @gnoff for helping!

</Release>

<Release version="v16.2.1-canary.46" date="April 16, 2026" published="2026-04-16T23:46:48.000Z" url="https://github.com/vercel/next.js/releases/tag/v16.2.1-canary.46">
### Core Changes

- Support type cast expressions in page static info extractor: #92837
- Fix dev mode hydration failure when page is served from HTTP cache: #92892
- [devtools] Preserve full code frames in browser overlay: #92621
- Enable prefetchInlining by default: #92863
- Replace deprecated `moduleResolution: "node"`: #92654

### Misc Changes

- turbo-tasks: add info_span for blocking waits during task restore: #92878
- Turbopack: Use an async lock in the filesystem watcher: #92906
- [ci] Skip Playwright system deps install on subsequent self-hosted runs: #92893
- turbo-tasks: Reduce allocations on cache hits: #92756
- CI: Remove dead yarn support from next-stats-action: #92587

### Credits 

Huge thanks to @mischnic, @sokra, @unstubbable, @aurorascharff, @acdlite, @bgw, @mmastrac, @eps1lon, and @lukesandberg for helping!

</Release>

<Release version="v16.2.1-canary.45" date="April 16, 2026" published="2026-04-16T12:06:45.000Z" url="https://github.com/vercel/next.js/releases/tag/v16.2.1-canary.45">
### Core Changes

- Allow overriding outputHashSalt in modifyConfig: #92856

### Misc Changes

- Turbopack: Use lld again on ARM64 glibc Linux: #92860
- [ci]: add workflow to bump canary after backport: #92801
- turbopack: cache TransformPlugin in narrow-scoped turbo-tasks functions: #92842

### Credits 

Huge thanks to @bgw, @ztanner, @sokra, and @mischnic for helping!

</Release>

<Release version="v16.2.1-canary.44" date="April 15, 2026" published="2026-04-15T23:47:31.000Z" url="https://github.com/vercel/next.js/releases/tag/v16.2.1-canary.44">
### Core Changes

- fix(trace-server): default MCP port to --port + 1 to avoid conflicts: #92831
- Revert "Node.js streams: Add forkpoint for prerenderToStream": #92845
- Warn for non-deterministic `"use cache"` args during final prerender: #92820

### Misc Changes

- Share native binaries via GitHub artifacts: #92758
- Turbopack: shorter error message for ModuleBatchesGraph::get_entry_index: #92828
- Turbopack: refactor export analysis: #92781
- [ci] Skip sccache on Windows runners: #92847
- Turbopack: remove StarImportAnalyzer: #92830
- Turbopack: analyzer improvement followups: #92834
- Update Rspack production test manifest: #92674
- Update Rspack development test manifest: #92673
- Turbopack: move assignment_scopes computation into ImportMap: #92835
- docs: restructure instant nav guide for clarity: #92684
- docs: add documentation for no-typos ESLint rule: #92809

### Credits 

Huge thanks to @mmastrac, @sokra, @mischnic, @timneutkens, @vercel-release-bot, @unstubbable, @icyJoseph, and @MukundaKatta for helping!

</Release>

<Release version="v16.2.4" date="April 15, 2026" published="2026-04-15T22:35:38.000Z" url="https://github.com/vercel/next.js/releases/tag/v16.2.4">
> [!NOTE]
> This release is backporting bug fixes. It does **not** include all pending features/changes on canary.

### Core Changes

- chore: Bump reqwest to 0.13.2 (Fixes Google Fonts with Turbopack for Windows on ARM64) (#92713)
- Turbopack: fix filesystem watcher config not applying follow_symlinks(false) (#92631)
- Scope Safari ?ts= cache-buster to CSS/font assets only (Pages Router) (#92580)
- Compiler: Support boolean and number primtives in next.config defines (#92731)
- turbo-tasks: Fix recomputation loop by allowing cell cleanup on error during recomputation (#92725)
- Turbopack: shorter error for ChunkGroupInfo::get_index_of (#92814)
- Turbopack: shorter error message for ModuleBatchesGraph::get_entry_index (#92828)
- Adding more system info to the 'initialize project' trace (#92427)

### Credits

Huge thanks to @Badbird5907, @lukesandberg, @andrewimm, @sokra, and @mischnic for helping!
</Release>

<Release version="v16.2.1-canary.43" date="April 15, 2026" published="2026-04-15T14:10:33.000Z" url="https://github.com/vercel/next.js/releases/tag/v16.2.1-canary.43">
### Core Changes

- webpack: fix swcPlugins with relative paths: #92770
- Node.js streams: Add forkpoint for logMessagesAndSendErrorsToBrowser: #92510
- Node.js streams: Add forkpoint for createCombinedPayloadStream: #92511
- Node.js streams: Add forkpoint for renderWithRestartOnCacheMissInValidation: #92512
- Node.js streams: Add forkpoint for prerenderToStream: #92513
- Perf: Fast path for trace() when opentelemetry is not enabled: #92678

### Misc Changes

- turbopack: gate ValueDebugFormat and ValueDebug behind debug_assertions: #92628
- Add TurboMalloc::thread_park() to flush and collect on thread park: #92804
- Stop using deprecated `baseUrl`: #92653
- Turbopack: Use FrozenMap for module export information: #92802
- pr-status: Show all participants in review thread overview: #92730
- docs: draftMode alignment: #92794
- Turbopack: remove webpack chunk detection: #92773
- Turbopack: refactor ESM codegen generation: #92777
- Fix monorepo `@next/swc` binary postinstall: #92813
- Turbopack: shorter error for ChunkGroupInfo::get_index_of: #92814
- Turbopack: properly set NODE_ENV for SWC plugins: #92579

### Credits 

Huge thanks to @sokra, @eps1lon, @bgw, @icyJoseph, @mischnic, and @timneutkens for helping!

</Release>

<Release version="v16.2.1-canary.42" date="April 15, 2026" published="2026-04-15T01:28:21.000Z" url="https://github.com/vercel/next.js/releases/tag/v16.2.1-canary.42">
### Core Changes

- Scope Safari ?ts= cache-buster to CSS/font assets only (Pages Router): #92580
- Enable wasm plugins on windows arm: #92544
- prefetchInlining: fix build crash on notFound() pages: #92806

### Credits 

Huge thanks to @lukesandberg and @acdlite for helping!

</Release>

<Release version="v16.2.1-canary.41" date="April 14, 2026" published="2026-04-14T23:47:21.000Z" url="https://github.com/vercel/next.js/releases/tag/v16.2.1-canary.41">
### Misc Changes

- Fix devlow-bench: tsconfig rootDir mismatch with package.json bin: #92800

### Credits 

Huge thanks to @mmastrac for helping!

</Release>

<Release version="v16.2.1-canary.40" date="April 14, 2026" published="2026-04-14T19:59:24.000Z" url="https://github.com/vercel/next.js/releases/tag/v16.2.1-canary.40">
### Misc Changes

- Fix turbo cache flag: use --force: #92796

### Credits 

Huge thanks to @mmastrac for helping!

</Release>

<Release version="v16.2.1-canary.38" date="April 13, 2026" published="2026-04-13T23:43:40.000Z" url="https://github.com/vercel/next.js/releases/tag/v16.2.1-canary.38">
### Core Changes

- Ensure x-nextjs-data header is only set during resolve: #92752

### Credits 

Huge thanks to @ijjk for helping!

</Release>

<Release version="v16.2.1-canary.37" date="April 13, 2026" published="2026-04-13T23:25:45.000Z" url="https://github.com/vercel/next.js/releases/tag/v16.2.1-canary.37">
### Core Changes

- Exclude trace files from directory deletion in builds: #92486
- Switch segment prefetch cache miss response from 204 to 404: #92751

### Misc Changes

- Re-enable sccache: #92746

### Credits 

Huge thanks to @lukesandberg, @mmastrac, and @acdlite for helping!

</Release>

<Release version="v16.2.1-canary.36" date="April 13, 2026" published="2026-04-13T19:55:38.000Z" url="https://github.com/vercel/next.js/releases/tag/v16.2.1-canary.36">
### Core Changes

- Fix prefetch hints not being loaded during revalidation: #92625

### Credits 

Huge thanks to @acdlite for helping!

</Release>

<Release version="v16.2.1-canary.35" date="April 13, 2026" published="2026-04-13T19:51:24.000Z" url="https://github.com/vercel/next.js/releases/tag/v16.2.1-canary.35">
### Core Changes

- Update font data: #92704
- test: use Turborepo pack task for test isolation: #92575
- Compiler: Support boolean and number primtives in next.config defines: #92731
- Upgrade React from `404b38c7-20260408` to `fef12a01-20260413`: #92728
- Revert "refactor: write pages router export files directly to server/pages/": #92733

### Misc Changes

- [test] Stop using `baseUrl`: #92469
- Turbopack: properly remove unused TS enums with scope hoisting: #88205
- bench: improve render pipeline benchmark reliability: #92715
- bench: add A/B branch comparison workflow to BENCHMARKING.md: #92721
- docs: fix broken bun.sh Nextjs documentation link: #92698
- fix(server-actions): skip type-only ExportNamed in pre-pass to prevent phantom registerServerReference: #92494
- Turbopack: Add import.meta.glob support (Vite compat): #92640
- turbo-tasks: Fix recomputation loop by allowing cell cleanup on error during recomputation: #92725
- chore: Bump reqwest to 0.13.2 (Fixes Google Fonts with Turbopack for Windows on ARM64): #92713
- TURBOPACK: support crsossOriginLoading: #92070

### Credits 

Huge thanks to @vercel-release-bot, @eps1lon, @mischnic, @timneutkens, @hamedniroomand, @sleitor, @sokra, @Badbird5907, @fireairforce, and @andrewimm for helping!

</Release>

<Release version="v16.2.1-canary.34" date="April 12, 2026" published="2026-04-12T23:43:49.000Z" url="https://github.com/vercel/next.js/releases/tag/v16.2.1-canary.34">
### Core Changes

- Node.js streams: Add forkpoint for error recovery: #92457

### Misc Changes

- Delete some dead turbo task functions: #92596
- docs(cli): clarify that `--debug-build-paths` requires route group folders in paths: #92618
- turbo-tasks: Drop output_dependent on immutable task completion: #92683

### Credits 

Huge thanks to @lukesandberg, @timneutkens, and @icyJoseph for helping!

</Release>

<Release version="v16.2.1-canary.33" date="April 11, 2026" published="2026-04-11T23:44:03.000Z" url="https://github.com/vercel/next.js/releases/tag/v16.2.1-canary.33">
### Core Changes

- feat(turbopack): add LocalPathOrProjectPath PostCSS config resolution: #91338
- Fix segment explorer file pill accessibility: #92608
- Perf: Only instrument clientComponentLoadTimes when used: #91385

### Misc Changes

- Remove a ton of turbo task functions from Issue trait items: #92623
- feat(turbopack): change DiskFileSystem root to Vc<RcStr> for portable cache: #92603
- Turbopack: remove unused ChunkableModules struct: #92606
- Disable sccache temporarily: #92657

### Credits 

Huge thanks to @lukesandberg, @sokra, @mischnic, @timneutkens, and @mmastrac for helping!

</Release>

<Release version="v16.2.1-canary.32" date="April 10, 2026" published="2026-04-10T23:34:34.000Z" url="https://github.com/vercel/next.js/releases/tag/v16.2.1-canary.32">
### Core Changes

- Node.js streams: Add forkpoint for CacheComponents: #92444
- Resolve `compilerOptions.paths` in tsconfigs without `compilerOptions.baseUrl`: #92277
- Add codemod command to middleware deprecation warning: #92532
- [partial fallbacks]: enable by default: #92627
- refactor: write pages router export files directly to server/pages/: #90018

### Misc Changes

- Fix NextFontIssue IssueStage: CodeGen → Resolve: #92588
- test: reduce writeToDisk memory test iterations to fix CI timeout: #92586
- Refactor effects system: dedup/conflict detection, simplified Effect trait: #92300
- fix(ci): improve Docker image cache streaming throughput and arch-awareness: #92617
- Turbopack: extract inline base64 decode helper to shared `@turbopack/base64` module: #92549
- docs: add Link transitionTypes version history: #92624
- CI: Download and run self-contained datadog-ci instead of using pnpm dlx or npx: #92546
- turbopack: move CSS module composes validation from code generation to resolving: #92582
- Drop turbo_tasks::function from ValueDebug trait items: #92593
- Turbopack: fix filesystem watcher config not applying follow_symlinks(false): #92631
- Bump swc to 63.1.1: #92604
- chore(turbopack): upgrade qfiler to v0.3.0-alpha.4: #92558
- Turbopack: cut number of client references in half: #92607
- fix(ci): improve Docker image caching and native build skip optimization: #92633

### Credits 

Huge thanks to @sokra, @timneutkens, @hamidrezahanafi, @mmastrac, @lukesandberg, @aurorascharff, @bgw, @ztanner, @mischnic, @fireairforce, and @bgub for helping!

</Release>

<Release version="v16.2.1-canary.31" date="April 10, 2026" published="2026-04-10T08:52:15.000Z" url="https://github.com/vercel/next.js/releases/tag/v16.2.1-canary.31">
### Core Changes

- Don't swallow strings thrown in Server Components: #92592

### Credits 

Huge thanks to @eps1lon for helping!

</Release>

<Release version="v16.2.1-canary.30" date="April 9, 2026" published="2026-04-09T23:35:02.000Z" url="https://github.com/vercel/next.js/releases/tag/v16.2.1-canary.30">
### Core Changes

- Add next internal upload-trace: #92191
- Perf: Add fast path to isAbsoluteUrl: #91389
- Perf: Don't require watchpack in production: #91387
- Request logging: Fix generate-params time being included in next.js time: #91386
- Perf: Use charCodeAt in removeTrailingSlash: #91384
- Perf: Cache regex in shouldServeStreamingMetadata: #91388
- fix: scope "Pages Router only" comment to default export in next/error: #92566
- Turbopack Build: Remove dev fouc from production bundle: #80935
- fix(hmr): reconnect WebSocket after sleep/wake: #91416
- Handle `target` option in React Compiler for Pages + React 18: #91500
- [turbopack] Rust dependency caching via sccache: #91873
- trace: detect rage restarts and deleted .next dirs: #92489

### Misc Changes

- turbo-tasks-backend: prevent duplicate task restores with restoring bits: #92389
- docs: update details about `unstable_retry()` behavior: #91827
- docs: link updateTag from cacheTag reference: #92379
- [test] Stop using deprecated `target: "es5"` TypeScript compiler option: #92458
- Docs: Instant docs updates: #92515
- Turbopack: Improve unable to resolve next error: #91394
- [test] Ensure incomplete minimum release age isn't propagated to fixture installs: #92568
- test: skip .next and other build artifacts in writeFiles filter: #92578
- Replace wasmer with wasmtime for SWC plugin WASM engine: #91533
- docs: native db drivers with sync queries: #92572
- turbopack: fix incremental build when module factories are restored from persistent cache: #92569
- CI: Another attempt to fix pnpm versions for next-stats-action on canary: #92550
- [turbopack] fix a debug_assert failure: #92581

### Credits 

Huge thanks to @sokra, @timneutkens, @devjiwonchoi, @aurorascharff, @eps1lon, @lukesandberg, @icyJoseph, @bgw, @mmastrac, and @wbinnssmith for helping!

</Release>

<Pagination page="1" total-pages="12" total-items="237" next="https://releases.sh/vercel/next-js.md?page=2" />
