---
title: "Unhead Release Notes · Unhead"
canonical_url: "https://unhead.unjs.io/releases"
last_updated: "2026-09-07T09:15:41.567Z"
meta:
  description: "Follow stable and pre-release versions of Unhead, including fixes, features, and upgrade details."
  "og:description": "Follow stable and pre-release versions of Unhead, including fixes, features, and upgrade details."
  "og:title": "Unhead Release Notes"
---

Home

`
Unhead on GitHub

# **Release Notes **

Last fetched: just now.

See [GitHub Releases](https://github.com/unjs/unhead/releases) for realtime updates.

- 2 days ago [<h2>v 3.4.**2**** Latest release **</h2>Release v3.4.2](https://github.com/unjs/unhead/releases/tag/v3.4.2) ###    🐞 Bug Fixes
  - **devtools**:
    - Register the runtime plugin only once  -  by @Noumenon-ai and **Noumenon-ai** in [**~~https://github.com/unjs/unhead/issues/990~~**](https://github.com/unjs/unhead/issues/990) [`(de2d3)`](https://github.com/unjs/unhead/commit/de2d35d7)
  - **react**:
    - Keep initial head tags in the streamed shell  -  by @harlan-zw in [**~~https://github.com/unjs/unhead/issues/980~~**](https://github.com/unjs/unhead/issues/980) [`(bfd3f)`](https://github.com/unjs/unhead/commit/bfd3f3f7)
  - **schema-org**:
    - Read useSeoMeta description and og:image  -  by @harlan-zw in [**~~https://github.com/unjs/unhead/issues/991~~**](https://github.com/unjs/unhead/issues/991) [`(d4dc0)`](https://github.com/unjs/unhead/commit/d4dc07b0)
    - Let the canonical link set the graph url  -  by @harlan-zw in [**~~https://github.com/unjs/unhead/issues/993~~**](https://github.com/unjs/unhead/issues/993) [`(1cf07)`](https://github.com/unjs/unhead/commit/1cf07994)
  - **stream**:
    - Preserve body tags and request script nonces  -  by @harlan-zw in [**~~https://github.com/unjs/unhead/issues/981~~**](https://github.com/unjs/unhead/issues/981) [`(6f0f6)`](https://github.com/unjs/unhead/commit/6f0f68dc)

  [**~~View changes on GitHub~~**](https://github.com/unjs/unhead/compare/v3.4.1...v3.4.2) [**View on GitHub **](https://github.com/unjs/unhead/releases/tag/v3.4.2)
- 2 weeks ago [<h2>v 3.4.**1**</h2>Release v3.4.1](https://github.com/unjs/unhead/releases/tag/v3.4.1) ###    🐞 Bug Fixes
  - **bundler**:
    - Inject resolved path for devtools runtime plugin  -  by @danielroe in [**~~https://github.com/unjs/unhead/issues/974~~**](https://github.com/unjs/unhead/issues/974) [`(fe51f)`](https://github.com/unjs/unhead/commit/fe51fa59)
    - Render devtools payload after validation  -  by @harlan-zw in [**~~https://github.com/unjs/unhead/issues/985~~**](https://github.com/unjs/unhead/issues/985) [`(e740a)`](https://github.com/unjs/unhead/commit/e740a217)
  - **unhead**:
    - Handle relative useScript warmup URLs  -  by @lprnmns in [**~~https://github.com/unjs/unhead/issues/973~~**](https://github.com/unjs/unhead/issues/973) [`(bb4cb)`](https://github.com/unjs/unhead/commit/bb4cb67a)
    - Resolve HTTP-prefixed relative canonical URLs  -  by @lprnmns in [**~~https://github.com/unjs/unhead/issues/977~~**](https://github.com/unjs/unhead/issues/977) [`(270a9)`](https://github.com/unjs/unhead/commit/270a969f)
  - **validate**:
    - Reduce warnings for normal Nuxt output  -  by @harlan-zw in [**~~https://github.com/unjs/unhead/issues/986~~**](https://github.com/unjs/unhead/issues/986) [`(ef346)`](https://github.com/unjs/unhead/commit/ef3463e1)
  - **vite,stream**:
    - Support manifest-mode `**transformIndexHtml()**`  -  by @harlan-zw in [**~~https://github.com/unjs/unhead/issues/970~~**](https://github.com/unjs/unhead/issues/970) [`(237d7)`](https://github.com/unjs/unhead/commit/237d7f3a)

  [**~~View changes on GitHub~~**](https://github.com/unjs/unhead/compare/v3.4.0...v3.4.1) [**View on GitHub **](https://github.com/unjs/unhead/releases/tag/v3.4.1)
- last month [<h2>v 3.**4.0**</h2>Release v3.4.0](https://github.com/unjs/unhead/releases/tag/v3.4.0) ###    🚀 Features
  - **stream**:
    - Render Streamed Body Tags before body close  -  by @harlan-zw in [**~~https://github.com/unjs/unhead/issues/960~~**](https://github.com/unjs/unhead/issues/960) [`(d253b)`](https://github.com/unjs/unhead/commit/d253b54a)
  - **validate**:
    - Flag streamed head tags that bots never see  -  by @harlan-zw in [**~~https://github.com/unjs/unhead/issues/947~~**](https://github.com/unjs/unhead/issues/947) [`(18a55)`](https://github.com/unjs/unhead/commit/18a55c1e)
    - Scope an instance with only and key  -  by @harlan-zw in [**~~https://github.com/unjs/unhead/issues/955~~**](https://github.com/unjs/unhead/issues/955) [`(aff26)`](https://github.com/unjs/unhead/commit/aff263c0) ###    🐞 Bug Fixes
  - **bundler**:
    - Transform .mts, .cts, and IDs with queries  -  by @harlan-zw in [**~~https://github.com/unjs/unhead/issues/946~~**](https://github.com/unjs/unhead/issues/946) [`(7206e)`](https://github.com/unjs/unhead/commit/7206eceb)
  - **schema-org**:
    - Input no-op, primaryImageOfPage opt-out, types  -  by @harlan-zw in [**~~https://github.com/unjs/unhead/issues/965~~**](https://github.com/unjs/unhead/issues/965) [`(6b307)`](https://github.com/unjs/unhead/commit/6b307ec7)
  - **stream**:
    - Module mode lost every streamed head tag  -  by @harlan-zw in [**~~https://github.com/unjs/unhead/issues/950~~**](https://github.com/unjs/unhead/issues/950) [`(e5f5c)`](https://github.com/unjs/unhead/commit/e5f5c386)
    - Stop the bootstrap clobbering an installed head  -  by @harlan-zw in [**~~https://github.com/unjs/unhead/issues/958~~**](https://github.com/unjs/unhead/issues/958) [`(0cec3)`](https://github.com/unjs/unhead/commit/0cec3456)
    - Stop wrapStream dropping late head entries  -  by @harlan-zw in [**~~https://github.com/unjs/unhead/issues/954~~**](https://github.com/unjs/unhead/issues/954) [`(791f0)`](https://github.com/unjs/unhead/commit/791f03d2)
    - Drop the hydration lock that swallowed early pushes  -  by @harlan-zw in [**~~https://github.com/unjs/unhead/issues/949~~**](https://github.com/unjs/unhead/issues/949) [`(44447)`](https://github.com/unjs/unhead/commit/4444735f) ###    🏎 Performance
  - **stream**: Render once per chunk, not once per entry  -  by @harlan-zw in [**~~https://github.com/unjs/unhead/issues/948~~**](https://github.com/unjs/unhead/issues/948) [`(4a98c)`](https://github.com/unjs/unhead/commit/4a98cace)

  [**~~View changes on GitHub~~**](https://github.com/unjs/unhead/compare/v3.3.2...v3.4.0) [**View on GitHub **](https://github.com/unjs/unhead/releases/tag/v3.4.0)
- 2 months ago [<h2>v 3.3.**2**</h2>Release v3.3.2](https://github.com/unjs/unhead/releases/tag/v3.3.2) ###    🐞 Bug Fixes
  - Type origin-trial meta directive  -  by @harlan-zw in [**~~https://github.com/unjs/unhead/issues/932~~**](https://github.com/unjs/unhead/issues/932) [`(3cdea)`](https://github.com/unjs/unhead/commit/3cdeae3e)
  - **devtools**: Connect bridge through RPC client  -  by @harlan-zw in [**~~https://github.com/unjs/unhead/issues/942~~**](https://github.com/unjs/unhead/issues/942) [`(29d10)`](https://github.com/unjs/unhead/commit/29d105a0)
  - **schema-org**: Limit identity `**about**` links to homepage  -  by @harlan-zw in [**~~https://github.com/unjs/unhead/issues/933~~**](https://github.com/unjs/unhead/issues/933) [`(430b1)`](https://github.com/unjs/unhead/commit/430b1955) ###    🏎 Performance
  - Keep runtime minification linear  -  by @harlan-zw in [**~~https://github.com/unjs/unhead/issues/935~~**](https://github.com/unjs/unhead/issues/935) [`(1eadd)`](https://github.com/unjs/unhead/commit/1eadd39d)
  - Reduce client and server bundle size  -  by @harlan-zw [`(945d9)`](https://github.com/unjs/unhead/commit/945d9734)
  - Trim shared client and server code  -  by @harlan-zw in [**~~https://github.com/unjs/unhead/issues/941~~**](https://github.com/unjs/unhead/issues/941) [`(75432)`](https://github.com/unjs/unhead/commit/75432565)
  - **unhead**:
    - Defer promise walk allocations  -  by @harlan-zw in [**~~https://github.com/unjs/unhead/issues/936~~**](https://github.com/unjs/unhead/issues/936) [`(8f887)`](https://github.com/unjs/unhead/commit/8f887629)
    - Skip template parsing without tokens  -  by @harlan-zw in [**~~https://github.com/unjs/unhead/issues/937~~**](https://github.com/unjs/unhead/issues/937) [`(eaad4)`](https://github.com/unjs/unhead/commit/eaad428b)

  [**~~View changes on GitHub~~**](https://github.com/unjs/unhead/compare/v3.3.1...v3.3.2) [**View on GitHub **](https://github.com/unjs/unhead/releases/tag/v3.3.2)
- 2 months ago [<h2>v 3.3.**1**</h2>Release v3.3.1](https://github.com/unjs/unhead/releases/tag/v3.3.1) ###    🐞 Bug Fixes
  - **scripts**: Support source-less SDK loaders  -  by @harlan-zw in [**~~https://github.com/unjs/unhead/issues/858~~**](https://github.com/unjs/unhead/issues/858) [`(36dcf)`](https://github.com/unjs/unhead/commit/36dcf318)

  [**~~View changes on GitHub~~**](https://github.com/unjs/unhead/compare/v3.3.0...v3.3.1) [**View on GitHub **](https://github.com/unjs/unhead/releases/tag/v3.3.1)
- 2 months ago [<h2>v 2.1.**17**</h2>Release v2.1.17](https://github.com/unjs/unhead/releases/tag/v2.1.17) ###    🐞 Bug Fixes
  - **react**:
    - Support value in v2 client provider  -  by @harlan-zw in [**~~https://github.com/unjs/unhead/issues/902~~**](https://github.com/unjs/unhead/issues/902) [`(fd875)`](https://github.com/unjs/unhead/commit/fd875350)
  - **types**:
    - Narrow unpackMeta return type  -  by @harlan-zw in [**~~https://github.com/unjs/unhead/issues/890~~**](https://github.com/unjs/unhead/issues/890) [`(e673d)`](https://github.com/unjs/unhead/commit/e673dcb3)
  - **unhead**:
    - Force client mode during SSR  -  by @harlan-zw in [**~~https://github.com/unjs/unhead/issues/900~~**](https://github.com/unjs/unhead/issues/900) [`(9ad44)`](https://github.com/unjs/unhead/commit/9ad444e9)
    - Preserve numeric zero head content  -  by @harlan-zw in [**~~https://github.com/unjs/unhead/issues/887~~**](https://github.com/unjs/unhead/issues/887) [`(d9afa)`](https://github.com/unjs/unhead/commit/d9afaec4)
    - Dedupe scalar Twitter meta tags  -  by @harlan-zw in [**~~https://github.com/unjs/unhead/issues/903~~**](https://github.com/unjs/unhead/issues/903) [`(629d0)`](https://github.com/unjs/unhead/commit/629d070f)
  - **v2**:
    - Align React Head JSX behavior  -  by @harlan-zw in [**~~https://github.com/unjs/unhead/issues/896~~**](https://github.com/unjs/unhead/issues/896) [`(ff70b)`](https://github.com/unjs/unhead/commit/ff70b9a5)
    - Correct schema organization resolution  -  by @harlan-zw in [**~~https://github.com/unjs/unhead/issues/929~~**](https://github.com/unjs/unhead/issues/929) [`(54690)`](https://github.com/unjs/unhead/commit/546905de)
    - Harden framework lifecycles  -  by @harlan-zw in [**~~https://github.com/unjs/unhead/issues/928~~**](https://github.com/unjs/unhead/issues/928) [`(e6372)`](https://github.com/unjs/unhead/commit/e6372bc7)
    - Stabilize useScript lifecycle  -  by @harlan-zw in [**~~https://github.com/unjs/unhead/issues/927~~**](https://github.com/unjs/unhead/issues/927) [`(070e1)`](https://github.com/unjs/unhead/commit/070e1a0b)
    - Harden head input rendering  -  by @harlan-zw in [**~~https://github.com/unjs/unhead/issues/926~~**](https://github.com/unjs/unhead/issues/926) [`(6b891)`](https://github.com/unjs/unhead/commit/6b891e73) ###    🏎 Performance
  - **v2**: Reduce resolver allocations  -  by @harlan-zw in [**~~https://github.com/unjs/unhead/issues/930~~**](https://github.com/unjs/unhead/issues/930) [`(bba1f)`](https://github.com/unjs/unhead/commit/bba1f3b0)

  [**~~View changes on GitHub~~**](https://github.com/unjs/unhead/compare/v2.1.16...v2.1.17) [**View on GitHub **](https://github.com/unjs/unhead/releases/tag/v2.1.17)
- 2 months ago [<h2>v 3.**3.0**</h2>Release v3.3.0](https://github.com/unjs/unhead/releases/tag/v3.3.0)

  Projects using the Unhead Bundler with Vite 6 or 7, webpack, Rspack, Rollup, or another build without Rolldown no longer receive `**oxc-parser**` from `**@unhead/bundler**`. Builds that use Unhead transforms must install it directly. ### 📝 Migration

  ```
  pnpm add -D oxc-parser
  ```

  Runtime-only Unhead projects and builds with Rolldown installed need no change. ###    🚨 Breaking Changes
  - **bundler**: Make oxc-parser an optional peer  -  by @danielroe in [**~~https://github.com/unjs/unhead/issues/923~~**](https://github.com/unjs/unhead/issues/923) [`(7acca)`](https://github.com/unjs/unhead/commit/7acca68b) ###    🚀 Features
  - **bundler**: Transpile static inline scripts for Vite targets  -  by @harlan-zw in [**~~https://github.com/unjs/unhead/issues/862~~**](https://github.com/unjs/unhead/issues/862) [`(cb7d0)`](https://github.com/unjs/unhead/commit/cb7d0b0f)
  - **validate**: Warn on deprecated Twitter metadata  -  by @harlan-zw in [**~~https://github.com/unjs/unhead/issues/910~~**](https://github.com/unjs/unhead/issues/910) [`(68a50)`](https://github.com/unjs/unhead/commit/68a5072b) ###    🐞 Bug Fixes
  - Minify declarative JSON script content  -  by @harlan-zw in [**~~https://github.com/unjs/unhead/issues/874~~**](https://github.com/unjs/unhead/issues/874) [`(bf71e)`](https://github.com/unjs/unhead/commit/bf71e223)
  - Support browsers without Object.hasOwn  -  by @harlan-zw in [**~~https://github.com/unjs/unhead/issues/891~~**](https://github.com/unjs/unhead/issues/891) [`(90f38)`](https://github.com/unjs/unhead/commit/90f38fcc)
  - **react**:
    - Support Fragment children in Head  -  by @harlan-zw in [**~~https://github.com/unjs/unhead/issues/892~~**](https://github.com/unjs/unhead/issues/892) [`(7dd26)`](https://github.com/unjs/unhead/commit/7dd26006)
    - Preserve Helmet default title fallback  -  by @harlan-zw in [**~~https://github.com/unjs/unhead/issues/878~~**](https://github.com/unjs/unhead/issues/878) [`(e317a)`](https://github.com/unjs/unhead/commit/e317a1a1)
    - Normalize Head JSX props  -  by @harlan-zw in [**~~https://github.com/unjs/unhead/issues/893~~**](https://github.com/unjs/unhead/issues/893) [`(8ce0e)`](https://github.com/unjs/unhead/commit/8ce0ebbc)
    - Standardize provider instance prop  -  by @harlan-zw in [**~~https://github.com/unjs/unhead/issues/879~~**](https://github.com/unjs/unhead/issues/879) [`(7d2dc)`](https://github.com/unjs/unhead/commit/7d2dc2c7)
    - Support raw content in Head  -  by @harlan-zw in [**~~https://github.com/unjs/unhead/issues/894~~**](https://github.com/unjs/unhead/issues/894) [`(d0501)`](https://github.com/unjs/unhead/commit/d0501d9b)
  - **schema-org**:
    - Google rich result parity  -  by @harlan-zw in [**~~https://github.com/unjs/unhead/issues/919~~**](https://github.com/unjs/unhead/issues/919) [`(a9a8e)`](https://github.com/unjs/unhead/commit/a9a8e14d)
    - Missing Google rich result fields  -  by @harlan-zw in [**~~https://github.com/unjs/unhead/issues/920~~**](https://github.com/unjs/unhead/issues/920) [`(a58d4)`](https://github.com/unjs/unhead/commit/a58d4bf2)
    - Apply defaults when node type is absent  -  by @harlan-zw in [**~~https://github.com/unjs/unhead/issues/924~~**](https://github.com/unjs/unhead/issues/924) [`(0a796)`](https://github.com/unjs/unhead/commit/0a796ca9)
  - **scripts**:
    - Keep one stable proxy across script load  -  by @harlan-zw in [**~~https://github.com/unjs/unhead/issues/925~~**](https://github.com/unjs/unhead/issues/925) [`(dbefa)`](https://github.com/unjs/unhead/commit/dbefa3af)
  - **types**:
    - Support document speculation rules  -  by @harlan-zw in [**~~https://github.com/unjs/unhead/issues/873~~**](https://github.com/unjs/unhead/issues/873) [`(2ce44)`](https://github.com/unjs/unhead/commit/2ce443b5)
    - Narrow unpackMeta return type  -  by @harlan-zw in [**~~https://github.com/unjs/unhead/issues/889~~**](https://github.com/unjs/unhead/issues/889) [`(d9600)`](https://github.com/unjs/unhead/commit/d9600e62)
  - **unhead**:
    - Render fresh server head into DOM  -  by @harlan-zw in [**~~https://github.com/unjs/unhead/issues/877~~**](https://github.com/unjs/unhead/issues/877) [`(becce)`](https://github.com/unjs/unhead/commit/becce8cc)
    - Dedupe scalar Open Graph and Twitter metadata  -  by @harlan-zw in [**~~https://github.com/unjs/unhead/issues/880~~**](https://github.com/unjs/unhead/issues/880) [`(72d98)`](https://github.com/unjs/unhead/commit/72d98435)
    - Preserve numeric zero head content  -  by @harlan-zw in [**~~https://github.com/unjs/unhead/issues/885~~**](https://github.com/unjs/unhead/issues/885) [`(324df)`](https://github.com/unjs/unhead/commit/324df19b)
  - **validate**:
    - Warn on too many prefetch's  -  by @harlan-zw in [**~~https://github.com/unjs/unhead/issues/895~~**](https://github.com/unjs/unhead/issues/895) [`(30a2f)`](https://github.com/unjs/unhead/commit/30a2f9e3)
    - Validate head input shapes  -  by @harlan-zw in [**~~https://github.com/unjs/unhead/issues/884~~**](https://github.com/unjs/unhead/issues/884) [`(9d7fa)`](https://github.com/unjs/unhead/commit/9d7fa032)
  - **vue**:
    - Reject ignored server prop resolvers  -  by @harlan-zw in [**~~https://github.com/unjs/unhead/issues/876~~**](https://github.com/unjs/unhead/issues/876) [`(a834e)`](https://github.com/unjs/unhead/commit/a834ef6f) ###    🏎 Performance
  - **bundler**:
    - Make Vite DevTools kit optional  -  by @harlan-zw in [**~~https://github.com/unjs/unhead/issues/911~~**](https://github.com/unjs/unhead/issues/911) [`(d9b3d)`](https://github.com/unjs/unhead/commit/d9b3d2a6)
    - Reuse Rolldown parser when available  -  by @harlan-zw in [**~~https://github.com/unjs/unhead/issues/916~~**](https://github.com/unjs/unhead/issues/916) [`(bddfd)`](https://github.com/unjs/unhead/commit/bddfd460)

  [**~~View changes on GitHub~~**](https://github.com/unjs/unhead/compare/v3.2.3...v3.3.0) [**View on GitHub **](https://github.com/unjs/unhead/releases/tag/v3.3.0)
- 2 months ago [<h2>v 3.2.**3**</h2>Release v3.2.3](https://github.com/unjs/unhead/releases/tag/v3.2.3) ###    🐞 Bug Fixes
  - **schema-org**: Keep logo on organization identity  -  by @harlan-zw in [**~~https://github.com/unjs/unhead/issues/872~~**](https://github.com/unjs/unhead/issues/872) [`(13324)`](https://github.com/unjs/unhead/commit/13324a6d)

  [**~~View changes on GitHub~~**](https://github.com/unjs/unhead/compare/v3.2.2...v3.2.3) [**View on GitHub **](https://github.com/unjs/unhead/releases/tag/v3.2.3)
- 2 months ago [<h2>v 3.2.**2**</h2>Release v3.2.2](https://github.com/unjs/unhead/releases/tag/v3.2.2) ###    🐞 Bug Fixes
  - **schema-org**: Improve resolver correctness and types  -  by @harlan-zw in [**~~https://github.com/unjs/unhead/issues/868~~**](https://github.com/unjs/unhead/issues/868) [`(230e4)`](https://github.com/unjs/unhead/commit/230e4d3e)
  - **scripts**: Keep removed controllers terminal  -  by @harlan-zw in [**~~https://github.com/unjs/unhead/issues/867~~**](https://github.com/unjs/unhead/issues/867) [`(fa9b3)`](https://github.com/unjs/unhead/commit/fa9b3a9c)
  - **stream**: Resolve reactive entries before serialization  -  by @harlan-zw in [**~~https://github.com/unjs/unhead/issues/870~~**](https://github.com/unjs/unhead/issues/870) [`(ed03f)`](https://github.com/unjs/unhead/commit/ed03f941) ###    🏎 Performance
  - **schema-org**: Reduce graph resolution overhead  -  by @harlan-zw in [**~~https://github.com/unjs/unhead/issues/871~~**](https://github.com/unjs/unhead/issues/871) [`(62dab)`](https://github.com/unjs/unhead/commit/62dabe7a)

  [**~~View changes on GitHub~~**](https://github.com/unjs/unhead/compare/v3.2.1...v3.2.2) [**View on GitHub **](https://github.com/unjs/unhead/releases/tag/v3.2.2)
- 2 months ago [<h2>v 3.2.**1**</h2>Release v3.2.1](https://github.com/unjs/unhead/releases/tag/v3.2.1) ###    🐞 Bug Fixes
  - **bundler**: Preserve head.ssr mutation targets  -  by @harlan-zw in [**~~https://github.com/unjs/unhead/issues/866~~**](https://github.com/unjs/unhead/issues/866) [`(e8ef3)`](https://github.com/unjs/unhead/commit/e8ef34ab)

  [**~~View changes on GitHub~~**](https://github.com/unjs/unhead/compare/v3.2.0...v3.2.1) [**View on GitHub **](https://github.com/unjs/unhead/releases/tag/v3.2.1)

Looking for older releases?

[**View all releases on GitHub **](https://github.com/unjs/unhead/releases)