Core Changes
- Add Zod and router state validation: #46962
- Support default arrow function export in server boundary #46977
- Generate fixed route path for favicon.ico: #46997
- update turbopack: #46994
- Update next/font/google data: #46988
- fix: added jsdom & canvas to the external packages list - fixes #46893: #46990
- Add auto-detection of image/x-icon content type: #47013
- fix: exclude 'mdx-bundler' from being bundled in server components: #46992
- Add /route subpath to metadata static routes: #47030
- Ensure router.refresh() matches revalidatePath('/') behavior: #46723
- Reorganize client references manifest: #46777
- Opt-in to dynamic rendering when reading searchParams: #46205
- Fix CSS not being bundled in app dir: #45787
- feat(standalone): allow configuring KEEP_ALIVE_TIMEOUT via env var: #46052
- i18n Improvements: #47174
- Support manifest.json static and dynamic route: #47240
- Ensure config and fetch revalidate are honored: #47255
- feat: add
fetchPriority to next/image: #47222
- chore: add missing ts type in next-edge-app-route-loader: #47243
- Split app-render functions into separate files: #47282
- fix: typo in output:export error messages: #47252
- fix: handle different cases of React
fetchPriority: #47302
- [edge] limit the api surface of
util: #47292
- parallel routes: fix duplicate dev warning: #47317
- next/font/local prep: compartmentalize next/font/google: #47213
- Improve OTEL spans naming: #47209
- fix invalid comment in parseParameter function: #47291
- Add searchParams to leaf cache key: #47312
- Remove duplicated if statement: #47322
- Add a .catch to shared router for ssg fetching.: #47265
- parallel routes: fix nested routes: #47323
- [Nitpick] Remove unnecessary await in
base-server: #47313
- Warn about default exports with App Routes: #47263
- Add better-sqlite3 to server external packages: #47327
- Change App Route Route Handler signature: #47268
- Calling turbopack from the next build CLI: #46602
- Update Turbopack to turbopack-230321.1: #47342
- parallel routes: fix HMR refetch issue: #47343
- Fix bad route path for custom metadata routes: #47286
- Fix POST fetch request cache heuristic in POST route handler: #47333
- Fix: only apply metadata dynamic image routes convention for app dir: #47367
- Marks app paths in dev as supporting dynamic html: #46848
- fix: add pretty error for
exportPathMap with app dir: #47371
- Skip extra swc builds: #47378
- Simplify moduleProxy alias: #47381
- Skip warning if there is app directory for
no-html-link-for-pages rule: #42516
- Catch redirect() in root layout: #47345
- Add useParams(): #47373
- Refactor ES chunk evaluate logic into a Runtime trait: #47116
- Add more spans into OTEL instrumentation to wrap all user defined functions: #47368
- Support HOC cases in server entries: #47379
- Support dynamic routes for social images and icons: #47372
- Fix build spinner in TTY env: #47383
- upgrade vendored React to
18.3.0-next-12a1d140e-20230321: #47405
- Add default meta tags to error page: #47404
- Extend
not-found.js to catch all unmatched routes: #47328
- Add optional match support of rewrites and redirects in
typedRoutes: #47398
- Support dynamic routes for social images and icons: #47425
- turbopack: Implement streamed middleware: #47264
- Fix twitter metadata info merging: #47433
- improve source mapping of console output and errors: #47388
- Fix closure and rest params handling in SWC transform: #47401
- feat: change
next build to emit output with output: export: #47376
- Error during dev if returning
Response in pages API routes in Node.js runtime: #47442
- Add content hash for dynamic og image routes: #47440
- chore: add telemetry for
output: export: #47464
- Update fetch cache memory handling: #47465
- add useReportWebVitals that makes use of web-vitals package: #47319
- Ignore folders prefixed by underscore (_) in App Router: #47439
- Finalize HOC support with server entries and add encodeReply & decodeReply: #47438
- Locale fixes for App Directory: #47429
- Fix useSelectedLayoutSegments including PAGE: #47492
- parallel routes: implement default route + fix bugs on navigation: #47436
- Add http.route into root otel span: #47392
- fix: typo in max cache size error message: #47505
- Fix other case for useSelectedLayoutSegments: #47511
- fix error handling and hanging problems: #47457
- restore dynamic directory embedding: #47260
- Remove head.js: #47507
- Return null for useParams in pages: #47490
- Clean up leftover loaders: #46801
- Feat(next-types-plugin): added support for Route Handlers: #47185
- Add warning when deopting page into client rendering entirely: #47531
- Integrating capsize latest: #47428
- Rename app-render/index.tsx to app-render/app-render.tsx: #47285
- refactor(relay): Use transform from
swc/plugins repository: #47441
- remove unused turbo dependencies: #47557
- Add initial tree shaking refactorings: #47559
- next/font/local support for Turbopack: #47369
- Handle unknown platform triples in next-swc: #47570
- Fix fetch cache config and fetch revalidates: #47573
- Fix instrumentation not being called on edge in some cases: #47495
- Implement automatic font fallback support for
next/font/local: #47463
- Document various structs and methods in next/font: #47588
- Fix race condition of invalidation: #47586
- add test case for nested imports: #47580
- Underscore Handling Fixes: #47581
- Move App Route handler logic into bundle: #47582
- Revert "Move App Route handler logic into bundle": #47614
- Make sure the global not found route doesn't conflict with existing /not-found route: #47619
- Fix robots.txt generation: #47625
- fix typescript errors in
next-core: #47607
- Expose metadata types: #47630
- show most recent error first in turbopack error overlay: #47414
- Move App Route handler logic into bundle: #47633
- fix: handle
output: export with use client: #47635
- provide Buffer polyfill to client and edge: #47610
- fix: image
loaderFile with edge runtime: #47659
- Update vendored react to 18.3.0-next-85de6fde5-20230328: #47675
- fix: improve type of
ExportPathMap: #47676
- Fix(next-types-plugin): remove unused imports: #47667
- resolve browser modules for edge api in turbopack: #47604
- build(next-swc): introduce turbo-binding: #47512
- Revert "Update vendored react to 18.3.0-next-85de6fde5-20230328": #47687
- Fix
next-types-plugin generated files for Node16/NodeNext: #47571
- Revert "Vendor @vercel/og and expose ImageResponse (#47657": #47711
- fix: handle empty
src prop on next/image: #47695
- Add not found boundary and move head cache to app router: #47688
- Fix turbopack
_devPagesManifest.json on next-site: #47427
- Update MetadataRoute to namespace: #47674
- Provide default metadataBase for local and vercel deployment: #47568
- Fix duplicated default metadata tags: #47690
- chore(docs): update
next export to output: 'export': #47717
- Vendor @vercel/og and expose ImageResponse : #47715
- Turbopack: Fix images.remotePatterns port/protocol serialization: #47721
- Combine Route Handlers with Route Modules: #47679
- feat(next-swc): add compile-time heap profiler flag: #47729
- Add NEXT_RUNTIME process env to turbopack: #47713
- Small fixes to copy of Turbopack errors: #47734
- fix: correctly handle Set-Cookie headers: #47718
- Support relative path for metadata alternates urls: #47743
- remove
next-core package.json dev script: #47746
- Restart static paths worker after finishing task: #47716
- feat: bump minimum ts version to 4.5.2: #47712
- Turobpack: Implement Streaming App/API rendering: #47476
- Update app router filter handling: #47761
- fix: improve error message pages for
output: export: #47765
- add consistent import sorting/grouping to rustfmt: #47745
- turbopack: ensure ENV values are available in middleware: #47767
- Fix skipMiddlewareUrlNormalize with i18n: #47773
- Fix typo in error overlay: #47762
- provide full polyfill for process: #47764
- Turbopack: Use
SharedError for body streaming: #47677
- fix(export): make static export work with worker_threads: #47784
- Skip favicon.js for metadata: #47790
- Fix module resolving error in tracer: #47786
- Fix fetchCache config and On-Demand Revalidate handling: #47803
- Add
computeWorkerKey to the static optimization worker: #47792
- fix(
next-types-plugin): add ParamCheck type only for route.ts files: #47739
- fix: added tab and carriage to isWhitespace function to make robust: #47785
- Fix prefetch only being applied once: #47797
- Fix failing rust-check: #47811
- Move modularize imports for next/server to next-swc: #47788
- Add initial separated route resolving: #47208
- Fix dev ipc request on node v16: #47825
- Update render IPC handling: #47835
- Fix: fill route params for dynamic route metadata images url: #47829
- Enable context caching for middleware/edge functions in dev: #47840
- New app routes resolving logic for turbopack: #47737
- Polish metadata warnings: #47853
- Memory improvements to static workers: #47823
- Hide internal fetches OTel traces in dev mode and assert duplicate OTel spans are present only in dev mode: #47822
- feat(turbopack): support transform options: #47365
- Update dev IPC request: #47877
- Fix type plugin for NX workspaces: #47534
- Change package path from
gitpkg.now.sh to gitpkg.vercel.app: #47879
- TS plugin: ensure error and global-error files are client components: #47882
- Decrease required open telemetry peer-dependency version: #47861
- router: implement route interceptions: #47565
- Fix issue where NextServer.prepare wouldn't be called when deployed: #47899
- Add missing
module.hot.accept call to server CSS modules: #47913
- mark resolve issues inside a try block as warnings: #47763
- Hide not ENOENT errors for not found in ipc server: #47854
- Update react docs link: #47891
- turbopack: defer dev code evaluation until after page render IPC connects: #47888
- add test case for alias field: #47856
- add test case for ignore modules: #47758
- Small refactoring to
build/index.ts: #47935
- Compare modules' layer when tracking server CSS changes: #47927
- Extend type for streamEntrypoints: #47874
- Add strict next head handling: #47938
- ChunkingContext refactor pt. 1: #47693
- Add dynamic parameter marker to router cache key: #47957
- Vendor
react@experimental under an experimentalReact flag: #47759
- avoid duplicated error output: #47954
- add a warning when using implicit metadata: #47928
- Fallback to localhost for metadataBase when it's used and missing: #47910
- Fix app metadata in edge runtime: #47941
- Auto-restart dev server when next.config.js changes: #47912
- Unify Request types: #47884
- Update search params/route params handling on deploy: #47930
- turbopack: add vary header to app routes: #47946
- Check for null before reading value in useParams: #47875
- Fix metadata nested twitter props rendering: #47972
- Create unique route path for og under group routes: #47985
- allow turbopack HMR to recover from react errors without hard refresh: #47771
- Implement
Route type for router APIs: #47931
- If prefetching detected as app route, pass "as" to handleHardNavigation instead of "url": #47949
- update turbopack: #47994
- Revert "update turbopack": #48001
- update turbopack: #48006
- Fix css applying for root not found: #47992
- fix code generation for loader tree: #47987
- interception routes: re-implementation: #48027
- parallel routes: return a 404 when a parallel route does not have a default page/do not match: #47872
- Update normalize revalidate params for named matches: #48032
- fix: handle error case for
output: export in next dev: #47768
- report error when using "use server" on module level: #47967
- Only cache successful fetches: #48033
- Revert "Vendor
react@experimental under an experimentalReact flag": #48038
- Replaced Reflect with ReflectAdapter: #48000
Documentation Changes
- Improve static export documentation: #47251
- Add note about Windows Defender: #47298
- fix: update capitalization of ISR doc heading: #47370
- Updating the default URL of Amplify Hosting: #47420
- clarify warning about edge + ISR support: #47452
- Update Error Boundaries link to new ReactJS documentation: #47474
- Update react hydration error message page title: #47499
- Docs typo: #47528
- Add note about req to circular-structure error doc: #47162
- docs(image): Update browser bugs section for Safari 16.4 release: #47577
- Switch to ESM Jest config in docs: #42144
- Fix typo: #47634
- Grammar fix: #47600
- docs: clarify returning response in Middleware: #47696
- Replace AWS Serverless to SST in Serverless: #47725
- Linking to SST Next.js tutorial.: #47752
- chore(docs): add
typesafe-i18n as a new i18n option: #47315
- Document node.js APIs for Edge Runtime: #47760
- Update error-handling.md: #47779
Example Changes
- fix typo: #47235
- chore(examples): fix Mongoose deprecation warning: #47358
- chore: fix localhost port: #47413
- Update to supertokens example app: #47435
- chore(examples): Fix for destroy is not a function error: #47469
- Updated the versus short form in ssg-ssr example in docs: #47397
- fix-(Examples) Updated link tags in Auth0 example code.: #47518
- Remove incorrect entries for pnpm debug log: #47241
- Use App Router for static export example.: #47584
- Update Convex example to convex@0.12.0: #47175
- Updates with-supertokens example app: #47701
- Update github link: #47900
Misc Changes
- Update next/font/google data: #46988
- fix: added jsdom & canvas to the external packages list - fixes #46893: #46990
- Add auto-detection of image/x-icon content type: #47013
- fix: exclude 'mdx-bundler' from being bundled in server components: #46992
- Add /route subpath to metadata static routes: #47030
- test: update amp test to always check redbox: #47050
- Fix generateStaticParams check in app dir: #47051
- Fix URL anchor position in
going-to-production.md: #47056
- Rewrite action transform in SWC: #47049
- Cleanup remove directive logic to reduce allocate: #47055
- Initial support of redirection in server handlers (#46944
- Move
next-* crates from Turbopack: #47019
- chore(examples): upgrade Sentry to support Middleware: #47067
- Merge branch 'canary' into jrl-next-crates
- Merge pull request #47019 from vercel/jrl-next-crates
- [with-jest]: Update to use automatic path aliases: #46982
- Update _mongoClientPromise type error: #46985
- Prevent
handleDisconnect being called twice: #46959
Credits
Huge thanks to @shuding, @huozhi, @sokra, @hanneslund, @JesseKoldewijn, @kaguya3222, @yangshun, @ijjk, @konomae, @Brooooooklyn, @jridgewell, @zlrlyy, @JohnDaly, @abhiyandhakal, @benjie, @johnnyomair, @nk980113, @dirheimerb, @DerTimonius, @DuCanhGH, @padmaia, @stafyniaksacha, @Gladowar, @zek, @jankaifer, @styfle, @balazsorban44, @wbinnssmith, @chibicode, @ForsakenHarmony, @franktronics, @FSaldanha, @Schniz, @raisedadead, @AdamKatzDev, @wyattjoh, @leerob, @meesvandongen, @vladikoff, @feedthejim, @tka5, @pyjun01, @gdborton, @M3kH, @aretrace, @shivanshubisht, @alexkirsz, @agrattan0820, @vinaykulk621, @heyitsuzair, @mrkldshv, @timneutkens, @furkanmavili, @swaminator, @EndangeredMassa, @DevEsteves, @rishabhpoddar, @schehata, @molebox, @dlehmhus, @akshaynox, @sp00ls, @janicklas-ralph, @tomryanx, @kwonoj, @karlhorky, @kdy1, @dante-robinson, @lachlanjc, @ianmacartney, @hotters, @isaackatayev, @insik-han, @jayair, @ivanhofer, @javivelasco, @SukkaW, @visshaljagtap, @imranbarbhuiya, @nivak-monarch, @HarshaVardhanReddyDuvvuru, @ianldgs, @ricardofiorani, @swarnava, @gustavostz, and @nabsul for helping!