5.2.1 (2024-05-02)
5.2.0 (2024-04-30)
- apply useRegionalBlobs replacement for non-monorepo template (#431) (d73a912)
- disable regional blobs until feature is ready for release (#433) (9620588)
- remove blob folder in pre-dev (#430) (3749c3c)
- track background work (#407) (296e8fe)
- track background work pre batchers (#423) (292331d)
5.1.2 (2024-04-18)
5.1.1 (2024-04-17)
5.1.0 (2024-04-16)
- add cdn-cache-control headers to cacheable route handler responses (#399) (f4c588c)
- fail the build when advanced api routes are used (#403) (275f488)
5.0.0 (2024-04-02)
- add build time o11ty to the runtime (#372) (93036f7)
- add first part of the open telemetry integration to the runtime (#232) (8b17f09)
- add middleware routing (#146) (8fc84c5)
- add mono repository support (#123) (53f0f36)
- add next.js version check and fail the build if version not satisfied (#291) (72101f3)
- add system logging to middleware handler (#174) (1eee565)
- add systemlog shim (#127) (dab9ead)
- check for root publish dir (#292) (f2084b8)
- fail build if BUILD_ID is not found at location it will be read from in runtime (#313) (d06ca25)
- handle /_next/image through Netlify Image CDN for local images (#149) (4bf8641)
- normalise URLs in edge middleware (#176) (5155474)
- remove x-nextjs-cache header and add Cache-Status instead (#158) (5b477db)
- start moving to SugaredTracer and collect spans manually to be able to create 'server-timing' header when debugging (#358) (311fafe)
- stop running middleware at the origin (#125) (3e743de)
- support also x-next-debug-logging to enable server-timing (#359) (d045755)
- support edge middleware (#114) (a1eaca3)
- support nx integrated setups inside runtime (#251) (994be8e)
- support static export (#349) (e2737bc)
- swap publish/static dirs (#93) (a31816e)
- use blob key encoding (#108) (1277f85)
- use in-source path over redirects for Server Handler (#122) (aaf12cc)
- use new blob store api (#100) (0f4eb7a)
- use prerenderManifest data instead of globbing when copying prerendered content (#105) (60594f1)
- write tags manifest at build time to simplify request time response tagging (#94) (a0c93ca)
- apply permanent cdn-cache-control for fully static page (#274) (9c2f0bb)
- avoid PPR build error (#286) (8217f50)
- await copyStaticExport (#374) (1c814f8)
- blob key collisions (#212) (7c33ac3)
- bundle edge chunks with lambda (#152) (c5008a4)
- cache freshness for ISR content (#235) (4a0c285)
- concatenate all edge chunks (#319) (b3aaed6)
- copy-next-code on windows (#297) (077cc18)
- correctly handle middleware header mutations (#225) (da7aa22)
- correctly handle query params on data rewrites (#196) (abd7509)
- correctly serve images by storing binary as base64 (#241) (22afaa8)
- create server handler in sequential steps (#373) (96f8fe7)
- deps: update dependency @netlify/blobs to ^4.2.0 (#86) (77c2a9c)
- deps: update dependency @netlify/blobs to v6 (#92) (f462438)
- deps: update dependency @netlify/functions to ^2.4.0 (c566ffa)
- disable transfer-encoding leading to problems in fastly (#333) (4080e1c)
- don't mutate route data, instead create new object to set as blob (#391) (98eb35f)
- don't run middleware on rewrite target (#270) (c6af678)
- don't set SWR cdn cache control on stale responses (#259) (7555b68)
- don't use windows path separators for path templating in monorepo (#293) (5b26311)
- ensure cdn cache control only set for get and head methods (#137) (bf63aa8)
- fetch cache tag invalidation (#268) (ede6277)
- fix proxying on next@<14.0.2 (#366) (83e9a39)
- fixes an issue where the runtime was not working with pnpm package manager (#96) (b77512e)
- fixes an issue where the symlinks where not correctly preserved for pnpm monorepos (#216) (9c35799)
- fixes the runtime inside monorepos like turborepo (#204) (219588e)
- fixes the usage of a custom distDir (#269) (6a35de6)
- handle ipx redirect that visitors might have browser cached from v4 (#390) (9c0490c)
- handle locales in middleware redirects (#198) (97af130)
- handle long blob names by truncating them (#182) (b55ca06)
- handle middleware rewrite bodies and loops (#193) (fd3c754)
- handle middleware rewrites to in data requests (#180) (8b5687c)
- handle multiple matchers for middleware (#203) (8e9dbb5)
- handle pages router notFound pages (#318) (27a5645)
- handle parallel routes default layout (#150) (ebe579f)
- handle redirect response body (#142) (f149e89)
- honor skipMiddlewareUrlNormalize (#287) (01e9450)
- import server in module scope (#363) (bce994d)
- include static files in the function bundle (#200) (7e79ba7)
- init blobStore in CacheHandler constructor and not global scope (#164) (1ab8d82)
- init deployStore on fs.readFile and not when lambda spawns (#277) (6b3edc3)
- LastModified Date (#211) (4e5d5fc)
- let next-server handle SWR behavior (#206) (d2eeda9)
- limit amount of concurrent handling of prerendered content (#356) (416f66c)
- make on-demand revalidation reliable (#245) (d85332a)
- match bare route for i18n site middleware (#288) (590db9b)
- middleware should run in/out of src dir (#219) (3fb5bda)
- normalise basepath (#228) (15116a0)
- normalise middleware data URL requests (#267) (fa41fce)
- normalise redirect/rewrite target locales (#226) (402caae)
- only populate build cache when run inside buildbot (#199) (a4c49e2)
- overriding headers in route handlers should work (#195) (636449d)
- pass correct domain to server (#144) (ae4285a)
- preserve functions in patched middleware manifest (#139) (d17c030)
- preserve locale in redirects (#276) (c4c4214)
- prevent infinite loop cause by global fetch patched by Next.js (#167) (616b94a)
- prewarm entrypoint (#351) (31484aa)
- put in real system logger (#177) (b874afc)
- reduce reliance on PACKAGE_PATH (#340) (4b53c21)
- remove accepts encoding workaround (#264) (d79d333)
- remove temp publish dir before moving static content (#278) (3d7b20f)
- resolve run-config.json in runtime from PLUGIN_DIR not cwd (#285) (0348fac)
- respect user defined included_files for functions from netlify.toml (#298) (e5192f2)
- rewrites shouldn't be following redirects (#253) (30b091c)
- set correct date header for cached objects (#124) (4523c5f)
- shim
require("node:buffer")
(#233) (00662dc) - shim process in edge runtime (#132) (7d01157)
- standardize stale-while-revalidate header (#95) (1220e04)
- strip internal middleware header from responses (#160) (e270811)
- strip locale from path passed to middleware (#194) (5e88d33)
- support basepath for static assets (#141) (84b3a63)
- support wasm chunks (#190) (739fbdd)
- try to resolve styled-jsx from next context, not serverHandlerContext (#300) (87f3215)
- unstable_cache not working (#237) (c076448)
- use response cache key for tag manifest first before falling back to pathname (#280) (51dcbe0)
- use unpatched fetch for all deploystores (#240) (8972e5b)
- windows doesnt like renaming into a directory that already exists (#299) (8a60324)
- check any revalidatedTags passed from next first before checking blobs, memoize tag manifest blob gets for duration of request (#229) (39ab537)
- ensure blob directory exist just once (#357) (037b695)
- reuse lastModified captured in cache handler to calculate date header (#260) (e33bd93)
- shim next's telemetry module to improve startup performance (#365) (3d2c429)
- release 5.0.0 (2599934)
5.0.0-alpha.25 (2023-11-27)
- cache tags & on-demand Revalidation for pages (#50) (a6f3ce2)
- symlink for speed and to avoid clobbering user files (#56) (2576f81)
- disable downloading canary swc binaries (#81) (8f3799c)
- fix patching the fs by doing a shallow clone of fs/promises module to avoid infinite loop (#73) (80b5ea9)
- fixes a module interop issue (#67) (57b8678)
- fixes an issue where the nft tracing was not picking up the runtime node_modules (#74) (fe68c74)
- fixes an issue where the static pages could not be retrieved from the blob store (#79) (e18de13)
- fixes the package structure (#66) (b10dad6)
- handle dependency paths for packaged module (a81658c)
- resolution issue (#72) (f56c28c)
- resolving the paths correctly when the next-runtime is used from source (#77) (fcd57d1)
- revert symlinks to cp due to CLI issues (#70) (85a50d4)
- temporary workaround for CDN compression bug (#80) (6b9fa33)
- Update included files within package.json (#63) (ec7c681)
- release 5.0.0-alpha.25 (7088065)
5.0.0-alpha.2 (2023-11-13)
5.0.0-alpha.1 (2023-11-13)
5.0.0-alpha.0 (2023-11-13)
- release 5.0.0-alpha.0 (aaf9085)
This is the first internal-only release of the new Next Runtime! It represents a big step forward in making the runtime more reliable and easier to maintain by leaning on the framework more, using new Netlify platform primitives and working with new Next.js public APIs such as custom cache handling and standalone mode.
The features in this release finally allow us to run Next.js App Router sites, with full support for the various rendering/routing/revalidating scenarios.
Note that we are currently working through some issues with Pages Router support, so please consider this an App Router only release, with Pages Router support still to come. Similarly, this release contains no edge runtime and hence middleware will run at the origin and not on the edge.
This is an alpha release, so please expect a variety of interesting edge-case bugs. It is not ready for production use, but we are excited to share it and begin gathering feedback.
- Standalone mode: The Next Runtime now builds Next.js sites in standalone mode, which means the Next Runtime no longer needs to trace and package server files/dependencies and we can instead rely on the framework. In addition, it exposes a server entrypoint that allows us to handle requests in a more reliable way, meaning we are less exposed to changes in Next.js internals.
- Cache handling: We are making use of a new Next.js configuration parameter that allows us to
specify a custom cache handler. This is a huge leap forward because it allows us to leverage
Netlify's new
Cache-Control
primitives and retire the use of ODBs, which are no longer suitable for dealing with the advanced caching requirements of modern Next.js sites. The new Next Runtime forwards Next.jsCache-Control
headers and specifically ensures thatstale-while-revalidate
is handled by our edge CDN and does not leak to the browser. In addition, the runtime sets appropriateVary
andCache-Tags
headers according to the Next.js response. - Blob storage To support globally persistent static revalidation, the Next Runtime makes use of Netlify's new blob storage primitive. Page content and metadata is cached in the blob store, meaning that the same content version is available to all lambda invocations and can be automatically (TTL) or manually (on-demand) revalidated across all CDN nodes.
- Functions API v2 The server handler utilizes the new Netlify Functions API, which means we are now receiving/returning a standard web Request/Response object and no longer need to bridge between a Lambda event and a Node event by standing up an HTTP server on each request. In addition, the new configuration API means we will no longer need to modify the Netlify TOML file and can avoid modifying any user code or Next.js build output for better DX.