Unhead v3 removes all deprecated APIs and focuses on performance improvements.
🚦 Impact Level: High
The DeprecationsPlugin that automatically converted legacy property names has been removed. You must update your head entries to use the current property names.
children → innerHTML
useHead({
script: [{
- children: 'console.log("hello")',
+ innerHTML: 'console.log("hello")',
}]
})
hid / vmid → key
useHead({
meta: [{
- hid: 'description',
+ key: 'description',
name: 'description',
content: 'My description'
}]
})
body: true → tagPosition: 'bodyClose'
useHead({
script: [{
src: '/script.js',
- body: true,
+ tagPosition: 'bodyClose',
}]
})
🚦 Impact Level: Medium
If you're using @unhead/schema-org directly (not through nuxt-schema-org), the plugin exports have changed:
- import { SchemaOrgUnheadPlugin } from '@unhead/schema-org/vue'
+ import { UnheadSchemaOrg } from '@unhead/schema-org/vue'
nuxt-schema-org module, no changes are needed.🚦 Impact Level: Low
The useServerHead, useServerHeadSafe, and useServerSeoMeta composables have been removed.
- useServerSeoMeta({ description: 'My description' })
+ useSeoMeta({ description: 'My description' })
If you need server-only head management:
if (import.meta.server) {
useHead({ title: 'Server Only' })
}
🚦 Impact Level: Low
If you're using Unhead hooks directly:
init hook removeddom:renderTag hook removeddom:rendered hook removeddom:beforeRender is now synchronousrenderDOMHead is now synchronousAs of Nuxt 3.16, Unhead v2 is the default version.
The best resource for managing the migration is the official Nuxt v4 migration guide.
Most v2 changes are handled automatically by Nuxt:
For the full list of changes, check out the Vue Upgrade Guide.