Skip to content

Releases: nuxt/fonts

v0.14.0

14 Feb 10:44
Immutable release. Only release title and notes can be modified.
95b332b

Choose a tag to compare

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, immutable headers, 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.css query 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

compare changes

🚀 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

  • Fix changelog workflow (#776)
  • Remove changelog (in favour of github releases) (25c87c4)

✅ Tests

  • Update snapshots for adobe preloads (035091a)

🤖 CI

  • Pin github actions to full-length commit shas (18e3ff7)

❤️ Contributors

v0.13.0

13 Feb 11:40
Immutable release. Only release title and notes can be modified.
2114bc9

Choose a tag to compare

👉 Changelog

compare changes

🚀 Enhancements

  • Add fonts:public-asset-context hook (#758)

🩹 Fixes

  • Use $fetch for 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

v0.12.1

07 Nov 11:41
01a37ca

Choose a tag to compare

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

compare changes

🏡 Chore

  • Update workspace version for devtools (#724)

❤️ Contributors

v0.12.0

06 Nov 23:47
f090b9f

Choose a tag to compare

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

compare changes

🔥 Performance

  • Implement plugin hook filter (#683)
  • Use code filter when processCSSVariables is disabled (509adfd)
  • Initialise providers in parallel with nuxt setup (#688)

🩹 Fixes

  • deps: ⚠️ Upgrade unifont (f0584d0)
  • ⚠️ Set default font weight to 400 700 (#658)

💅 Refactors

  • Extract core utilities in preparation for fontless (#627)
  • Use new fontless package (#645)
  • Use extendViteConfig to 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 nuxt over nuxi (#643)
  • Update tailwind separately (4bbca61)
  • Pin @types/node (cbc4215)
  • Prefer nuxt to nuxi (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

  • deps: ⚠️ Upgrade unifont (f0584d0)
  • ⚠️ Set default font weight to 400 700 (#658)

❤️ Contributors

v0.11.4

14 May 21:49
fd2c233

Choose a tag to compare

0.11.4 is a hotfix release to address a breaking change with variable fonts

👉 Changelog

compare changes

🩹 Fixes

  • deps: Revert unifont upgrade (76a8f0d)

❤️ Contributors

v0.11.3

09 May 14:45
cd9692a

Choose a tag to compare

0.11.3 is the next patch release.

Timetable: to be announced.

👉 Changelog

compare changes

🩹 Fixes

  • Respect custom baseURL in devtools (29cdb31)
  • Handle duplicate preloaded fonts correctly (3c3594c)
  • Register font middleware for storybook module (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

v0.11.2

24 Apr 20:28
9afd741

Choose a tag to compare

👉 Changelog

compare changes

🩹 Fixes

  • Deduplicate default weights, styles and subsets (#604)

📖 Documentation

  • Add config for use with UnoCSS Wind4 preset (#589)
  • Use tailwind v3 url (#596)

🏡 Chore

  • Add better-sqlite3 (e52c330)
  • Remove release script (2633ad8)
  • Use latest specifier for nuxt/fonts within repo (e6d716d)

✅ Tests

  • Update poppins snapshots (#605)

🤖 CI

  • Run pkg.pr.new on prs too (df3636f)

❤️ Contributors

v0.11.1

02 Apr 12:02
89851c3

Choose a tag to compare

👉 Changelog

compare changes

🩹 Fixes

  • Hash cached font file name (#564)
  • Trim font filename segment to 50 chars (#583)

📖 Documentation

  • Updates for processCSSVariables (#563)

🏡 Chore

  • Bump @nuxtjs/tailwindcss (30d4514)
  • Upgrade all deps, enable tailwind v4 tests + update snapshots (#584)

❤️ Contributors

v0.11.0

08 Mar 21:34
e2786f6

Choose a tag to compare

compare changes

🚀 Enhancements

  • devtools: Display font file size in devtools (#462)
  • Process CSS variables prefixed with --font by default (#515)

🔥 Performance

🩹 Fixes

  • Add consola to dependencies (afb3807)

📖 Documentation

  • Clarify that local provider does not load weights and styles as available automatically (#502)

📦 Build

  • ⚠️ Remove cjs outputs + use @nuxt/module-builder alpha (#428)

🏡 Chore

  • Move useFlatConfig out of experimental (775a2f0)
  • Move useFlatConfig out of experimental (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 shiki as devDependency (#519)

✅ Tests

  • Filter out manifest preload (d2b1c84)
  • Separate playgrounds for different css frameworks (#470)

🤖 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-builder alpha (#428)

❤️ Contributors

v0.10.3

05 Dec 13:44
efeb9c8

Choose a tag to compare

compare changes

🩹 Fixes

  • devtools: Re-broadcast all fonts when adding new ones (#405)
  • Parse nested CSS correctly (#384)

📖 Documentation

  • Add examples to local file lookup docs (#398)
  • Call out limited default font-weights (#399)
  • Update tailwind v4 example (#410)

🏡 Chore

  • Default bumpType to patch in changelog script (#402)

❤️ Contributors