π Highlights
Please see the release notes for Nuxt v4.1 for full details on the features and fixes in Nuxt v3.19.
β Upgrading
As usual, our recommendation for upgrading is to run:
npx nuxt upgrade --dedupe
This will refresh your lockfile and pull in all the latest dependencies that Nuxt relies on, especially from the unjs ecosystem.
π Changelog
π Enhancements
- kit: Add
ignore
option toresolveFiles
(#32858) - kit: Add
onInstall
andonUpgrade
module hooks (#32397) - nuxt,vite: Add experimental support for
rolldown-vite
(#31812) - nuxt: Extract
defineRouteRules
to pagerules
property (#32897) - nuxt,vite: Use importmap to increase chunk stability (#33075)
- nuxt: Lazy hydration macros without auto-imports (#33037)
- kit,nuxt,schema: Allow modules to specify dependencies (#33063)
- kit,nuxt: Add
getLayerDirectories
util and refactor to use it (#33098)
π₯ Performance
- nuxt: Clear inline route rules cache when pages change (#32877)
- nuxt: Stop watching app manifest once a change has been detected (#32880)
π©Ή Fixes
- nuxt: Handle
satisfies
in page augmentation (#32902) - nuxt: Type response in
useFetch
hooks (#32891) - nuxt: Add TS parenthesis and as expression for page meta extraction (#32914)
- nuxt: Use correct unit thresholds for relative time (#32893)
- nuxt: Handle uncached current build manifests (#32913)
- kit: Resolve directories in
resolvePath
and normalize file extensions (#32857) - schema,vite: Bump
requestTimeout
+ allow configuration (#32874) - nuxt: Deep merge extracted route meta (#32887)
- nuxt: Do not expose app components until fully resolved (#32993)
- kit: Only exclude
node_modules/
if no customsrcDir
(#32987) - nuxt: Compare final matched routes when syncing
route
object (#32899) - nuxt: Make vue server warnings much less verbose in dev mode (#33018)
- schema: Allow disabling cssnano/autoprefixer postcss plugins (#33016)
- kit: Ensure local layers are prioritised alphabetically (#33030)
- kit,nuxt: Expose global types to vue compiler (#33026)
- nuxt: Support config type inference for
defineNuxtModule().with()
(#33081) - nuxt: Search for colliding names in route children (31a9282c2)
- nuxt: Delete
nuxtApp._runningTransition
on resolve (#33025) - nuxt: Add validation for nuxt island reviver key (#33069)
- kit: Prioritise local layers over extended layers (ae8b0d2b8)
- kit: Address merge conflict (89ccbbebb)
- kit: Do not resolve public dir aliases (5d87d3a80)
π Refactors
- nuxt: Simplify page segment parsing (#32901)
- nuxt: Remove unnecessary
async/await
inafterEach
(#32999) - vite: Simplify inline chunk iteration (9ea90fc33)
- kit,nuxt,ui-templates,vite: Address deprecations + improve regexp perf (#33093)
π Documentation
- Add a section about augmenting types with TS project references (#32843)
- Switch example to use vitest projects (#32863)
- Update testing
setupTimeout
and addteardownTimeout
(#32868) - Add middleware to layers guide (fa516d440)
- Add documentation for
--nightly
command (#32907) - Update package information in roadmap section (#32881)
- Add more info about nuxt spa loader element attributes (#32871)
- Correct filename in example (#33000)
- Add more information about using
useRoute
and accessing route in middleware (#33004) - Avoid variable shadowing in locale example (#33031)
π‘ Chore
- Remove stray test file (42fd247a4)
- Ignore webpagetest.org when scanning links (cb18f4960)
- Add
type: 'module'
in playground (#33099)
β Tests
- Add failing test for link component duplication (#32792)
- Simplify module hook tests (#32950)
- Refactor stubbing of
import.meta.dev
(#33023) - Use
findWorkspaceDir
rather than relative paths to repo root (c4c3ada96) - Improve router test for global transitions (7e6a6fc35)
- Use
expect.poll
(f4354203a) - Use
expect.poll
instead ofexpectWithPolling
(15ca5be95) - Use
vi.waitUntil
instead of custom retry logic (4c8c13090) - Update test for app creation (9a3b44515)
- Update bundle size snapshot (76988ce97)
π€ CI
- Remove double set of tests for docs prs (14c006ac4)
- Add workflow for discord team discussion threads (f14854fc3)
- Fix some syntax issues with discord + github integrations (c059f7cd1)
- Use token for adding issue to project (51661bac3)
- Use discord bot to create thread automatically (37f9eb27b)
- Only use discord bot (38ce2dcbb)
- Update format of discord message (0047b3059)
- Try bolding entire line (6e9f40eb9)
- Oops (8b044cad2)
- Add delay after adding each reaction (37b7e2108)
- Use last lts node version for testing (98719c065)
- Try npm trusted publisher (ea33502c3)
- Use npm trusted publisher for main releases (31a55437f)
- Change wording (#32979)
- Add github ai moderator (#33077)
β€οΈ Contributors
- Daniel Roe (@danielroe)
- abeer0 (@iiio2)
- Julien Huang (@huang-julien)
- kyumoon (@kyumoon)
- Alexander Lichter (@TheAlexLichter)
- Bobbie Goede (@BobbieGoede)
- mustafa60x (@mustafa60x)
- Matej ΔernΓ½ (@cernymatej)
- Alex Liu (@Mini-ghost)
- Amitav Chris Mostafa (@semibroiled)
- Romain Hamel (@romhml)
- Jacky Lam (@jackylamhk)
- Mukund Shah (@mukundshah)
- Luke Nelson (@luc122c)
- letianpailove (@letianpailove)
- Erwan Jugand (@erwanjugand)
- Alexander (@TheColorman)
- Ryota Watanabe (@wattanx)
- Yizack Rangel (@Yizack)