---
title: "Releases · Unhead"
meta:
  "og:description": "Unhead is the any-framework document head manager built for performance and delightful developer experience."
  "og:title": "Releases · Unhead"
  description: "Unhead is the any-framework document head manager built for performance and delightful developer experience."
---

## **Release Notes **

Last fetched: 4 hours ago.

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

- 4 weeks ago [<h3>v 2.1.**12**** Latest release **</h3>Release v2.1.12](https://github.com/unjs/unhead/releases/tag/v2.1.12) ### [   🐞 Bug Fixes](#bug-fixes)
  - Harden prototype pollution  -  by @harlan-zw [`(a6ed9)`](https://github.com/unjs/unhead/commit/a6ed9f98)
  - Case insensitive attr dedupe  -  by @harlan-zw [`(3146b)`](https://github.com/unjs/unhead/commit/3146b90c) #####      [**View changes on GitHub**](https://github.com/unjs/unhead/compare/v2.1.11...v2.1.12)
- 4 weeks ago [<h3>v 2.1.**11**</h3>Release v2.1.11](https://github.com/unjs/unhead/releases/tag/v2.1.11) ### [    ⚠️ Security](#️-security)
  - Fixed XSS bypass in useHeadSafe via attribute name injection (GHSA-g5xx-pwrp-g3fv). Users handling untrusted input with useHeadSafe should upgrade immediately. ### [   🐞 Bug Fixes](#bug-fixes)
  - **addons,schema-org**: Permissive peer dependencies  -  by @harlan-zw [`(4c5d1)`](https://github.com/unjs/unhead/commit/4c5d1818) #####      [**View changes on GitHub**](https://github.com/unjs/unhead/compare/v2.1.10...v2.1.11)
- last month [<h3>v 2.1.**10**</h3>Release v2.1.10](https://github.com/unjs/unhead/releases/tag/v2.1.10) ### [   🐞 Bug Fixes](#bug-fixes)
  - **solid-js**: Correct peerDependency version  -  by @tyeporter in [**https://github.com/unjs/unhead/issues/671**](https://github.com/unjs/unhead/issues/671) [`(64e17)`](https://github.com/unjs/unhead/commit/64e179a4) #####      [**View changes on GitHub**](https://github.com/unjs/unhead/compare/v2.1.9...v2.1.10)
- last month [<h3>v 2.1.**9**</h3>Release v2.1.9](https://github.com/unjs/unhead/releases/tag/v2.1.9) ### [   🐞 Bug Fixes](#bug-fixes)
  - **schema-org**: Nuxt test utils compat bug  -  by @harlan-zw [`(ef838)`](https://github.com/unjs/unhead/commit/ef838412) #####      [**View changes on GitHub**](https://github.com/unjs/unhead/compare/v2.1.8...v2.1.9)
- last month [<h3>v 2.1.**8**</h3>Release v2.1.8](https://github.com/unjs/unhead/releases/tag/v2.1.8) ### [   🐞 Bug Fixes](#bug-fixes)
  - **schema-org**: Avoid crashing from 3+ duplicate nodes  -  by @harlan-zw [`(4baf9)`](https://github.com/unjs/unhead/commit/4baf9d30) #####      [**View changes on GitHub**](https://github.com/unjs/unhead/compare/v2.1.7...v2.1.8)
- last month [<h3>v 2.1.**7**</h3>Release v2.1.7](https://github.com/unjs/unhead/releases/tag/v2.1.7) ### [   🐞 Bug Fixes](#bug-fixes)
  - **unhead**:
    - deduplicate matching tags inside same render cycle  -  by @harlan-zw in [**https://github.com/unjs/unhead/issues/668**](https://github.com/unjs/unhead/issues/668) [`(5c0b2)`](https://github.com/unjs/unhead/commit/5c0b2930) #####      [**View changes on GitHub**](https://github.com/unjs/unhead/compare/v2.1.6...v2.1.7)
- last month [<h3>v 2.1.**6**</h3>Release v2.1.6](https://github.com/unjs/unhead/releases/tag/v2.1.6) ### [   🐞 Bug Fixes](#bug-fixes)
  - **react**: Ssr regression  -  by @harlan-zw [`(6adff)`](https://github.com/unjs/unhead/commit/6adff884) #####      [**View changes on GitHub**](https://github.com/unjs/unhead/compare/v2.1.5...v2.1.6)
- last month [<h3>v 2.1.**5**</h3>Release v2.1.5](https://github.com/unjs/unhead/releases/tag/v2.1.5) ### [   🐞 Bug Fixes](#bug-fixes)
  - **react**: Dispose head entries on unmount in React 18 StrictMode  -  by @harlan-zw in [**https://github.com/unjs/unhead/issues/664**](https://github.com/unjs/unhead/issues/664) [`(50ffe)`](https://github.com/unjs/unhead/commit/50ffe371)
  - **scripts**: Prevent scope disposal from aborting unrelated trigger in `useScript`  -  by @cernymatej in [**https://github.com/unjs/unhead/issues/660**](https://github.com/unjs/unhead/issues/660) [`(e8f5b)`](https://github.com/unjs/unhead/commit/e8f5b4b2)
  - **unhead**: Dedupe link rel without hreflang or type  -  by @danielroe in [**https://github.com/unjs/unhead/issues/658**](https://github.com/unjs/unhead/issues/658) [`(1487d)`](https://github.com/unjs/unhead/commit/1487db61) #####      [**View changes on GitHub**](https://github.com/unjs/unhead/compare/v2.1.4...v2.1.5)
- 2 months ago [<h3>v 2.1.**4**</h3>Release v2.1.4](https://github.com/unjs/unhead/releases/tag/v2.1.4) ### [   🐞 Bug Fixes](#bug-fixes)
  - **schema-org**: Remove unimplemented SchemaOrgDebug  -  by @onmax in [**https://github.com/unjs/unhead/issues/649**](https://github.com/unjs/unhead/issues/649) [`(642dc)`](https://github.com/unjs/unhead/commit/642dc3e7)
  - **unhead**: Dedupe `<link rel="alternate">` by hreflang/type only, drop href from key  -  by @harlan-zw in [**https://github.com/unjs/unhead/issues/656**](https://github.com/unjs/unhead/issues/656) [`(86175)`](https://github.com/unjs/unhead/commit/86175ebc) #####      [**View changes on GitHub**](https://github.com/unjs/unhead/compare/v2.1.3...v2.1.4)
- 2 months ago [<h3>v 2.1.**3**</h3>Release v2.1.3](https://github.com/unjs/unhead/releases/tag/v2.1.3) ### [   🐞 Bug Fixes](#bug-fixes)
  - **unhead**:
    - Dedupe `<link rel="alternate">`  -  by @danielroe and **onmax** in [**https://github.com/unjs/unhead/issues/655**](https://github.com/unjs/unhead/issues/655) [`(fdabe)`](https://github.com/unjs/unhead/commit/fdabe651)
  - **vue**:
    - Support computed getter trigger  -  by @harlan-zw in [**https://github.com/unjs/unhead/issues/638**](https://github.com/unjs/unhead/issues/638) [`(fd63a)`](https://github.com/unjs/unhead/commit/fd63a285)
    - Guard `s._statusRef`  -  by @danielroe in [**https://github.com/unjs/unhead/issues/642**](https://github.com/unjs/unhead/issues/642) [`(4ef03)`](https://github.com/unjs/unhead/commit/4ef03ebf) ### [   🏎 Performance](#performance)
  - **vue**: Avoid duplicating error message in the bundle  -  by @panstromek in [**https://github.com/unjs/unhead/issues/652**](https://github.com/unjs/unhead/issues/652) [`(194e5)`](https://github.com/unjs/unhead/commit/194e561b) #####      [**View changes on GitHub**](https://github.com/unjs/unhead/compare/v2.1.2...v2.1.3)
- 3 months ago [<h3>v 2.1.**2**</h3>Release v2.1.2](https://github.com/unjs/unhead/releases/tag/v2.1.2) ### [   🐞 Bug Fixes](#bug-fixes)
  - Broken cjs environment  -  by @harlan-zw [`(ce989)`](https://github.com/unjs/unhead/commit/ce989722) #####      [**View changes on GitHub**](https://github.com/unjs/unhead/compare/v2.1.1...v2.1.2)
- 3 months ago [<h3>v 2.1.**1**</h3>Release v2.1.1](https://github.com/unjs/unhead/releases/tag/v2.1.1)_No significant changes_#####      [**View changes on GitHub**](https://github.com/unjs/unhead/compare/v2.1.0...v2.1.1)
- 3 months ago [<h3>v 2.**1.0**</h3>Release v2.1.0](https://github.com/unjs/unhead/releases/tag/v2.1.0) ### [   🚀 Features](#features)
  - **schema-org**: 12 new nodes  -  by @harlan-zw in [**https://github.com/unjs/unhead/issues/612**](https://github.com/unjs/unhead/issues/612) [`(1a9b8)`](https://github.com/unjs/unhead/commit/1a9b80a1) ### [   🐞 Bug Fixes](#bug-fixes)
  - **react**:
    - Recursive function resolves broken  -  by @harlan-zw [`(4e0c7)`](https://github.com/unjs/unhead/commit/4e0c719a)
  - **schema-org**:
    - Correct month off-by-one  -  by @harlan-zw in [**https://github.com/unjs/unhead/issues/603**](https://github.com/unjs/unhead/issues/603) [`(a3e70)`](https://github.com/unjs/unhead/commit/a3e700a8)
    - Missing schema.org properties  -  by @harlan-zw in [**https://github.com/unjs/unhead/issues/614**](https://github.com/unjs/unhead/issues/614) [`(54e05)`](https://github.com/unjs/unhead/commit/54e05522)
  - **unhead**:
    - Enforce boolean string meta contents  -  by @kfreezen in [**https://github.com/unjs/unhead/issues/594**](https://github.com/unjs/unhead/issues/594) [`(0b8e7)`](https://github.com/unjs/unhead/commit/0b8e71f1)
    - Capo module scripts ordering  -  by @Barbapapazes in [**https://github.com/unjs/unhead/issues/600**](https://github.com/unjs/unhead/issues/600) [`(3c661)`](https://github.com/unjs/unhead/commit/3c661921)
    - Capo inline scripts ordering  -  by @Barbapapazes in [**https://github.com/unjs/unhead/issues/596**](https://github.com/unjs/unhead/issues/596) [`(7be75)`](https://github.com/unjs/unhead/commit/7be752c8)
    - Normalize script type  -  by @harlan-zw [`(e51b6)`](https://github.com/unjs/unhead/commit/e51b6464)
    - Safer handling of input  -  by @harlan-zw [`(b4b6c)`](https://github.com/unjs/unhead/commit/b4b6c58d) ### [   🏎 Performance](#performance)
  - **schema-org**:
    - Remove ohash and defu dependencies  -  by @harlan-zw in [**https://github.com/unjs/unhead/issues/605**](https://github.com/unjs/unhead/issues/605) [`(0d508)`](https://github.com/unjs/unhead/commit/0d50831a)
    - Rework graph resolution  -  by @harlan-zw in [**https://github.com/unjs/unhead/issues/616**](https://github.com/unjs/unhead/issues/616) [`(b79e4)`](https://github.com/unjs/unhead/commit/b79e46d9) #####      [**View changes on GitHub**](https://github.com/unjs/unhead/compare/v2.0.19...v2.1.0)
- 6 months ago [<h3>v 2.0.**19**</h3>Release v2.0.19](https://github.com/unjs/unhead/releases/tag/v2.0.19) ### [   🐞 Bug Fixes](#bug-fixes)
  - **vue**: Tree shaking breaking some reactivity  -  by @harlan-zw [`(7abb5)`](https://github.com/unjs/unhead/commit/7abb582e) #####      [**View changes on GitHub**](https://github.com/unjs/unhead/compare/v2.0.18...v2.0.19)
- 6 months ago [<h3>v 2.0.**18**</h3>Release v2.0.18](https://github.com/unjs/unhead/releases/tag/v2.0.18) ### [   🏎 Performance](#performance)
  - **unhead**: Avoid server side effects  -  by @harlan-zw in [**https://github.com/unjs/unhead/issues/585**](https://github.com/unjs/unhead/issues/585) [`(3fd09)`](https://github.com/unjs/unhead/commit/3fd0986d) #####      [**View changes on GitHub**](https://github.com/unjs/unhead/compare/v2.0.17...v2.0.18)
- 7 months ago [<h3>v 2.0.**17**</h3>Release v2.0.17](https://github.com/unjs/unhead/releases/tag/v2.0.17)_No significant changes_#####      [**View changes on GitHub**](https://github.com/unjs/unhead/compare/v2.0.16...v2.0.17)
- 7 months ago [<h3>v 2.0.**16**</h3>Release v2.0.16](https://github.com/unjs/unhead/releases/tag/v2.0.16)_No significant changes_#####      [**View changes on GitHub**](https://github.com/unjs/unhead/compare/v2.0.15...v2.0.16)
- 7 months ago [<h3>v 2.0.**15**</h3>Release v2.0.15](https://github.com/unjs/unhead/releases/tag/v2.0.15) ### [   🐞 Bug Fixes](#bug-fixes)
  - NPM Trusted Publishing  -  by @harlan-zw [`(a5d9f)`](https://github.com/unjs/unhead/commit/a5d9fc8b)
  - **ssr**: Broken `extractUnheadInputFromHtml` regex  -  by @harlan-zw [`(e23db)`](https://github.com/unjs/unhead/commit/e23dbacd) ### [   🏎 Performance](#performance)
  - Walker based `transformHtmlTemplate`  -  by @harlan-zw in [**https://github.com/unjs/unhead/issues/581**](https://github.com/unjs/unhead/issues/581) [`(37fc9)`](https://github.com/unjs/unhead/commit/37fc9257) #####      [**View changes on GitHub**](https://github.com/unjs/unhead/compare/v2.0.14...v2.0.15)
- 8 months ago [<h3>v 2.0.**14**</h3>Release v2.0.14](https://github.com/unjs/unhead/releases/tag/v2.0.14) ### [   🐞 Bug Fixes](#bug-fixes)
  - **unhead**: Multiword attributes in template  -  by @NikSimonov in [**https://github.com/unjs/unhead/issues/568**](https://github.com/unjs/unhead/issues/568) [`(f635b)`](https://github.com/unjs/unhead/commit/f635b929) #####      [**View changes on GitHub**](https://github.com/unjs/unhead/compare/v2.0.13...v2.0.14)
- 8 months ago [<h3>v 2.0.**13**</h3>Release v2.0.13](https://github.com/unjs/unhead/releases/tag/v2.0.13) ### [   🐞 Bug Fixes](#bug-fixes)
  - **unhead**:
    - Canonical plugin modifying non-url properties  -  by @paraboul [`(ee8fd)`](https://github.com/unjs/unhead/commit/ee8fd25b)
    - Avoid normalizing template param input  -  by @harlan-zw [`(1d205)`](https://github.com/unjs/unhead/commit/1d205d54)
    - Safer removal of leading / trailing separators  -  by @harlan-zw [`(d4501)`](https://github.com/unjs/unhead/commit/d450124a) #####      [**View changes on GitHub**](https://github.com/unjs/unhead/compare/v2.0.12...v2.0.13)
- 9 months ago [<h3>v 2.0.**12**</h3>Release v2.0.12](https://github.com/unjs/unhead/releases/tag/v2.0.12) ### [   🐞 Bug Fixes](#bug-fixes)
  - **react**: Force invalidation on entry disposal  -  by @harlan-zw in [**https://github.com/unjs/unhead/issues/559**](https://github.com/unjs/unhead/issues/559) [`(4ee5e)`](https://github.com/unjs/unhead/commit/4ee5eac7) #####      [**View changes on GitHub**](https://github.com/unjs/unhead/compare/v2.0.11...v2.0.12)
- 9 months ago [<h3>v 2.0.**11**</h3>Release v2.0.11](https://github.com/unjs/unhead/releases/tag/v2.0.11) ### [   🐞 Bug Fixes](#bug-fixes)
  - Allow non-standard meta tags to be intentionally duped  -  by @harlan-zw [`(9a899)`](https://github.com/unjs/unhead/commit/9a899982) #####      [**View changes on GitHub**](https://github.com/unjs/unhead/compare/v2.0.10...v2.0.11)
- 11 months ago [<h3>v 2.0.**10**</h3>Release v2.0.10](https://github.com/unjs/unhead/releases/tag/v2.0.10) ### [   🐞 Bug Fixes](#bug-fixes)
  - Safer meta array deduping  -  by @harlan-zw [`(32486)`](https://github.com/unjs/unhead/commit/32486259) #####      [**View changes on GitHub**](https://github.com/unjs/unhead/compare/v2.0.9...v2.0.10)
- 11 months ago [<h3>v 2.0.**9**</h3>Release v2.0.9](https://github.com/unjs/unhead/releases/tag/v2.0.9) ### [   🏎 Performance](#performance)
  - **unhead**: Normalize canonicalHost only once in canonical plugin  -  by @negezor in [**https://github.com/unjs/unhead/issues/550**](https://github.com/unjs/unhead/issues/550) [`(92713)`](https://github.com/unjs/unhead/commit/92713be7) #####      [**View changes on GitHub**](https://github.com/unjs/unhead/compare/v2.0.8...v2.0.9)
- last year [<h3>v 2.0.**8**</h3>Release v2.0.8](https://github.com/unjs/unhead/releases/tag/v2.0.8)_No significant changes_#####      [**View changes on GitHub**](https://github.com/unjs/unhead/compare/v2.0.7...v2.0.8)
- last year [<h3>v 2.0.**7**</h3>Release v2.0.7](https://github.com/unjs/unhead/releases/tag/v2.0.7) ### [   🐞 Bug Fixes](#bug-fixes)
  - **schema-org**: `unhead` hoisting issue  -  by @harlan-zw [`(bb0e4)`](https://github.com/unjs/unhead/commit/bb0e4a25) #####      [**View changes on GitHub**](https://github.com/unjs/unhead/compare/v2.0.6...v2.0.7)
- last year [<h3>v 2.0.**6**</h3>Release v2.0.6](https://github.com/unjs/unhead/releases/tag/v2.0.6) ### [   🐞 Bug Fixes](#bug-fixes)
  - **ssr**: Less aggressive encoding of non-title tags  -  by @harlan-zw [`(f4d4f)`](https://github.com/unjs/unhead/commit/f4d4f11b) #####      [**View changes on GitHub**](https://github.com/unjs/unhead/compare/v2.0.5...v2.0.6)
- last year [<h3>v 2.0.**5**</h3>Release v2.0.5](https://github.com/unjs/unhead/releases/tag/v2.0.5) ### [   🐞 Bug Fixes](#bug-fixes)
  - **vue**: Use `setTimeout` as render's debounced delayer  -  by @kricsleo in [**https://github.com/unjs/unhead/issues/540**](https://github.com/unjs/unhead/issues/540) [`(8f7c5)`](https://github.com/unjs/unhead/commit/8f7c5073) #####      [**View changes on GitHub**](https://github.com/unjs/unhead/compare/v2.0.4...v2.0.5)

Looking for older releases?

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