Releases: nuxt/fonts
v0.14.0
0.14.0 is the next minor release.
🚨 Breaking changes
Default font format is now woff2 only
Font 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'.
Cache invalidation
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.
✨ Features
Resolve fonts from node_modules
A 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)
},
},
})Font format resolution
You can control which font formats are resolved via the new defaults.formats option:
export default defineNuxtConfig({
fonts: {
defaults: {
formats: ['woff2'], // default
},
},
})Provider-specific font family options
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 option
Configure whether font resolution errors should throw or warn:
export default defineNuxtConfig({
fonts: {
throwOnError: true, // default: false
},
})lightningcss support
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.
🩹 Fixes
- Prevent font flashes in development — The dev font proxy now returns
Cache-Control: public, max-age=31536000, immutableheaders, preventing font flashes during HMR on SSR frameworks. - Broader CSS file matching — Font family injection now matches additional CSS-like file patterns (Vue SFC
&lang.cssquery strings and inline style IDs), aligning with fontless behavior. - Adobe provider race condition — Fixed a race condition in the Adobe (Typekit) provider where concurrent font resolution could clear the font family map mid-flight, causing Adobe fonts to silently fail. (fix in unifont 0.7.4)
- Prioritize sliced woff2 over full ttf — When both formats are available, woff2 subsets are now correctly prioritized over full ttf files. (fix in unifont 0.7.2)
- Bunny provider subset filtering — The Bunny font provider now correctly filters by subsets. (fix in unifont 0.7.0)
👉 Changelog
🚀 Enhancements
- Upgrade to the latest versions fontless + unifont (3d634b0)
- Support lightningcss transforms (171c9a4)
- Add support for resolving fonts from local
node_modules(#781)
🩹 Fixes
- Prevent font flashes in development (0ec437e)
- Include more css-ish files when injecting font-families (6e8e343)
- deps: Bump unifont + reenable adobe tests (9d7715d)
📖 Documentation
- Add nuxt.care health badge (8f0a978)
🏡 Chore
✅ Tests
- Update snapshots for adobe preloads (035091a)
🤖 CI
- Pin github actions to full-length commit shas (18e3ff7)
❤️ Contributors
- Daniel Roe (@danielroe)
- Bjorn Lu (@bluwy)
v0.13.0
👉 Changelog
🚀 Enhancements
- Add
fonts:public-asset-contexthook (#758)
🩹 Fixes
- Use
$fetchfor proxy support when downloading fonts (#732)
📖 Documentation
- Fix Nuxt badge icon (#742)
🏡 Chore
- Update pnpm to 10.21 and enable trust policy (7b25049)
- Revert pnpm trust policy and restore provenance action (6d16adb)
- Include .nuxt types + migrate to ts projects (2daad4e)
🤖 CI
- Use new dependency review shared workflow (635bc79)
- Use correct var (25b8fa1)
- Try pinning to a commit hash (f40c07c)
- Pass base-ref + head-ref to reusable workflow (e8ffe84)
- Update name + hash (8d1165b)
- Simplify (08b8fcb)
❤️ Contributors
- Daniel Roe (@danielroe)
- Harlan Wilton (@harlan-zw)
- IO-Fire (@IO-Fire)
- Luke Nelson (@luc122c)
v0.12.1
0.12.1 is the next patch release.
This is a rerelease of 0.12.0, which encountered an issue in the publishing process. See release notes for v0.12.0.
👉 Changelog
🏡 Chore
- Update workspace version for devtools (#724)
❤️ Contributors
- Alexandru Teodor (@alexieremia)
v0.12.0
0.12.0 is the next major release.
👀 Highlights
There are a few breaking changes here, including major upgrades in unifont, fontaine + moving to a new fontless abstraction, setting default font weight, and more.
A visual check on upgrade is important - and let me know if you encounter any issues.
👉 Changelog
🔥 Performance
- Implement plugin hook filter (#683)
- Use code filter when
processCSSVariablesis disabled (509adfd) - Initialise providers in parallel with nuxt setup (#688)
🩹 Fixes
💅 Refactors
- Extract core utilities in preparation for
fontless(#627) - Use new
fontlesspackage (#645) - Use
extendViteConfigto set up devtools (05212ff)
📖 Documentation
- Add callout for variable font weight (#635)
- Add Installation section (#677)
- Refactor using docus (#679)
- Add warning note about font-family in template (78bbb42)
- Upgrade to docus v5 (#697)
🏡 Chore
- Prefer
nuxtovernuxi(#643) - Update tailwind separately (4bbca61)
- Pin
@types/node(cbc4215) - Prefer
nuxttonuxi(68f0ea9) - Prefer nuxt over nuxi (dea205c)
- deps-dev: Bump vite from 7.1.9 to 7.1.11 in the npm_and_yarn group across 1 directory (#710)
✅ Tests
- Allow for global font to be inlined in v4+ (934c71c)
- Inline global styles for test suite (56d8f51)
- Add test for css variable processing (#719)
🤖 CI
- Remove forced corepack installation (6b1c7bf)
- Bump to lts node versions (5a43a2d)
- Do not fail fast in matrix (ff92f48)
- Run tests on node 20 (873beb4)
- Use npm trusted publishing (db9e7d7)
- Always publish via pkg-pr-new (6f07c42)
- Add provenance action to check for downgrades in provenance (22dce94)
⚠️ Breaking Changes
❤️ Contributors
- Daniel Roe (@danielroe)
- Alexandru Teodor (@alexieremia)
- dependabot[bot] (@dependabot[bot])
- Baptiste Leproux (@larbish)
- Tom Tang (@qwerzl)
- Chad Adams (@cadamsdev)
v0.11.4
0.11.4 is a hotfix release to address a breaking change with variable fonts
👉 Changelog
🩹 Fixes
- deps: Revert
unifontupgrade (76a8f0d)
❤️ Contributors
- Daniel Roe (@danielroe)
v0.11.3
0.11.3 is the next patch release.
Timetable: to be announced.
👉 Changelog
🩹 Fixes
- Respect custom
baseURLin devtools (29cdb31) - Handle duplicate preloaded fonts correctly (3c3594c)
- Register font middleware for
storybookmodule (db5fbf1) - Only preload top priority fonts (#617)
🏡 Chore
- deps-dev: Bump vite from 6.2.6 to 6.2.7 in the npm_and_yarn group across 1 directory (#611)
- Unpin vite version (83fe597)
- Dedupe + upgrade vite (9d78888)
❤️ Contributors
- Daniel Roe (@danielroe)
- dependabot[bot] (@dependabot[bot])
v0.11.2
👉 Changelog
🩹 Fixes
- Deduplicate default weights, styles and subsets (#604)
📖 Documentation
🏡 Chore
- Add better-sqlite3 (e52c330)
- Remove release script (2633ad8)
- Use
latestspecifier for nuxt/fonts within repo (e6d716d)
✅ Tests
- Update poppins snapshots (#605)
🤖 CI
- Run pkg.pr.new on prs too (df3636f)
❤️ Contributors
- Guillaume Chau (@Akryum)
- Daniel Roe (@danielroe)
- Ezra Ashenafi (@Eazash)
- Joe Paolicelli (@joepaolicelli)
v0.11.1
👉 Changelog
🩹 Fixes
📖 Documentation
- Updates for
processCSSVariables(#563)
🏡 Chore
- Bump
@nuxtjs/tailwindcss(30d4514) - Upgrade all deps, enable tailwind v4 tests + update snapshots (#584)
❤️ Contributors
- Daniel Roe (@danielroe)
- Felix Gabler (@felixgabler)
- Thomas Deinhamer (@thasmo)
- Tom Tang (@qwerzl)
v0.11.0
🚀 Enhancements
- devtools: Display font file size in devtools (#462)
- Process CSS variables prefixed with
--fontby default (#515)
🔥 Performance
- Drop
chalkdependency (7350140)
🩹 Fixes
- Add
consolato dependencies (afb3807)
📖 Documentation
- Clarify that local provider does not load weights and styles as available automatically (#502)
📦 Build
⚠️ Remove cjs outputs + use@nuxt/module-builderalpha (#428)
🏡 Chore
- Move
useFlatConfigout ofexperimental(775a2f0) - Move
useFlatConfigout ofexperimental(27b011a) - Remove superfluous check (220ebbb)
- deps-dev: Bump vite from 6.0.7 to 6.0.9 in the npm_and_yarn group across 1 directory (#463)
- Remove legacy types file (3b50f81)
- Remove cjs output (0e417e0)
- Remove
shikias devDependency (#519)
✅ Tests
🤖 CI
- Release via pkg.pr.new (ad00403)
- Move pkg.pr.new step to release workflow (656866d)
- Force latest corepack (c1f2889)
⚠️ Breaking Changes
⚠️ Remove cjs outputs + use@nuxt/module-builderalpha (#428)
❤️ Contributors
- Tom Tang (@qwerzl)
- Daniel Roe (@danielroe)
- Jonas Schade (@DerZade)
v0.10.3
🩹 Fixes
📖 Documentation
- Add examples to local file lookup docs (#398)
- Call out limited default font-weights (#399)
- Update tailwind v4 example (#410)
🏡 Chore
- Default
bumpTypeto patch in changelog script (#402)
❤️ Contributors
- Max (@onmax)
- Wayne Gibson (@waynegibson)
- Rijk Van Zanten (@rijkvanzanten)
- Daniel Roe (@danielroe)