🚀 Enhancements
- Make features configurable (#246)
🩹 Fixes
- Revert unocss config (#250)
🏡 Chore
- Use npmx.dev links (#249)
✅ Tests
- Patch test-utils and force dev mode (#248)
❤️ Contributors
- Julien Huang (@huang-julien)
syntax error with datetime fields and standardize date/datetime formats - by @maximepvrt in https://github.com/nuxt/content/issues/3698 (eb9f8)contentHeading === false - by @farnabaz in https://github.com/nuxt/content/issues/3725 (f5a46)import(variableName) pattern - by @larbish in https://github.com/nuxt/content/issues/3733 (89c0b)prompts with @clack/prompts - by @KazariEX in https://github.com/nuxt/devtools/issues/935 (1aa3d)@nuxt/schema - by @danielroe in https://github.com/nuxt/scripts/issues/600 (1addd)The Theme component lets you override the theme of all child components without modifying each one individually. Pass an object to the ui prop where keys are component names and values are their slot class overrides:
<UTheme
:ui="{
button: {
base: 'rounded-full'
},
input: {
base: 'rounded-full'
}
}"
>
<UButton label="Button" color="neutral" variant="outline" />
<UInput placeholder="Search..." />
</UTheme>
The Theme component doesn't render any HTML element. It uses Vue's
provide/injectunder the hood, so overrides propagate through the entire component tree regardless of nesting depth. Theme components can be nested (innermost wins) and theuiprop on individual components always takes priority.
Thanks to Tailwind CSS v4.2, four new neutral color options are now available: taupe, mauve, mist and olive. Configure them through the ui.neutral option in your app.config.ts.
The Toaster now automatically prevents duplicate toasts and displays a pulse animation when a duplicate is triggered, providing a cleaner notification experience: https://ui.nuxt.com/docs/components/toast#deduplicated-toasts
https://github.com/user-attachments/assets/e356affa-d170-4b7e-8a80-217132ee88e1
autoClose prop (#6089) (2663deb)nested / nestedOptions props and emit hover event (#5960) (ed60193)horizontal orientation (#5682) (f46b504)chip in items (#6064) (401a2c0)skipMeasurement virtualize option (#5721) (548b711)outline and subtle variants (94b0c31)ImgHTMLAttributes type for image prop (#6007) (0185856)data-state conflict when used inside Tooltip (2bb1a8b), closes #3599update:modelValue emit type (#5927) (64d2e88)fixed prop to prevent responsive text size reduction (#6074) (8f5f44c)char prop as mention prefix instead of always @ (0b9b097), closes #6035size to buttons (1ec1698), closes #5958cssLayer option from components to base (#6076) (e8bc322)by prop (14dceaf)shallowRef when watch deep is disabled (#6023) (bc06ce2)update to keep toast open and reset duration (82afa0a)DotPathKeys accuracy and GetItemKeys performance (#6077) (6f7af3e)Full Changelog: https://github.com/nuxt/ui/compare/v4.4.0...v4.5.0
0.14.0 is the next minor release.
woff2 onlyFont providers previously returned multiple formats (woff2, woff, truetype, etc.). The default behavior now only resolves woff2 fonts, which is supported by all modern browsers.
Your @font-face declarations will typically have fewer src entries, reducing CSS size. In most cases this is a transparent improvement.
To restore the previous behavior or add additional formats:
export default defineNuxtConfig({
fonts: {
defaults: {
formats: ['woff2', 'woff', 'ttf'],
},
},
})
Available values: 'woff2', 'woff', 'ttf', 'otf', 'eot'.
Font metadata caches are now isolated per provider and per provider options. After upgrading, your font metadata cache (node_modules/.cache/nuxt/fonts/) will be invalidated and fonts will be re-fetched on the next build. This is a one-time occurrence.
node_modulesA new built-in npm provider can resolve fonts installed as npm packages. If no other provider matches a font family, @nuxt/fonts will now attempt to find it in your node_modules via CDN metadata.
export default defineNuxtConfig({
fonts: {
npm: {
// options for the npm provider (optional)
},
},
})
You can control which font formats are resolved via the new defaults.formats option:
export default defineNuxtConfig({
fonts: {
defaults: {
formats: ['woff2'], // default
},
},
})
You can now pass provider-specific options when configuring individual font families:
export default defineNuxtConfig({
fonts: {
families: [
{
name: 'My Font',
provider: 'google',
providerOptions: {
google: {
// provider-specific options for this family
},
},
},
],
},
})
throwOnError optionConfigure whether font resolution errors should throw or warn:
export default defineNuxtConfig({
fonts: {
throwOnError: true, // default: false
},
})
If your Nuxt project uses Vite's lightningcss mode for CSS processing (for example, if you're using rolldown-vite!), injected @font-face declarations are now minified with lightningcss instead of esbuild.
Cache-Control: public, max-age=31536000, immutable headers, preventing font flashes during HMR on SSR frameworks.&lang.css query strings and inline style IDs), aligning with fontless behavior.node_modules (#781)fonts:public-asset-context hook (#758)$fetch for proxy support when downloading fonts (#732)devtools:initialized hook after all modules run - by @danielroe in https://github.com/nuxt/devtools/issues/919 (36628)@eslint/js, fix #647 - by @antfu in https://github.com/nuxt/eslint/issues/647 (2c1c1)4.3.1 is a regularly scheduled patch release.
x-nitro-prerender header (#34202)server/ for builder:watch hook (#34208)error.message for fatal errors (#34226)#app barrel export in keyed functions (#34199)datetime in nuxt/schema (#34255)meta.name (#34263)#components import mapping conflict for packages outside rootDir (#34139)nuxt/schema once more (552bbd8d1)genObjectKey to omit unnecessary quotes (#34245)ComponentProps helper to extract layout props (#34248)nitroAutoImports (#34182)#server and rootDir (#34259)keyedComposables (#34201)<NuxtPage> navigation (048efc030)3.21.1 is a regularly schedule patch release.
server/ for builder:watch hook (#34208)x-nitro-prerender header (#34202)error.message for fatal errors (#34226)#app barrel export in keyed functions (#34199)datetime in nuxt/schema (#34255)meta.name (#34263)#components import mapping conflict for packages outside rootDir (#34139)nuxt/schema once more (9f5bb611d)genObjectKey to omit unnecessary quotes (#34245)ComponentProps helper to extract layout props (#34248)keyedComposables (#34201)<NuxtPage> navigation (707a9dc44)