Releases: nitrojs/nitro
v2.6.1
🩹 Fixes
- Correctly mark
middleware: false
for scanned routes (#1631) - Pass relative ignore paths when scanning public assets (#1632)
❤️ Contributors
- Pooya Parsa (@pi0)
- Daniel Roe [email protected]
v2.6.0
note
📰 Release article coming soon!
🚀 Enhancements
- storage: Default data storage for
node
and dev presets (#1352) - Support regexps in external options (#1388)
- Support
exportConditions
and add worker default conditions (#1401) event.waitUntil
with Cloudflare integration (#1421)experimental.typescriptBundlerResolution
flag (#1384)- Support
ignore
to ignore scanned files (#1430) - Allow ignoring public assets with
ignore
options (#945) - Add
iis
server preset (#1436) - Auto capture errors with
nitroApp.captureError
(#1463) - vercel: Enable streaming support out of the box (#1514)
- Fully resolve type paths for auto-import declarations (#1528)
- Add
prerender:config
,prerender:init
andprerender:done
hooks (#1519) - cache: Support cached event handlers with varies (#1184)
- app: Support
request
,beforeResponse
andafterResponse
hooks (#1545) - Experimental composition api via
useEvent()
ans async context support (#1546) - prerenderer: Support for query links exploration (#1474)
- cloudflare-pages: Add config to customize generated
_routes.json
(#1312) - firebase: Add support for 2nd generation functions (#1500)
- externals: Resolve actual subpaths before guessing (#527)
- externals: Support aliasing traced packages (#1553)
- wasm: Support output esm imports (#1565)
- Enable
timing
in debug mode (#1577) - prerender: Preserve prerendered asset
content-type
header (#1587) - externals: Improved output
package.json
(#1607) - firebase: Support renaming exported server function (#1377)
- azure: Support custom configuration (#1344)
- node-server: Support listening to unix sockets using
NITRO_UNIX_SOCKET
(#1201) - cloudflare-module, cloudflare-pages: Experimental dynamic imports (#1172)
- cli: Support
--preset
and--minify
/--no-minify
args forbuild
(#1621) - cli: Add listhen options for
dev
command (#1622) - Handle stream and
Uint8Array
for lambda presets (#1624)
🔥 Performance
- Use
fsLite
driver for productiondata:
storage (dd290763) - Use inline
http-graceful-shoutdown
to reduce externals (8053cca0) - Remove
source-map-support
as node supports--enable-source-maps
(9ba8fe98) - Bundle runtime dependencies (#1554)
- Use local fetch for proxy route rules (#1609)
🩹 Fixes
- rollup: Replace
globalThis.process.
withprocess.
(#1360) - types: Enable
allowSyntheticDefaultImports
option by default (#1383) - cache: Try to call
event.waitUntil
(#1422) - defineCachedFunction: Properly infer function type (#1423)
- static: Safe decode path (#1459)
- Split cookie headers (#1452)
- deno-deploy: Treat all
https://
modules as external (#1438) - cache: Call
event.waitUntil
on main resolver when expired (421d6255) - prerender: Skip redirects (#1448)
- aws-lambda,netlify: Base64 encode binary responses (#1274)
- app: Enable router preemptive mode (#1504)
- vercel: Allow arbitrary function configuration (#1508)
- Use relative paths in
tsconfig.json
(#1518) - prerender: Free up memory after each route is written to the disk (#1536)
- prerender: Call
prerender:route
before freeing up memory (#1537) - prerender: Only match
href
attribute after whitespace (#1530) - externals: Absolute paths are inlined (#1429)
- openapi: Merge handlers with same route and different method (#1497)
- prerender: Exclude encoded
href
attributes from link extraction (#1485) - externals: Increase score for npm package name patterns to avoid breaking changes (#1548)
- deno-deploy: Decode static asset path before reading from filesystem (#1494)
- Remove non-standard
module
export condition (#1559) - externals: Trace externals with their commonjs / esm status (#1562)
- Use relative paths in generated tsconfig (#1572)
- app: Use
event.path
instead ofevent.url
(41a76c0f) - cache: Don't use
_originalPath
(#1576) - types: Use relative type path to nitro
#internal/nitro
(#1584) - Disable sourcemap minify for dev (e38f3586)
- Use relative source map paths and add test (#1582)
- pkg: Remove node 14 from supported
engines
(#1585) - prerender: Use decoded asset id to access prerendered asset header overrides (#1588)
- Add
consola/core
alias (#1591) - vercel,netlify: Don't deprecate
swr
whencache: false
(#1603) - build: Workaround bun's difference in
function.toString()
(#1606) - firebase: Ignore
fsevent
dependency (#1610) - Directly pass
localFetch
to route rules handler (#1611) - stormkit: Properly send buffer responses (#1616)
- Add parent
node_modules
of nitro to modules dir for pnpm compat (#1618) - deno-server: Fix injections and enable back tests (#1625)
💅 Refactors
- cloudflare: Use
wrangler deploy
instead ofpublish
(#1372) - cloudflare: Use
wrangler deploy
in more places (#1393) - prerender: Improve console formatting for failed routes (#1471)
- Reduce usage of
event.node.req
(#1511) - Reduce usage of
event.node.res
(#1513) - timing: Hide debug logs with
0ms
(8a44d19c) - firebase: Update generated
package.json
(#1608) - Migrate from
http-proxy
tounjs/httpxy
(#1623)
📖 Documentation
- vercel: Add note about top level
api/
directory (#1386) - Add nitro plugins examples (#1403)
- Add custom preset instructions (#1409)
- aws: Add note about inlining dynamic chunks (#650)
- Fixed typo of the word
discussions
(#1433) - Fix typo (#1446)
- Use
defineEventHandler
instead ofeventHandler
(#1442) - Remove auto-imported
defineNitroConfig
(#1441) - Add
utils/
directory (#1451) - storage: Add runtime storage configuration examples ([#1456](https://github.com/unjs/nitro/pull/...
v2.5.2
🩹 Fixes
- Add
envPrefix
toruntimeConfig.nitro
types (#1336) - prerender: Allow to fetch static files (#1340)
- options: Default target to
static
whenstatic
override is set (#1342) - Correct default
node-server
target (7976318) - vercel, netlify: Always check
nativeSWR
future flag (ccebe4e) - vercel, netlify: Handle boolean values for route rule deprecation (dfd8bbd)
- Dedup
unstorage
dependency and use subpath alias (#1164) - dev: Ensure socket path is accessible (#1115)
- Type
event.$fetch
andevent.fetch
(#1343) - Allow configuring
esbuild
transform plugin (#1347)
📖 Documentation
- Add a reference to install Azure functions core tools to the swa section (#1339)
❤️ Contributors
- Pooya Parsa (@pi0)
- Daniel Roe [email protected]
- Stefan Bittmann [email protected]
- Nick Dawson
v2.5.1
📖 Documentation
- Fix typo in Flightcontrol deployment option (#1332)
📦 Build
- Avoid doubly-bundling runtime types (#1334)
🌊 Types
- Avoid overriding app runtime config namespace (#1333)
❤️ Contributors
- Daniel Roe [email protected]
- ModupeD
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
[email protected]
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 [email protected]
- Andrew [email protected]
- Estéban (@Barbapapazes)
- Dunqing (@Dunqing)
- Frantz Kati [email protected]
- 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 [email protected]
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 [email protected]
- AaronBeaudoin [email protected]
- Oumar Barry (@oumarbarry)
- G-Cyrille
- 魔王少年 [email protected]
- Iho Somnam [email protected]
- Timhanlon [email protected]
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 [email protected]
- Yassine El Ouazzani (@kwarkjes)
- Inesh Bose
- Andre Hammons
- Michael BOUVY [email protected]
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 [email protected]
- Daniel Roe [email protected]
- Shohei Maeda
- Lucas (@Draichi)
- Nobkd
- Honza Pobořil [email protected]
v2.3.1
🩹 Fixes
- types: Don't simplify type of serialized return (#1050)
🏡 Chore
- Add
codecov.yml
(6fe7f64)
❤️ Contributors
- Pooya Parsa (@pi0)
- Daniel Roe [email protected]