Skip to content

Releases: unjs/nitro

v2.4.0

05 May 16:57
@pi0 pi0
Compare
Choose a tag to compare

compare changes

⬆️ How to Upgrade?

If you are directly using Nitro, make sure to recreate lockfile as well in order to receive all UnJS ecosystem updates.

If you are using Nitro via Nuxt, simply use npx nuxi@latest upgrade --force.

⭐ What is new?

isr route rule

Vercel and Netlify route rules support a dedicated isr flag to enable Incremental Static Regeneration.

For backward compatibility, we keep converting swr and static route rules to isr for these two presets. If you were previously depending on swr and static route rules, we highly recommend to upgrade nitro and switch to isr flag:

routeRules: {
--  '/blog/**': { swr: 3000 },
++  '/blog/**': { isr: 3000 },
}

If you like to leverage Nitro Native SWR cache (stored in storage), you can opt-in using future.nativeSWR: true (nuxt: nitro.future.nativeSWR) config.

Vercel KV Storage

In collaboration with the Vercel team, Nitro now supports seamless integration with Vercel KV Store. See docs for usage information.

Cloudflare Module Worker Preset

You can opt-in to the new Cloudflare Module Worker output format.

The cloudflare pages preset is also upgraded to the worker format with this release

First-class static targets

While Nitro is a server builder, it can be also used to prerender all routes using a renderer and output only static output. New static ,vercel-static, netlify-static and github-pages presets are now available to only output prerender and skip the production server build.

Config HMR support

You can now directly edit route rules and runtime config within nitro.config without the need to restart the nitro server! See #1175 for more information.

Dynamic App Config and Runtime Config

Previously, both useAppConfig() and useRuntimeConfig() were returning a frozen object. Now using useAppConfig(event) and useRuntimeConfig(event) you can have a fully dynamic interface, enabling dynamic, per-request config and support for environments such as Cloudflare where env is only available during the request lifecycle.

