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
tonext/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
withapp
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 withoutput: 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
withuse 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 forNode16
/NodeNext
: #47571 - Revert "Vendor @vercel/og and expose ImageResponse (#47657": #47711
- fix: handle empty
src
prop onnext/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
tooutput: '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
): addParamCheck
type only forroute.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
togitpkg.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 anexperimentalReact
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
innext dev
: #47768 - report error when using "use server" on module level: #47967
- Only cache successful fetches: #48033
- Revert "Vendor
react@experimental
under anexperimentalReact
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
- Update react-strict-mode.md: #47780
- [docs] Update getting-started.md with New react docs link: #47841
- Add documentation on OTEL support: #47194
- Update Local Images Example to Use Assets Folder: #47878
- Docs: Improve Open Telemetry documentation: #47955
- Recommend @opentelemetry/api instead of @vercel/otel reexport: #48013
- fix lint issue: #48023
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 - Fix next/image config injection during static generation: #47007
- Refactor renderers and RenderResult: #46955
- Update app route handler proxy handling: #47088
- Detect common invalid cases for the server directive: #47069
- Implement route announcer for app dir: #47018
- Fix: Update README templates in
create-next-app
: #47037 - chore(examples): fix
@ts-ignore
in Cloudinary config: #47029 - Add instructions to bug issue template: #47090
- Remove experimental fontLoaders option from next.config.js: #46886
- Verify router state query params can't grow out of control: #47094
- Fix(typedRoutes): fixed empty DynamicRoutes or StaticRoutes causing Route to turn into type string: #46980
- Dynamic routes for toplevel robots and sitemap: #47091
- Correctly list unsupported turbopack experimental options: #47093
- Continue page rendering after handling server requests: #47089
- fix(mdx): export NextMDXOptions interface: #46441
- updated zustand example to 4.3.6, changed out deprecated methods: #46911
- Fix #46621 - include status code in cache: #47096
- Finish up otel example with working docker and small guide in readme: #46819
- Add @feedthejim as a codeowner for docs, examples and errors: #47104
- Add support for scrolling to hash fragment: #46995
- re-enable next-dev-tests: #47087
- feat: add
output: export
support forappDir
: #47022 - Refactor app-render to decouple type definitions (#47128
- update prettier in stats action: #47158
- Fix
RenderOpts
type import: #47167 - Implement custom Turbopack Next transformers: #47137
- Implement server entry creation in client layer (#47127
- chore(ci): automatically deploy selected examples: #47130
- fix: app dir with
next dev
andoutput: export
: #47171 - Fix(typedRoutes): fixed files from directories other than pages and app getting into Route: #47184
- Not apply image loader to metadata images: #47197
- Adjust transpiler to support inlined server functions with annotations: #47186
- improve turbopack error overlay: #47132
- feat(cli): introduce
--tailwind
flag: #46927 - Align on next-transform-font: #47179
- Add OTEL tests: #47149
- Handle defaultLocale on client router filter: #47180
- fix build issue and future incompatibility: #47176
- fix: show error for api route handler with
output: export
: #47219 - Fix missing option in
createFromFetch
: #47216 - Fix failing CI checks: #47223
- docs: commentary correction for i18n app folder: #47226
- Support passing both closure arguments and parameters: #47212
- Fix deploy example: #47228
- next-swc: Switch to testing::fixture: #47183
- update turbopack: #47205
- Update router.md: #47210
- print reason for compilation: #47190
- [edge] support Node.js core modules in edge runtime: #47191
- Generate metadata images generation with app routes: #47225
- Emit late streaming meta tags: #47207
- fix: typo in message for experimental.runtime: #47248
- Fix loader rule with wrong matching conditions (#47261
- Fix contributing.md link in the rendering benchmark: #47303
- fix(cli): handle Tailwind CSS +
src/
correctly: #47238 - Update failing e2e deploy test: #47325
- fix(cli): unify styles/content of templates: #47294
- Replace bg-opacity with bg-color/opacity in tailwindcss templates: #47253
- chore: fix issue labeler: #47206
- chore: add checkout step to issue labeler action: #47346
- Ensure all server entry exports are functions (#47364)Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
- Don't set git config
features.manyFiles
on post install: #47375 - fix(cli): change file name from
route.ts
toroute.js
: #47352 - chore: tweak PR labeler pattern: #47395
- Revert "Support dynamic routes for social images and icons" (#47416
- Update failing e2e checks: #47423
- Add test for force-dynamic and catch-all routes (#47418
- Update CODEOWNERS
- chore: reduce noisy logs when updating timing gist: #47446
- Update failing e2e deploy test: #47453
- chore: clean up CODEOWNERS: #47451
- chore: run all tests for next/image against app dir: #47267
- Update failing i18n e2e deploy test: #47462
- Add workflow to trigger release: #47461
- Fix trigger_release workflow type: #47466
- Update version script
- Tweak trigger release cloning
- chore: tweak CODEOWNERS: #47491
- Fix failing og api e2e test: #47500
- add auto labeling for turbopack/the web-tooling team: #47502
- Update flakey app dev tests: #47504
- Update release package.json scripts: #47529
- Update pre-compiled
- Add ownership of build folder to Web Tooling team: #47508
- test(test-utils): correct --turbo error overlay lookup: #46901
- Update failing i18n e2e deploy test: #47555
- Update some flakey test cases: #47556
- Remove unneeded waiting in otel tests: #47431
- Improve client boundary source type detection (#47532)Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
- ci(workflow): run checks for the test specific features: #47572
- Update test create-next-app running: #47611
- Fix rust-check
- Update pnpm version for trigger release
- Vendor @vercel/og and expose ImageResponse (#47657
- test: disable the flaky test for parallel-routes-and-interception: #47694
- Handle
async
require when importing ESM ininstrumentation.ts
: #47658 - Run turbopack integration tests for next.js changes too: #47608
- Revert "Revert "Update vendored react to 18.3.0-next-85de6fde5-20230328"" (#47700
- test: remove unreliable font test: #47714
- Update CODEOWNERS to override image wildcard: #47722
- chore(ci): fix codemod tests: #47710
- Add tests for Suspensey CSS: #47708
- Add test to ensure image generation works in the Node.js runtime: #47719
- test(turbopack): blocking CI for turbopack integration test: #47709
- Update publish canary to undraft automatically: #47775
- Update metadata e2e test on deploy: #47776
- Tweak canary undrafting: #47777
- Fix docs only check for test-native-integration: #47800
- Tweak Vercel CLI installing for E2E tests: #47804
- Fix flaky css test and remove unused tests deps: #47806
- (Fix)(Tests)Fix typo in unit testing: #47644
- Update to retry undrafting canary: #47826
- Update set-cookies deploy test: #47836
- Update flakey tests and add Node.js setup retrying: #47871
- Test disabling kodiak: #47880
- Ensure GH actions tests run for trunk branches: #47883
- Revert "Test disabling kodiak (#47880)"
- chore: update labels: #47904
- Disable Kodiak for testing
- Add merge_group actions trigger
- Run bench tests as part of CI: #47849
- Increase CI test timeout: #47973
- docs: Add "special" to the Alex allowlist: #48021
- Speed up native dev build: #48028
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!