Releases: nitrojs/nitro
v2.5.0
⭐ What is new?
- Type generics supported for
useStorage
anduseRuntimeConfig
and lots of more type safety enhancements across ecosystem - UnJS ecosystem packages upgraded to the latest versions with lots of bug fixes and enhancements
- With
h3@1.7.0
we are now experimenting response streaming support (Demo).
🚀 Enhancements
- Allow customising generated
tsConfig
(#1266) - Type
useRuntimeConfig
withNitroRuntimeConfig
(#1311) - Type nitro app runtime hooks (#1316)
- Add
cloudflare-pages-static
preset (#1310) - Add experimental
deno-server
preset (#592) - Add
flightcontrol
preset (#970, #1250) - Support
jsx
andtsx
out of the box (#1303) - Add support for
failOnError
(#1294) - Generic type support for
useStorage
(#1279) - Provide static
process.*
andimport.meta.*
build flags (#1331)
🩹 Fixes
- bun: Resolve internal dependencies with
bun
export condition (#1313) - deno: Support environment variables (88b4e11)
- Respect
static
flag when auto-detecting preset (#1321) - prerenderer: Don't inherit
static
config (#1324) - vercel: Add check for index route rule (#1290)
- Use
event.handled
guard before sending direct responses (#1326) - Import
NitroRuntimeHooks
from runtime dir (#1328) - Generate types for
#imports
(#1329)
📖 Documentation
- Update
docus
version (848c86a) - Update
cloudflare-pages
preset (#1304) - Add an example for
devHandlers
config (#1295)
❤️ Contributors
- Pooya Parsa (@pi0)
- 魔王少年 (@maou-shonen)
- Daniel Roe daniel@roe.dev
- Andrew mshote@gmail.com
- Estéban (@Barbapapazes)
- Dunqing (@Dunqing)
- Frantz Kati bahdcoder@gmail.com
- Mike Laumann Bellika
- Sébastien Chopin (@Atinux)
- Hebilicious (@Hebilicious)
- Michael J. Roberts (@michealroberts)
v2.4.1
⬆️ How to Upgrade?
- Make sure to recreate the lock file as well in order to receive all UnJS ecosystem updates.
- If you are using Nitro via Nuxt, simply use
npx nuxi@latest upgrade --force
.
🩹 Fixes
- pkg: Add
http-proxy
types to deps (#1213) - vercel-edge: Use platform provided
process
shim (392ce64) - netlify-edge: Update output format (41a4a6a)
- netlify-edge: Support environment variables (5c85c14)
- netlify-edge: Handle static asset urls (116874f)
- netlify-edge: Fix body handling (4c825b6)
- vercel-edge: Fix body handling (c75c2f1)
- deno, lagon, sw: Fix request body handling (1c88e5e)
- netlify-edge: Polyfill missing
x-forwarded-proto
header (4e5f46e)
🏡 Chore
- Update dependencies (c4fcd78)
❤️ Contributors
- Pooya Parsa (@pi0)
- Daniel Roe daniel@roe.dev
v2.4.0
⬆️ 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
andnetlify-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
andrutimeConfig
(#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
fromnitro/config
(#1174)
🩹 Fixes
- Separate
typesDir
fromtsConfigDir
(#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
andswr
toisr
mapping (#1155) - Apply
chunkFileNames
on windows (#1189) - pkg: Allow installing on node v20 and above (#1204)
💅 Refactors
📖 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
- Pooya Parsa (@pi0)
- Sébastien Chopin (@Atinux)
- Daniel Roe daniel@roe.dev
- AaronBeaudoin aaronjbeaudoin@gmail.com
- Oumar Barry (@oumarbarry)
- G-Cyrille
- 魔王少年 q267009886.work@gmail.com
- Iho Somnam ihosomnam4741@gmail.com
- Timhanlon tim@timhanlon.com
v2.3.3
🚀 Enhancements
- Upgrade to consola v3 (release notes)
🩹 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
- Pooya Parsa (@pi0)
- Gabriel Cipriano (@gabrielcipriano)
- Daniel Roe daniel@roe.dev
- Yassine El Ouazzani (@kwarkjes)
- Inesh Bose
- Andre Hammons
- Michael BOUVY michael.bouvy@gmail.com
v2.3.2
🩹 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
❤️ Contributors
- Mahdi Boomeri mahdi@boomeri.dev
- Daniel Roe daniel@roe.dev
- Shohei Maeda
- Lucas (@Draichi)
- Nobkd
- Honza Pobořil honza@poboril.cz
v2.3.1
🩹 Fixes
- types: Don't simplify type of serialized return (#1050)
🏡 Chore
- Add
codecov.yml
(6fe7f64)
❤️ Contributors
- Pooya Parsa (@pi0)
- Daniel Roe daniel@roe.dev
v2.3.0
🚀 Enhancements
- vercel: Add functions config (#976)
- Add support for
sourceMap
valueshidden
andinline
(#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
📖 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
- Pooya Parsa (@pi0)
- Daniel Roe daniel@roe.dev
- Felix De Montis hi@felix.dm
- Sébastien Chopin (@Atinux)
- Hannes Küttner kuettner.hannes@gmail.com
- Julie Saia
- Ted De Koning
- Jan Johansen nizopezo@gmail.com
- Tobias Diez code@tobiasdiez.com
- Elian ☕️ hello@elian.codes
- Mahdi Boomeri mahdi@boomeri.dev
- Anthony Fu anthonyfu117@hotmail.com
- Tom Lienard (@QuiiBz)
- Alex Korytskyi (@alex-key)
- Shohei Maeda
v2.2.3
🚀 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 outputpackage.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
❤️ Contributors
- Pooya Parsa (@pi0)
- Daniel Roe daniel@roe.dev
- Jan-Henrik Damaschke jdamaschke@outlook.de
- Bogdan Kostyuk bogdankostyuk12@gmail.com
- Hminghe (@hminghe)
- Alexander Lichter (@manniL)
v2.2.2
🩹 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
- Pooya Parsa pooya@pi0.io
- Daniel Roe daniel@roe.dev
v2.2.1
🩹 Fixes
- static: Remove
cache-control
headers when asset is not found (e3d57fc) - Avoid circular imports (#936)
🏡 Chore
- Update changelog (8dde296)
❤️ Contributors
- Pooya Parsa pyapar@gmail.com