If you were previously using useAppConfig() and useRuntimeConfig() in an ambient context (outside of event handlers and composable functions, we highly recommend to migrate to the new API:

-- const appConfig = useAppConfig()

export default eventHandler(event => {
++ const appConfig = useAppConfig(event) 
})

See #1154 for more information.

Experimental Swagger and Open API support

Swagger and OpenAPI are de facto standard tools for documenting server API routes. You can now see all auto-generated API docs by enabling experimental.openAPI: true (nuxt: nitro.experimental.openAPI: true) and opening /_nitro/swagger UI.

See #1162 for more information.

We are working to bring route-level meta definition for an even better and more detailed docs generator.

New Documentation and Branding

Nitro docs and logo are live with a new fancier design at nitro.unjs.io


🚀 Enhancements

  • Add Cloudflare module worker support (#681)
  • vercel, netlify: Introduce isr route rule (#1124)
  • Add static preset (#1127)
  • Add vercel-static and netlify-static presets (#1073)
  • Add github-pages preset (#1133)
  • Pass resolved config to rollup:before hook (#1160)
  • Config reload support for nitro dev (#1173)
  • Config hmr support for routeRules and rutimeConfig (#1175)
  • Support dynamic app config and runtime config (#1154)
  • Experimental /_nitro/openapi.json and /_nitro/swagger for dev mode (#1162)
  • vercel: Add support for specifying edge regions (#1192)
  • future.nativeSWR (#1212)

🔥 Performance

  • Export defineNitroConfig from nitro/config (#1174)

🩹 Fixes

  • Separate typesDir from tsConfigDir (#1146)
  • cloudflare: Expose env from module context (#1147)
  • proxy: Append request query params for single proxy route rules (#1163)
  • vercel, netlify: Keep default behavior for static and swr to isr mapping (#1155)
  • Apply chunkFileNames on windows (#1189)
  • pkg: Allow installing on node v20 and above (#1204)

💅 Refactors

  • cli: Migrate to unjs/citty (#1157)
  • Move swagger and openapi behind experimental flag (2079cab)

📖 Documentation

  • Fix typo (#1131)
  • Update serverAssets example (#1156)
  • Add edge releases channel (2793f51)
  • get-started: H2 instead of h3 (ff3964e)
  • routing: Add route rules (46740e6)
  • routing: Add missing import (30675d4)
  • Fix syntax issue in guide > storage (#1180)
  • Update (1e5bb86)
  • Fix typo (#1185)
  • Fix typo (#1190)
  • vercel: Add vercel kv storage section (#1210)
  • Update branding (#1188)
  • Update vercel-storage (ffff9db)

✅ Tests

  • Enable vercel-edge test (7951532)

❤️ Contributors

v2.3.3

11 Apr 12:54
@pi0 pi0
Compare
Choose a tag to compare

compare changes

🚀 Enhancements

🩹 Fixes

  • prerender: Show generated routes with error in logs (8e06f2e)
  • prerender: Respect output path from main preset (#1114)

📖 Documentation

  • Fix typos in storage and cache guides (#1086)
  • Use unjs logo (#1104)
  • Fix typo in cachedEventHandler options (#1110)
  • Use consistent quotes in the routeRules example (#1108)
  • Fix typo in server assets mount point (#1119)
  • Improve publicAssets config details (#1102)
  • Fix small typo in plugin filename (#1081)

❤️ Contributors

v2.3.2

22 Mar 17:51
@pi0 pi0
fe3287c
Compare
Choose a tag to compare

compare changes

🩹 Fixes

  • Sanitize statusMessage of disallowed chars (#1057)
  • types: Sync vercel build config types (#1056)
  • azure: Support custom baseURL (#1062)
  • vercel-edge: Fix route generation (#1071)
  • Mark options.renderer as optional (#1069)
  • types: Make $Fetch types less complex (#1059)

💅 Refactors

  • Add type safety to auto-detected providers (#1072)

📖 Documentation

  • Fixed link path (#1053)
  • Fix typo (#1068)
  • routing: Add $fetch usage note (#1070)

❤️ Contributors

v2.3.1

13 Mar 22:49
@pi0 pi0
Compare
Choose a tag to compare

compare changes

🩹 Fixes

  • types: Don't simplify type of serialized return (#1050)

🏡 Chore

❤️ Contributors

v2.3.0

13 Mar 19:21
@pi0 pi0
Compare
Choose a tag to compare

compare changes

🚀 Enhancements

  • vercel: Add functions config (#976)
  • Add support for sourceMap values hidden and inline (#998)
  • lagon: Write .lagon/config.json on build (#996)
  • types: Type $fetch to match json serialization output (#1002)
  • Support base in useStorage(base?: string) and improve docs (#1012)
  • cloudflare-pages: Rewrite with module syntax (#1004)
  • Allow customising generated tsconfig path (#1021)
  • Support app config (#1022)

🩹 Fixes

  • cloudflare-pages: Only allow 100 rules combined (#973)
  • Only mock debug in production (#990)
  • Scan middleware and print tree list in ascending alphabetical order (#981)
  • externals: Correctly specify multiple external dependencies in package.json (#1013)
  • static: Use correct format for last modified (#1017)
  • cache: Remove rejected cache promise from pending list. (#995)
  • Expose useStorage with types (#1026)
  • prerender: Allow spaces in href value regex (#1030)
  • cache: Use stale value by default when swr is enabled (#1038)
  • Resolve types relative to custom tsconfig path (#1041)
  • Remove duplicate import in generated code (#1043)
  • types: Exclude non serializable options from route rules (#1047)

💅 Refactors

  • Use unimport built-in type gen for dirs (#994)
  • Split out api types (#1027)

📖 Documentation

  • Update to latest docus and various improvements (#975)
  • Up docus and add back ellipsis (38b1f34)
  • Remove tailwind module (b3b7e87)
  • lock: Update (7efa31f)
  • More improvements (#985)
  • Remove fluid layout (d83f2b6)
  • Update color (18674c5)
  • Add unjs icon in footer (6d36ceb)
  • Update docus (5fcc127)
  • Add button to open on CodeSandBox (ad120ac)
  • Update deployment example for configuration (#972)
  • Update dependencies (c923fed)
  • cache: Improve documentation and cachedFunction default options (#1011)
  • Improve readme and getting started (94d95fa)
  • Fix on mobile long path (1d2f57e)
  • Improvements (f78619f)
  • Add prerender.ignore description (#1032)
  • Improve configuration page (554b358)
  • Improve plugins section (f36a6e0)
  • Update readme (c58a764)
  • Update homepage hero (b848e5a)
  • Update meta tags (70f00e5)
  • More improvements (#1039)
  • Update docus version (f31240b)
  • Upgrade docus (a6ce587)
  • deploy/workers: Fix typo of bundle (#1046)

🏡 Chore

  • readme: Various improvements (#1009)
  • Fix tests (#1014)
  • docs: Use pnpm (39f117a)
  • Add autofix-ci action (8f9c3e2)
  • Remove old docs commands (#1042)
  • Update dependencies (02c48f2)
  • Maintain lockfile (ac81602)
  • Use single undici version for testing (00743bc)

❤️ Contributors

v2.2.3

01 Mar 23:28
@pi0 pi0
Compare
Choose a tag to compare

compare changes

🚀 Enhancements

  • Add lagon preset (#964)

🩹 Fixes

  • node-cluster: Default number of workers (#963)
  • cloudflare-pages: Exclude assets from function call (#965)
  • cloudflare-pages: Handle assets only for get requests (#968)
  • Render json errors for cors requests (#969)
  • Use json response for errors in /api/ routes (#971)

💅 Refactors

  • externals: Sort bundledDependencies keys in output package.json (#967)

📖 Documentation

  • cloudflare: Add info regarding runtimeConfig and environment variables (#958)
  • Prevent ellipsis overflow on small screens (#956)
  • deploy: Add workers page for edge limitations (#953)

🏡 Chore

  • cli: Mention prepare command in usage (#959)
  • Update dependencies (2658072)

❤️ Contributors

v2.2.2

01 Mar 23:28
@pi0 pi0
Compare
Choose a tag to compare

compare changes

🩹 Fixes

  • Correct access-control-allow-methods cors header name (#944)
  • Allow overriding assets maxAge using route rules (db6e6c2)
  • rollup: Use mlly as fallback resolver when externals disabled (#948)
  • Don't render json response if url contains /api/ (#951)

🏡 Chore

✅ Tests

  • vercel: Move custom test to additional tests (fb361f8)

❤️ Contributors

v2.2.1

01 Mar 23:28
@pi0 pi0
Compare
Choose a tag to compare

compare changes

🩹 Fixes

  • static: Remove cache-control headers when asset is not found (e3d57fc)
  • Avoid circular imports (#936)

🏡 Chore

❤️ Contributors

v2.2.0

08 Feb 22:00
@pi0 pi0
Compare
Choose a tag to compare

⭐ What is new?

  • Runtime proxy support using route rules (learn more)
  • Nested fetch calls with incoming headers and context in event context (learn more)
  • Binary and Raw storage operations support (learn more)
  • [Cloudflare] Exposed event.context.cf (learn more)
  • Built-in session support (learn more)

🚀 Enhancements

  • Support runtime proxy using route rules (#926)
  • cloudflare: cacheControl support for public assets with with maxAge (#922)
  • cloudflare: Expose event.context.cf (#927)
  • firebase: Use nodejs 18 as default runtime (#925)
  • Support event.fetch and event.$fetch (#930)
  • vercel: Auto-detect runtime version (#879)

🩹 Fixes

  • Apply cached rules to overlaping wildcard patterns (#906)
  • cloudflare: Use full mime db (#933)

❤️ Contributors

v2.1.0

08 Feb 21:59
@pi0 pi0
Compare
Choose a tag to compare

Check the changelog for release information.