3.8.1 is a patch release focused on bug fixes and performance improvements.
👉 Changelog
🔥 Performance
- nuxt: Set
pages
on nuxt app and deduplicate calls (#24032) - nuxt: Remove pure annotations plugin (#24033)
- nuxt: Use granular imports for auto-importing composables (#23951)
🩹 Fixes
- nuxt: Ensure we add prerender hints to correct event (#23799)
- nuxt: Close payload object (#23817)
- schema: Accept single string for
extends
(#23795) - nuxt: Resolve internal
target: blank
links with base (#23751) - nuxt,schema: Use
std-env
to detect whether app is being tested (#23830) - nuxt: Use
.json
extension for server components (#23802) - nuxt: Handle relative baseURL in nitro runtime config (#23841)
- nuxt: Improve watcher logs slightly (#23857)
- nuxt: Resolve
@unhead/vue
in template code (#23858) - kit: Resolve module tsconfig paths relative to dirs (#23860)
- nuxt,schema,vite,webpack: Analyze w/o overriding config (#23856)
- nuxt: Don't use local fetch with an external
baseURL
(#23884) - nuxt: Only skip refetching errors when hydrating (#23889)
- webpack: Use lodash
cloneDeep
again (#23888) - nuxt: Init
$fetch
at entry start (#23906) - nuxt: Render a div when client-only hydrates w/o element (#23899)
- vite: Remove
postcss-url
and duplicatepostcss-import
(#23861) - nuxt: Use route key for loading indicator/view transition (#23868)
- nuxt: Unset
useCookie
value when it expires (#23549) - vite: Use
h3
cors handler for vite routes only (#23995) - schema: Correctly set default cssnano config (#23980)
- nuxt: Use payload url for isPrerendered, not current route (#24031)
- vite: Don't warm up css deps and normalise urls correctly (#23975)
- kit: Fix
addServerImportsDir
implementation (#24000) - nuxt: Preserve hyphens in component/layout kebab names (#23902)
- nuxt: Do not register loading indicator hooks on server (#24052)
- nuxt: Reload nitro when spa loading template updates (#24036)
- nuxt: Resolve imports from virtual files (#24022)
- vite: Include more of warmup within try/catch (#24072)
- nuxt: Use shared
isChangingPage
util in scrollBehavior (#24091) - nuxt: Account for delay ≤ 0 in
useCookie
(#24043) - nuxt: Handle async children in
ClientFallback
(#24086) - vite: Normalise entry id for
typeCheck
plugin (#24114)
💅 Refactors
- nuxt: Use
useRequestEvent()
internally (#23916)
📖 Documentation
- Add example of auto-importing components from npm package (#23792)
- Update minimum required Node version (#23821)
- getting-started: Add schema for server (6d0f45469)
- Fix typo in pnpm install command (#23851)
- Add missing comma (#23870)
- Add missing nitro hooks (#23865)
- Fix typo in layout description (#23862)
- Fix typo in runtime-config page (#23882)
- Fix typo (#23912)
- Fix typos (#23921)
- Rename 3.nuxt.config.md to 3.nuxt-config.md (#23819)
- composables: Avoid double read-more in useAppConfig (5fea17288)
- Skip View Transitions API route middleware on server (#23935)
- Clarify that bridge supports definePageMeta (#23944)
- Fix small typo in nuxt.config.ts documentation (#23961)
- Update link to composables doc (#23989)
- Add a more helpful comment (#23999)
- Fix
useFetch
key generation logic (#24082) - Fix typo (#24099)
- Fix imported
addPrerenderRoutes
name (#24102) - Improve router docs on nuxt-injected options (#24126)
🏡 Chore
- Revert pnpm upgrade (e297368ee)
✅ Tests
- nuxt: Test remote islands for
NuxtIsland
(#23801) - Update basic fixture config for vite 5 (#23859)
- Await before asserting console logs (#24051)
🤖 CI
❤️ Contributors
- Fabian B (@madebyfabian)
- Mehdi Lahlou (@medfreeman)
- Webfansplz (@webfansplz)
- Damian Głowala (@DamianGlowala)
- Andrey Yolkin (@AndreyYolkin)
- Vasilis Souvatzis (@vasisouv)
- Daniel Roe (@danielroe)
- Marco Solazzi (@dwightjack)
- NiJia Lin (@louis70109)
- Hugo Torzuoli (@HZooly)
- Mathieu ALBIN (@jaegar-wolf)
- Julien Huang (@huang-julien)
- Jaap Roes (@jaap3)
- Ryota Watanabe (@wattanx)
- Sébastien Chopin (@Atinux)
- Hossein-moghadam (@hosseinmoghaddam)
- Bastien Rossi (@bastienrossi)
- Ordago (@ordago)
- Jeffrey GONZALES (@jgonz3)
- Anthony Fu (@antfu)
- Leonard Mihalcea (@LeVoMihalcea)
- Paulo Pertierra (@paulo-pertierra)
- Conner (@connerblanton)
- KeJun (@KeJunMao)
- Bjorn Lu (@bluwy)
- Salman Khattak (@khattaksd)
- Luke Nelson (@luc122c)
- Jianqi Pan (@Jannchie)
- Matej Černý (@CernyMatej)