# Nuxt Changelog

> Latest releases from Nuxt and official modules.

## v1.1.1 (nuxt/hints) - 2026-05-05

[Release notes](https://github.com/nuxt/hints/releases/tag/v1.1.1)

### 🩹 Fixes

- **module:** Make features config partial to allow selective overrides ([#331](https://github.com/nuxt/hints/pull/331))

### ❤️ Contributors

- Benjamin Canac ([@benjamincanac](https://github.com/benjamincanac))

---

## v2.2.2 (nuxt/icon) - 2026-05-04

[Release notes](https://github.com/nuxt/icon/releases/tag/v2.2.2)

### &nbsp;&nbsp;&nbsp;🐞 Bug Fixes

- Detect package manager for missing collection install suggestion &nbsp;-&nbsp; by @arashsheyda in https://github.com/nuxt/icon/issues/474 [<samp>(50c3b)</samp>](https://github.com/nuxt/icon/commit/50c3b35)
- Detect installed collections from Nuxt rootDir/workspaceDir &nbsp;-&nbsp; by @benjamincanac in https://github.com/nuxt/icon/issues/477 [<samp>(90faf)</samp>](https://github.com/nuxt/icon/commit/90fafa3)

##### &nbsp;&nbsp;&nbsp;&nbsp;[View changes on GitHub](https://github.com/nuxt/icon/compare/v2.2.1...v2.2.2)

---

## v1.1.0 (nuxt/hints) - 2026-05-03

[Release notes](https://github.com/nuxt/hints/releases/tag/v1.1.0)

### 🩹 Fixes

- Respect app.baseURL in devtools iframe src ([#322](https://github.com/nuxt/hints/pull/322))

### 💅 Refactors

- Move SSE to devtools RPC ([#314](https://github.com/nuxt/hints/pull/314))
- Move SSE to devtools RPC ([#318](https://github.com/nuxt/hints/pull/318))

### ❤️ Contributors

- Julien Huang ([@huang-julien](https://github.com/huang-julien))
- Fabian Kirchhoff ([@fabkho](https://github.com/fabkho))

---

## v1.0.6 (nuxt/scripts) - 2026-05-03

[Release notes](https://github.com/nuxt/scripts/releases/tag/v1.0.6)

### &nbsp;&nbsp;&nbsp;🐞 Bug Fixes

- **google-analytics, google-tag-manager**: Per-region consent defaults &nbsp;-&nbsp; by @zizzfizzix in https://github.com/nuxt/scripts/issues/739 [<samp>(ada74)</samp>](https://github.com/nuxt/scripts/commit/ada747d)
- **google-maps**: Avoid recentering google maps on inline options &nbsp;-&nbsp; by @harlan-zw in https://github.com/nuxt/scripts/issues/740 [<samp>(ab1d5)</samp>](https://github.com/nuxt/scripts/commit/ab1d5e8)

##### &nbsp;&nbsp;&nbsp;&nbsp;[View changes on GitHub](https://github.com/nuxt/scripts/compare/v1.0.5...v1.0.6)

---

## v1.0.5 (nuxt/scripts) - 2026-05-01

[Release notes](https://github.com/nuxt/scripts/releases/tag/v1.0.5)

### &nbsp;&nbsp;&nbsp;🐞 Bug Fixes

- **google-maps**: Detach overlay element on unmount &nbsp;-&nbsp; by @harlan-zw in https://github.com/nuxt/scripts/issues/736 [<samp>(49b54)</samp>](https://github.com/nuxt/scripts/commit/49b5416)
- **google-sign-in**: Initialize/renderButton/prompt helpers &nbsp;-&nbsp; by @harlan-zw in https://github.com/nuxt/scripts/issues/734 [<samp>(ecd1b)</samp>](https://github.com/nuxt/scripts/commit/ecd1bec)

##### &nbsp;&nbsp;&nbsp;&nbsp;[View changes on GitHub](https://github.com/nuxt/scripts/compare/v1.0.4...v1.0.5)

---

## v4.4.3/4.4.4 (nuxt/nuxt) - 2026-04-29

[Release notes](https://github.com/nuxt/nuxt/releases/tag/v4.4.3)

> 4.4.3 is the next patch release. v4.4.4 was published with no changes due to an issue running the release script for v4.4.3.

## 👉 Changelog

[compare changes](https://github.com/nuxt/nuxt/compare/v4.4.2...v4.4.3)
### 🔥 Performance
- **nitro:** Directly import nuxt package version ([#34567](https://github.com/nuxt/nuxt/pull/34567))
- **vite,webpack:** Use vfs for manifest + vite node server ([#34666](https://github.com/nuxt/nuxt/pull/34666))
- **nuxt:** Clean-up build hooks + emit gc'd snapshots ([#34587](https://github.com/nuxt/nuxt/pull/34587))
- **nuxt:** Skip key watcher when useAsyncData key is static ([#34620](https://github.com/nuxt/nuxt/pull/34620))
- **kit:** Parallelise module load + cache jiti instances ([#34842](https://github.com/nuxt/nuxt/pull/34842))
- **nuxt:** Batch-resolve typescript hoist paths with cached base roots ([#34862](https://github.com/nuxt/nuxt/pull/34862))
### 🩹 Fixes
- **nuxt:** Handle negative zero in getUserTrace slice boundary ([#34524](https://github.com/nuxt/nuxt/pull/34524))
- **nuxt:** Signal error state and clear timers in loading indicator cleanup ([#34523](https://github.com/nuxt/nuxt/pull/34523))
- **nuxt:** Fix broken hook cleanup in route announcer ([#34525](https://github.com/nuxt/nuxt/pull/34525))
- **nuxt:** Filter `clearNuxtState` key enumeration by useState prefix ([#34541](https://github.com/nuxt/nuxt/pull/34541))
- **nuxt:** Correct `useFetch` `cache` options type ([#34551](https://github.com/nuxt/nuxt/pull/34551))
- **nuxt:** Prevent in-flight requests from overwriting cleared async data ([#34553](https://github.com/nuxt/nuxt/pull/34553))
- **nuxt:** Check response status before parsing payload ([#34555](https://github.com/nuxt/nuxt/pull/34555))
- **nuxt:** Handle TS type assertions on member expression callees in keyed functions parser ([#34558](https://github.com/nuxt/nuxt/pull/34558))
- **nuxt:** Use comment as client component placeholder ([#33466](https://github.com/nuxt/nuxt/pull/33466))
- **nitro:** Resolve h3 export path in nitro vfs ([#34566](https://github.com/nuxt/nuxt/pull/34566))
- **nuxt:** Use factory resolved options everywhere in `useFetch` ([#34568](https://github.com/nuxt/nuxt/pull/34568))
- **nitro:** Use hash-based cache for dev payloads ([#34569](https://github.com/nuxt/nuxt/pull/34569))
- **nuxt:** Await parcel watcher subscription before registering close hook ([#34573](https://github.com/nuxt/nuxt/pull/34573))
- **nuxt:** Self-remove hydration error guards after first navigation ([#34572](https://github.com/nuxt/nuxt/pull/34572))
- **nuxt:** Mark portal properties as configurable ([#34574](https://github.com/nuxt/nuxt/pull/34574))
- **nuxt:** Retry manifest fetch after transient failure ([#34570](https://github.com/nuxt/nuxt/pull/34570))
- **kit:** Add PackagePreset type to addImportsSources ([#34582](https://github.com/nuxt/nuxt/pull/34582))
- **nuxt:** Avoid any return type from `callHookWith` in `vue:setup` ([#34584](https://github.com/nuxt/nuxt/pull/34584))
- **nuxt:** Strip DevOnly components with attributes in production builds ([#34585](https://github.com/nuxt/nuxt/pull/34585))
- **nuxt:** Move parcel watcher debug timer outside subscription loop ([#34590](https://github.com/nuxt/nuxt/pull/34590))
- **nuxt:** Preserve falsy prop values in `NuxtTime` data attribute serialization ([#34600](https://github.com/nuxt/nuxt/pull/34600))
- **nuxt:** Clear cached rejected promise in `callOnce` ([#34614](https://github.com/nuxt/nuxt/pull/34614))
- **nuxt:** Correct useAsyncData key type ([#34599](https://github.com/nuxt/nuxt/pull/34599))
- **nitro:** Set `__buildAssetsURL` before server entry import ([#34607](https://github.com/nuxt/nuxt/pull/34607))
- **nuxt:** Use consistent `[nuxt]` prefix in console warnings ([#34668](https://github.com/nuxt/nuxt/pull/34668))
- **vite:** Remove obsolete `writeDevServer` + handle vite-node precomputed ([f8e49b71b](https://github.com/nuxt/nuxt/commit/f8e49b71b))
- **nuxt:** Update impound protection for `nitro/*` ([ac9e25b8c](https://github.com/nuxt/nuxt/commit/ac9e25b8c))
- **nuxt,schema:** Allow disabling clearing build hooks ([#34594](https://github.com/nuxt/nuxt/pull/34594))
- **rspack,webpack:** Emit `styles.mjs` when inline styles off ([#34697](https://github.com/nuxt/nuxt/pull/34697))
- **nuxt:** Fix FormData body hashing in `useFetch` deduplication key ([#34546](https://github.com/nuxt/nuxt/pull/34546))
- **nuxt:** Generate type re-exports for shared type-only imports ([#34632](https://github.com/nuxt/nuxt/pull/34632))
- **nuxt,nitro:** Add `Symbol` serialization for dev server logs ([#34575](https://github.com/nuxt/nuxt/pull/34575))
- **vite:** Do not process css files with decorator transform ([#34769](https://github.com/nuxt/nuxt/pull/34769))
- **vite:** Ensure leading slash in `/@fs` URLs for Windows ([#34810](https://github.com/nuxt/nuxt/pull/34810))
- **vite:** Preserve server-origin errors and surface them via Youch ([#34820](https://github.com/nuxt/nuxt/pull/34820))
- **nitro:** Do not add import condition for ssr resolve conditions ([#34739](https://github.com/nuxt/nuxt/pull/34739))
- **nuxt:** Fix callOnce navigation mode alternating execution ([#34718](https://github.com/nuxt/nuxt/pull/34718))
- **schema,rspack,webpack:** Respect configured `test` option ([#34827](https://github.com/nuxt/nuxt/pull/34827))
- **nuxt:** Handle custom cookie serialisation before passing to `cookie-es` ([#34711](https://github.com/nuxt/nuxt/pull/34711))
- **nuxt:** Link to correct docs page for keyed functions ([#34854](https://github.com/nuxt/nuxt/pull/34854))
- **nuxt:** Adjust `setPageLayout` props type to allow passing arrays of objects ([#34860](https://github.com/nuxt/nuxt/pull/34860))
- **nuxt,schema:** Move config type to schema + mark type peerDeps ([#34864](https://github.com/nuxt/nuxt/pull/34864))
- **nitro:** Restore 'import' condition for ssr resolve ([af7a12725](https://github.com/nuxt/nuxt/commit/af7a12725))
- **nitro:** Re-encode `ssrContext.url` to match vue-router ([#34902](https://github.com/nuxt/nuxt/pull/34902))
- **schema:** Remove type peerDependencies ([#34894](https://github.com/nuxt/nuxt/pull/34894))
- **nuxt:** Propagate unexpected errors from `isDirectorySync` ([#34900](https://github.com/nuxt/nuxt/pull/34900))
- **nuxt:** Bridge `@nuxt/schema` augmentations into `nuxt/schema` ([#34905](https://github.com/nuxt/nuxt/pull/34905))
- **nuxt:** Sync `_route` when navigating up the route tree ([#34918](https://github.com/nuxt/nuxt/pull/34918))
- **nuxt:** Skip `<NuxtPage>` cached vnode when its suspense is unmounted ([#34899](https://github.com/nuxt/nuxt/pull/34899))
- **nitro:** Only recommend payload extraction when `ssr` is enabled ([#34924](https://github.com/nuxt/nuxt/pull/34924))
- **nitro:** Avoid double-decoding of url ([3f1a9524b](https://github.com/nuxt/nuxt/commit/3f1a9524b))
- **nuxt:** Flatten buffer before filtering promises and fix rendering of content ([#34863](https://github.com/nuxt/nuxt/pull/34863))
- **nuxt:** Correct async data type inference when using `transform` with `getCachedData` ([#34819](https://github.com/nuxt/nuxt/pull/34819))
- **nuxt:** Avoid transforming `NuxtTeleportIslandComponent` with nuxt-client directive ([#34817](https://github.com/nuxt/nuxt/pull/34817))
- **nuxt:** Resolve layer aliases in css files ([#34940](https://github.com/nuxt/nuxt/pull/34940))
- **nuxt:** Invoke user-supplied error handler when suppressing render errors ([#34938](https://github.com/nuxt/nuxt/pull/34938))
### 📖 Documentation
- Add v4.4 badge for layout props ([#34528](https://github.com/nuxt/nuxt/pull/34528))
- Document that component props are sent in query string ([619de0dd5](https://github.com/nuxt/nuxt/commit/619de0dd5))
- Clarify function signature requirement for custom `$fetch` in `createUseFetch` ([#34564](https://github.com/nuxt/nuxt/pull/34564))
- Update experimental typedPages documentation ([#34580](https://github.com/nuxt/nuxt/pull/34580))
- Fix page:loading:start description to match implementation ([#34617](https://github.com/nuxt/nuxt/pull/34617))
- Add missing jsdoc strings ([ccb53e0eb](https://github.com/nuxt/nuxt/commit/ccb53e0eb))
- Add example for route middleware setup ([#34661](https://github.com/nuxt/nuxt/pull/34661))
- Use new object boolean syntax when prefetchOn interaction ([#34825](https://github.com/nuxt/nuxt/pull/34825))
- Remove @nuxt/scripts from core modules roadmap ([#34835](https://github.com/nuxt/nuxt/pull/34835))
- Remove @nuxt/hints from core modules roadmap ([#34867](https://github.com/nuxt/nuxt/pull/34867))
- Correct URL ([#34907](https://github.com/nuxt/nuxt/pull/34907))
- Set `NODE_ENV` to `production` in deployment examples ([#34937](https://github.com/nuxt/nuxt/pull/34937))
### 🏡 Chore
- Do not ship `devDependencies` when publishing ([8018d6577](https://github.com/nuxt/nuxt/commit/8018d6577))
- Remove unused field 🤦 ([2a75ac774](https://github.com/nuxt/nuxt/commit/2a75ac774))
- Remove explicit copilot instructions ([c7237f22c](https://github.com/nuxt/nuxt/commit/c7237f22c))
- Use single renovate PR for `3.x` and `4.x` branches ([1dda87b84](https://github.com/nuxt/nuxt/commit/1dda87b84))
- Use top level `vulnerabilityAlerts` config ([39999b7b6](https://github.com/nuxt/nuxt/commit/39999b7b6))
- Dedupe security update prs after update ([4734db95c](https://github.com/nuxt/nuxt/commit/4734db95c))
- Throttle per host to reduce rate limits in link checking ([#34488](https://github.com/nuxt/nuxt/pull/34488))
- Update renovate config ([214a72bcf](https://github.com/nuxt/nuxt/commit/214a72bcf))
- Drop redundant `as const` ([#34909](https://github.com/nuxt/nuxt/pull/34909))
- Migrate resolutions to `pnpm-workspace.yaml` ([4a39b1bfa](https://github.com/nuxt/nuxt/commit/4a39b1bfa))
### ✅ Tests
- Use `toThrow` instead of `toThrowError` ([3d3d8164d](https://github.com/nuxt/nuxt/commit/3d3d8164d))
- Update bundle size ([e4b31efa4](https://github.com/nuxt/nuxt/commit/e4b31efa4))
- Reduce matrices in ci ([#34703](https://github.com/nuxt/nuxt/pull/34703))
- Add scroll behavior tests for fixed page key with scrollToTop ([#34761](https://github.com/nuxt/nuxt/pull/34761))
- Update deprecated error assertions ([a7a301095](https://github.com/nuxt/nuxt/commit/a7a301095))
### 🤖 CI
- Add bot workflow ([#34677](https://github.com/nuxt/nuxt/pull/34677))
- Fix bot label ([967eca84b](https://github.com/nuxt/nuxt/commit/967eca84b))
- Add agent-scan workflow ([#34681](https://github.com/nuxt/nuxt/pull/34681))
- Correct renovate bot name in workflow ([#34708](https://github.com/nuxt/nuxt/pull/34708))
- Correct dependabot bot name in workflow ([#34709](https://github.com/nuxt/nuxt/pull/34709))
- Drop stackblitz link issue commenter ([1e9cacacb](https://github.com/nuxt/nuxt/commit/1e9cacacb))
- Inline actions triggered by labels into triage actions ([ee5acd096](https://github.com/nuxt/nuxt/commit/ee5acd096))
- Update workflows to use renamed type labels ([#34933](https://github.com/nuxt/nuxt/pull/34933))

### ❤️ Contributors
- Daniel Roe (@danielroe)
- Sébastien Chopin (@atinux)
- Damian Głowala (@DamianGlowala)
- John (@zecar)
- Eduardo San Martin Morote (@posva)
- abeer0 (@iiio2)
- Florian Heuberger (@Flo0806)
- karl (@krlctrl)
- Idris Gadi (@IdrisGit)
- Ori (@oritwoen)
- Yoshihiro Yamaguchi (@yamachi4416)
- Kilisei (@kilisei)
- Anthony Fu (@antfu)
- edepauw (@edepauw)
- Bochkarev Ivan (@Ibochkarev)
- Matej Černý (@cernymatej)
- Matteo Gabriele (@MatteoGabriele)
- Julien Huang (@huang-julien)
- Oliver Schmidt (@Timbuktu1982)
- Om Mishra (@howwohmm)
- xjccc (@xjccc)
- mcrapts (@mcrapts)
- Louis Ramos (@wJoenn)
- 山吹色御守 (@KazariEX)
- Max (@onmax)

---

## v3.21.3/3.21.4 (nuxt/nuxt) - 2026-04-29

[Release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.3)

> 3.21.3 is the next patch release. v3.21.4 was published with no changes due to an issue running the release script for v3.21.3.

## 👉 Changelog

[compare changes](https://github.com/nuxt/nuxt/compare/v3.21.2...v3.21.3)
### 🔥 Performance
- **nuxt:** Batch-resolve typescript hoist paths with cached base roots ([#34862](https://github.com/nuxt/nuxt/pull/34862))
- **vite,webpack:** Use vfs for manifest + vite node server ([#34666](https://github.com/nuxt/nuxt/pull/34666))
### 🩹 Fixes
- **nuxt:** Handle negative zero in getUserTrace slice boundary ([#34524](https://github.com/nuxt/nuxt/pull/34524))
- **nuxt:** Signal error state and clear timers in loading indicator cleanup ([#34523](https://github.com/nuxt/nuxt/pull/34523))
- **nuxt:** Fix broken hook cleanup in route announcer ([#34525](https://github.com/nuxt/nuxt/pull/34525))
- **nuxt:** Filter `clearNuxtState` key enumeration by useState prefix ([#34541](https://github.com/nuxt/nuxt/pull/34541))
- **nuxt:** Correct `useFetch` `cache` options type ([#34551](https://github.com/nuxt/nuxt/pull/34551))
- **nuxt:** Prevent in-flight requests from overwriting cleared async data ([#34553](https://github.com/nuxt/nuxt/pull/34553))
- **nuxt:** Check response status before parsing payload ([#34555](https://github.com/nuxt/nuxt/pull/34555))
- **nuxt:** Handle TS type assertions on member expression callees in keyed functions parser ([#34558](https://github.com/nuxt/nuxt/pull/34558))
- **nitro:** Resolve h3 export path in nitro vfs ([#34566](https://github.com/nuxt/nuxt/pull/34566))
- **nitro:** Use hash-based cache for dev payloads ([#34569](https://github.com/nuxt/nuxt/pull/34569))
- **nuxt:** Await parcel watcher subscription before registering close hook ([#34573](https://github.com/nuxt/nuxt/pull/34573))
- **nuxt:** Self-remove hydration error guards after first navigation ([#34572](https://github.com/nuxt/nuxt/pull/34572))
- **nuxt:** Mark portal properties as configurable ([#34574](https://github.com/nuxt/nuxt/pull/34574))
- **nuxt:** Retry manifest fetch after transient failure ([#34570](https://github.com/nuxt/nuxt/pull/34570))
- **kit:** Add PackagePreset type to addImportsSources ([#34582](https://github.com/nuxt/nuxt/pull/34582))
- **nuxt:** Avoid any return type from `callHookWith` in `vue:setup` ([#34584](https://github.com/nuxt/nuxt/pull/34584))
- **nuxt:** Strip DevOnly components with attributes in production builds ([#34585](https://github.com/nuxt/nuxt/pull/34585))
- **nuxt:** Move parcel watcher debug timer outside subscription loop ([#34590](https://github.com/nuxt/nuxt/pull/34590))
- **nuxt:** Preserve falsy prop values in `NuxtTime` data attribute serialization ([#34600](https://github.com/nuxt/nuxt/pull/34600))
- **nuxt:** Clear cached rejected promise in `callOnce` ([#34614](https://github.com/nuxt/nuxt/pull/34614))
- **nitro:** Set `__buildAssetsURL` before server entry import ([#34607](https://github.com/nuxt/nuxt/pull/34607))
- **nuxt:** Use consistent `[nuxt]` prefix in console warnings ([#34668](https://github.com/nuxt/nuxt/pull/34668))
- **nitro:** Do not add import condition for ssr resolve conditions ([#34739](https://github.com/nuxt/nuxt/pull/34739))
- **rspack,webpack:** Emit `styles.mjs` when inline styles off ([#34697](https://github.com/nuxt/nuxt/pull/34697))
- **nuxt:** Fix FormData body hashing in `useFetch` deduplication key ([#34546](https://github.com/nuxt/nuxt/pull/34546))
- **nuxt,nitro:** Add `Symbol` serialization for dev server logs ([#34575](https://github.com/nuxt/nuxt/pull/34575))
- **vite:** Ensure leading slash in `/@fs` URLs for Windows ([#34810](https://github.com/nuxt/nuxt/pull/34810))
- **vite:** Preserve server-origin errors and surface them via Youch ([#34820](https://github.com/nuxt/nuxt/pull/34820))
- **nuxt:** Fix callOnce navigation mode alternating execution ([#34718](https://github.com/nuxt/nuxt/pull/34718))
- **schema,rspack,webpack:** Respect configured `test` option ([#34827](https://github.com/nuxt/nuxt/pull/34827))
- **nitro:** Restore 'import' condition for ssr resolve ([247254652](https://github.com/nuxt/nuxt/commit/247254652))
- **nuxt:** Propagate unexpected errors from `isDirectorySync` ([#34900](https://github.com/nuxt/nuxt/pull/34900))
- **nitro:** Re-encode `ssrContext.url` to match vue-router ([#34902](https://github.com/nuxt/nuxt/pull/34902))
- **vite:** Remove obsolete `writeDevServer` + handle vite-node precomputed ([c45b45b9c](https://github.com/nuxt/nuxt/commit/c45b45b9c))
- **nitro:** Avoid double-decoding of url ([93e731ba3](https://github.com/nuxt/nuxt/commit/93e731ba3))
- **nuxt:** Sync `_route` when navigating up the route tree ([#34918](https://github.com/nuxt/nuxt/pull/34918))
- **nuxt:** Skip `<NuxtPage>` cached vnode when its suspense is unmounted ([#34899](https://github.com/nuxt/nuxt/pull/34899))
- **nitro:** Only recommend payload extraction when `ssr` is enabled ([#34924](https://github.com/nuxt/nuxt/pull/34924))
- **nuxt:** Flatten buffer before filtering promises and fix rendering of content ([#34863](https://github.com/nuxt/nuxt/pull/34863))
- **nuxt:** Avoid transforming `NuxtTeleportIslandComponent` with nuxt-client directive ([#34817](https://github.com/nuxt/nuxt/pull/34817))
- **nuxt:** Resolve layer aliases in css files ([#34940](https://github.com/nuxt/nuxt/pull/34940))
- **nuxt:** Invoke user-supplied error handler when suppressing render errors ([#34938](https://github.com/nuxt/nuxt/pull/34938))
### 📖 Documentation
- Document that component props are sent in query string ([1bf4fa87c](https://github.com/nuxt/nuxt/commit/1bf4fa87c))
- Fix page:loading:start description to match implementation ([#34617](https://github.com/nuxt/nuxt/pull/34617))
- Add missing jsdoc strings ([30a9a49aa](https://github.com/nuxt/nuxt/commit/30a9a49aa))
- Work around upstream bun bug ([#34792](https://github.com/nuxt/nuxt/pull/34792))
- Use new object boolean syntax when prefetchOn interaction ([#34825](https://github.com/nuxt/nuxt/pull/34825))
- Remove @nuxt/scripts from core modules roadmap ([#34835](https://github.com/nuxt/nuxt/pull/34835))
- Remove @nuxt/hints from core modules roadmap ([#34867](https://github.com/nuxt/nuxt/pull/34867))
- Correct URL ([#34907](https://github.com/nuxt/nuxt/pull/34907))
- Set `NODE_ENV` to `production` in deployment examples ([#34937](https://github.com/nuxt/nuxt/pull/34937))
### 🏡 Chore
- Do not ship `devDependencies` when publishing ([07f05c1a2](https://github.com/nuxt/nuxt/commit/07f05c1a2))
- Remove unused field 🤦 ([5644951b5](https://github.com/nuxt/nuxt/commit/5644951b5))
- Remove explicit copilot instructions ([240721d38](https://github.com/nuxt/nuxt/commit/240721d38))
- Use single renovate PR for `3.x` and `4.x` branches ([8193a6025](https://github.com/nuxt/nuxt/commit/8193a6025))
- Use top level `vulnerabilityAlerts` config ([1975bf748](https://github.com/nuxt/nuxt/commit/1975bf748))
- Dedupe security update prs after update ([df17b0aec](https://github.com/nuxt/nuxt/commit/df17b0aec))
- Throttle per host to reduce rate limits in link checking ([#34488](https://github.com/nuxt/nuxt/pull/34488))
- Drop redundant `as const` ([#34909](https://github.com/nuxt/nuxt/pull/34909))
- Pin typescript ([e94ed7ac5](https://github.com/nuxt/nuxt/commit/e94ed7ac5))
### ✅ Tests
- Use `toThrow` instead of `toThrowError` ([60d5c8d21](https://github.com/nuxt/nuxt/commit/60d5c8d21))
- Reduce matrices in ci ([#34704](https://github.com/nuxt/nuxt/pull/34704))
- Add scroll behavior tests for fixed page key with scrollToTop ([#34761](https://github.com/nuxt/nuxt/pull/34761))
- Update deprecated error assertions ([9ba7ca7b6](https://github.com/nuxt/nuxt/commit/9ba7ca7b6))
### 🤖 CI
- Ensure `latest` tag is published first + manual oidc exchange for dist-tag ([7339257f8](https://github.com/nuxt/nuxt/commit/7339257f8))
- Add bot workflow ([#34677](https://github.com/nuxt/nuxt/pull/34677))
- Fix bot label ([a222917b2](https://github.com/nuxt/nuxt/commit/a222917b2))
- Don't run ossf workflow on `4.x` branch ([c183f341b](https://github.com/nuxt/nuxt/commit/c183f341b))
- Add agent-scan workflow ([#34681](https://github.com/nuxt/nuxt/pull/34681))
- Correct renovate bot name in workflow ([#34708](https://github.com/nuxt/nuxt/pull/34708))
- Correct dependabot bot name in workflow ([#34709](https://github.com/nuxt/nuxt/pull/34709))
- Drop stackblitz link issue commenter ([884ab3757](https://github.com/nuxt/nuxt/commit/884ab3757))
- Inline actions triggered by labels into triage actions ([124f65c5f](https://github.com/nuxt/nuxt/commit/124f65c5f))
- Update workflows to use renamed type labels ([#34933](https://github.com/nuxt/nuxt/pull/34933))

### ❤️ Contributors
- Daniel Roe (@danielroe)
- Sébastien Chopin (@atinux)
- John (@zecar)
- Eduardo San Martin Morote (@posva)
- Florian Heuberger (@Flo0806)
- abeer0 (@iiio2)
- karl (@krlctrl)
- Ori (@oritwoen)
- Kilisei (@kilisei)
- Anthony Fu (@antfu)
- Matej Černý (@cernymatej)
- Bochkarev Ivan (@Ibochkarev)
- Matteo Gabriele (@MatteoGabriele)
- Julien Huang (@huang-julien)
- Yoshihiro Yamaguchi (@yamachi4416)
- antlis (@antlis)
- Om Mishra (@howwohmm)
- Louis Ramos (@wJoenn)
- xjccc (@xjccc)

---

## v1.0.4 (nuxt/scripts) - 2026-04-29

[Release notes](https://github.com/nuxt/scripts/releases/tag/v1.0.4)

### &nbsp;&nbsp;&nbsp;🐞 Bug Fixes

- **google-analytics**: Allow ga-audiences regional Google domains through proxy &nbsp;-&nbsp; by @harlan-zw in https://github.com/nuxt/scripts/issues/729 [<samp>(9ac99)</samp>](https://github.com/nuxt/scripts/commit/9ac9948)
- **google-maps**: Preserve user pan and re-emit ready on color-mode re-init &nbsp;-&nbsp; by @harlan-zw in https://github.com/nuxt/scripts/issues/731 [<samp>(ceecf)</samp>](https://github.com/nuxt/scripts/commit/ceecf57)
- **proxy**: Cover dynamic third-party domains for Clarity and PostHog &nbsp;-&nbsp; by @harlan-zw in https://github.com/nuxt/scripts/issues/732 [<samp>(985d5)</samp>](https://github.com/nuxt/scripts/commit/985d54f)

##### &nbsp;&nbsp;&nbsp;&nbsp;[View changes on GitHub](https://github.com/nuxt/scripts/compare/v1.0.3...v1.0.4)

---

## v4.7.1 (nuxt/ui) - 2026-04-28

[Release notes](https://github.com/nuxt/ui/releases/tag/v4.7.1)

## :bug: Bug Fixes

* **ChatMessage:** make actions slot accessible on touch devices ([f5a3349](https://github.com/nuxt/ui/commit/f5a33496926faa582bac10428ec560cb17757e4c))
* **Drawer:** handle RTL mode ([#6396](https://github.com/nuxt/ui/issues/6396)) ([2e3fed2](https://github.com/nuxt/ui/commit/2e3fed2f002e5321621a923c2af425c0ab69fc81))
* **Link:** prevent double-prefixing with `@nuxtjs/i18n` auto-localization ([#6404](https://github.com/nuxt/ui/issues/6404)) ([dde09d0](https://github.com/nuxt/ui/commit/dde09d06486e68b1b4dd4538f91fefd08a3d7548))
* **ProseImg:** close zoom overlay on Escape key ([e3cdbc5](https://github.com/nuxt/ui/commit/e3cdbc5ad33835e751662cad8a4597d93ee5840f))
* **ProsePrompt:** improve responsive ([0a5b433](https://github.com/nuxt/ui/commit/0a5b433c228f8c08fa13847be147d8f02f7919c8))

## :wave: New Contributors

* @ejfine made their first contribution in https://github.com/nuxt/ui/pull/5284

**Full Changelog**: https://github.com/nuxt/ui/compare/v4.7.0...v4.7.1

---

## v1.0.3 (nuxt/scripts) - 2026-04-28

[Release notes](https://github.com/nuxt/scripts/releases/tag/v1.0.3)

### &nbsp;&nbsp;&nbsp;🐞 Bug Fixes

- Green CI on main &nbsp;-&nbsp; by @harlan-zw [<samp>(377b1)</samp>](https://github.com/nuxt/scripts/commit/377b125)
- **google-maps**: Re-init on color-mode change for cloud-styled mapIds &nbsp;-&nbsp; by @harlan-zw in https://github.com/nuxt/scripts/issues/727 [<samp>(94b7d)</samp>](https://github.com/nuxt/scripts/commit/94b7d11)

##### &nbsp;&nbsp;&nbsp;&nbsp;[View changes on GitHub](https://github.com/nuxt/scripts/compare/v1.0.2...v1.0.3)

---

## v4.0.3 (nuxt/test-utils) - 2026-04-27

[Release notes](https://github.com/nuxt/test-utils/releases/tag/v4.0.3)

> 4.0.3 is the next patch release.

## 👉 Changelog

[compare changes](https://github.com/nuxt/test-utils/compare/v4.0.2...v4.0.3)

### 🩹 Fixes

- **runtime-utils:** Lazily import root-component in mount + render helpers ([#1665](https://github.com/nuxt/test-utils/pull/1665))
- **runtime-utils:** Insert `compilerOptions` conditionally ([#1659](https://github.com/nuxt/test-utils/pull/1659))
- **config:** Enable sourcemaps when vitest coverage is enabled ([#1674](https://github.com/nuxt/test-utils/pull/1674))
- **module:** Exclude test files from Nuxt plugin registration ([#1666](https://github.com/nuxt/test-utils/pull/1666))
- **runtime-utils:** Provide NuxtLink `isActive` slot props ([#1640](https://github.com/nuxt/test-utils/pull/1640))
- **e2e:** Wait for HTTP readiness before resolving `startServer` ([#1675](https://github.com/nuxt/test-utils/pull/1675))

### 🏡 Chore

- Fix typo ([#1663](https://github.com/nuxt/test-utils/pull/1663))
- Bump nitro and nuxt pins in nitro-v3 example ([#1678](https://github.com/nuxt/test-utils/pull/1678))


### ❤️ Contributors
- Daniel Roe (@danielroe)
- Martin Masevski (@Archetipo95)
- Ryota Watanabe (@wattanx)
- Jan Müller (@DerYeger)
- Yoshihiro Yamaguchi (@yamachi4416)
- Sai Asish Y (@SAY-5)

---

## v4.7.0 (nuxt/ui) - 2026-04-24

[Release notes](https://github.com/nuxt/ui/releases/tag/v4.7.0)

## :sparkles: Highlights

### 📋 New Listbox component

The [Listbox](https://ui.nuxt.com/docs/components/listbox) component is a selectable list of items with built-in search, virtualization, and rich item rendering. It's ideal when you want an always-visible list without the overlay behavior of `SelectMenu`.

```vue
<script setup lang="ts">
const items = ref([
  { label: 'France', icon: 'i-lucide-map-pin', value: 'FR' },
  { label: 'Germany', icon: 'i-lucide-map-pin', value: 'DE' },
  { label: 'Italy', icon: 'i-lucide-map-pin', value: 'IT' },
  { label: 'Spain', icon: 'i-lucide-map-pin', value: 'ES' }
])

const value = ref()
</script>

<template>
  <UListbox v-model="value" :items="items" />
</template>
```

### 🤖 New ProsePrompt component

The [ProsePrompt](https://ui.nuxt.com/docs/typography/prompt) component displays pre-built AI prompts inside your docs with one-click copy and direct IDE integration. Users can copy the prompt to their clipboard or open it directly in **Cursor** or **Windsurf** via the `actions` prop.

```mdc
::prompt
---
description: Build a dashboard layout with Nuxt UI.
icon: i-lucide-layout-dashboard
actions:
  - copy
  - cursor
  - windsurf
---
You are a Nuxt UI expert. Help me build a dashboard layout with
a collapsible sidebar and a sticky top navbar.
::
```

### 🌍 Automatic Link localization

The [Link](https://ui.nuxt.com/docs/components/link) component now integrates automatically with [`@nuxtjs/i18n`](https://i18n.nuxtjs.org/) when installed. Internal links are localized using the `$localePath` helper under the hood (#5537).

```vue
<template>
  <!-- Automatically becomes /en/about or /fr/about based on current locale -->
  <ULink to="/about">About</ULink>
</template>
```

This also propagates to every component that accepts a `to` prop (`NavigationMenu`, `Breadcrumb`, `DropdownMenu`, `CommandPalette`, etc.), so routes stay locale-aware across your entire app.

## :rocket: Features

* **AuthForm:** add `separator` slot ([#6305](https://github.com/nuxt/ui/issues/6305)) ([81c7ddb](https://github.com/nuxt/ui/commit/81c7ddb6d47dade3f7f2415a2a9714e949133344))
* **Card:** add `title` and `description` props ([3cf7d75](https://github.com/nuxt/ui/commit/3cf7d7550918c6d29a6dcaffd10d50305f90c4cd)), closes [#6001](https://github.com/nuxt/ui/issues/6001)
* **CommandPalette:** add `group-label` slot ([#6329](https://github.com/nuxt/ui/issues/6329)) ([7fc773c](https://github.com/nuxt/ui/commit/7fc773ca321fb4b7592d49af540f93b70197ae14))
* **CommandPalette:** add `searchDelay` prop ([7d2af05](https://github.com/nuxt/ui/commit/7d2af0514d6b8fce9882d175693c4bea7b1316fd))
* **EditorSuggestionMenu:** expose suggestion matching options ([#6234](https://github.com/nuxt/ui/issues/6234)) ([4427824](https://github.com/nuxt/ui/commit/4427824f04005a84245f883d73d4a4d0156d3996))
* **Link:** auto-localize internal links when `@nuxtjs/i18n` is installed ([#5537](https://github.com/nuxt/ui/issues/5537)) ([92cfda0](https://github.com/nuxt/ui/commit/92cfda0f9f14619e388b2baa9f370e363c9fa73f))
* **Listbox:** new component ([#6307](https://github.com/nuxt/ui/issues/6307)) ([00c1651](https://github.com/nuxt/ui/commit/00c16515bad0040651fd39a01bbf4907d2681f04))
* **ProsePrompt:** new component ([#6362](https://github.com/nuxt/ui/issues/6362)) ([2451ac6](https://github.com/nuxt/ui/commit/2451ac6f499b7790dc4358e51600a07bd263e137))
* **Table:** support sticky header/footer in virtualized mode ([#6217](https://github.com/nuxt/ui/issues/6217)) ([15d32ce](https://github.com/nuxt/ui/commit/15d32cea9831d20600719eb608b1223f15c0f203))
* **Textarea:** expose `autoResize` method ([#6120](https://github.com/nuxt/ui/issues/6120)) ([9c5c0df](https://github.com/nuxt/ui/commit/9c5c0df96caafa59f1199aaa6df115a41de7cd03))

## :bug: Bug Fixes

* **Accordion/Tabs:** use item value as stable key to avoid remounts ([#6380](https://github.com/nuxt/ui/issues/6380)) ([3cee610](https://github.com/nuxt/ui/commit/3cee61016931bb4411c5a6b6b5934fe974836f5c))
* **Avatar:** remove `leading-none` from fallback ([#6383](https://github.com/nuxt/ui/issues/6383)) ([77ce09a](https://github.com/nuxt/ui/commit/77ce09ade34f5ef0ddac8d7421b5b143724642f0))
* **ChatMessage/ChatMessages:** preserve generic message type in slot scope ([#6391](https://github.com/nuxt/ui/issues/6391)) ([20f66db](https://github.com/nuxt/ui/commit/20f66db8e63f1941ce82acd4cc38fd2c2826cbc7))
* **ChatMessages:** prevent layout shift caused by indicator during streaming ([#6297](https://github.com/nuxt/ui/issues/6297)) ([b7160e2](https://github.com/nuxt/ui/commit/b7160e213045dfe2ee37cf83f4a97c72e4c19886))
* **ChatMessages:** use MutationObserver for auto-scroll during streaming ([#6357](https://github.com/nuxt/ui/issues/6357)) ([47bf3cb](https://github.com/nuxt/ui/commit/47bf3cbec92454dc81f6b6473a8f9629c5c160c3))
* **ChatPromptSubmit:** ignore `disabled` prop when status is not `ready` ([600a2ca](https://github.com/nuxt/ui/commit/600a2ca40c3a15b0f7951adad5b9781a2bdb9864))
* **components:** resolve `defaultVariants` in template logic ([#6361](https://github.com/nuxt/ui/issues/6361)) ([75b37d0](https://github.com/nuxt/ui/commit/75b37d0bc9985c4975f1547cdc2f815534d5ceef))
* **ContentSearch/DashboardSearch:** pick shared props from CommandPalette ([cdcf2e5](https://github.com/nuxt/ui/commit/cdcf2e5c656c3efa8e3a2d6be96339fcc18f159a))
* **ContentSearch:** speed up navigation mapping ([0faf2c2](https://github.com/nuxt/ui/commit/0faf2c23c31fc45e191204e7d872dd006a2a7aaf))
* **ContentToc:** use links for scrollspy instead of hardcoded h2/h3 ([#6282](https://github.com/nuxt/ui/issues/6282)) ([6aba2ea](https://github.com/nuxt/ui/commit/6aba2ead4c76f992e1ad76f2fec11c70800143a4))
* **FieldGroup:** prevent context from leaking into portals ([#6313](https://github.com/nuxt/ui/issues/6313)) ([5155e27](https://github.com/nuxt/ui/commit/5155e27e6dd163cca21401737a3f8ac1faeff4bc))
* **FileUpload:** use form field `color` and `highlight` instead of raw props ([bb5a9ed](https://github.com/nuxt/ui/commit/bb5a9ed2b662c3494917dd382a1acc22b5898eb1))
* **Header/DashboardSidebar/Sidebar:** allow auto focus in menu for proper focus trapping ([#6266](https://github.com/nuxt/ui/issues/6266)) ([9b91ee4](https://github.com/nuxt/ui/commit/9b91ee40b06092ce193bb94ca3913c2143dc8ac0))
* **InputDate/InputTime:** increase segments width ([#6339](https://github.com/nuxt/ui/issues/6339)) ([4ebdb2f](https://github.com/nuxt/ui/commit/4ebdb2f24acb37d41f161fd794a63d0eaa0d9655))
* **InputTags:** add missing field group variant ([#6326](https://github.com/nuxt/ui/issues/6326)) ([aae5378](https://github.com/nuxt/ui/commit/aae53784e788a3eca46b6721ab3d977ff5b6a656))
* **Link:** ensure single-root rendering for `v-show` and `$el` resolution ([#6310](https://github.com/nuxt/ui/issues/6310)) ([2c4ff35](https://github.com/nuxt/ui/commit/2c4ff352d81660cc8e7f665b69e90f9e4e4bd05c))
* **Modal/Slideover:** drop empty header wrapper when empty ([#6381](https://github.com/nuxt/ui/issues/6381)) ([1082960](https://github.com/nuxt/ui/commit/1082960e60ae9754e1d947085c2f7efc85793873))
* **module:** use relative `tagPriority` for inline style tags ([#6299](https://github.com/nuxt/ui/issues/6299)) ([ae693d0](https://github.com/nuxt/ui/commit/ae693d0e243eea4e585b5667fc027c97edca16da))
* **PricingTable:** align header elements vertically ([#6111](https://github.com/nuxt/ui/issues/6111)) ([0daacb0](https://github.com/nuxt/ui/commit/0daacb02fa12e1037dc7db9e404cdb7909d0418d))
* **PricingTable:** handle RTL mode ([#6382](https://github.com/nuxt/ui/issues/6382)) ([ab203db](https://github.com/nuxt/ui/commit/ab203db1d50ae4b880d6c6aae367230539695205))
* **ProseCodeCollapse:** match background on overscroll ([28c89fe](https://github.com/nuxt/ui/commit/28c89fe36f68b08f7ea3e0a1c9498526830bd4bb))
* **ProseImg:** respect markdown width attribute ([#6350](https://github.com/nuxt/ui/issues/6350)) ([d4e4ea1](https://github.com/nuxt/ui/commit/d4e4ea1eaa620814273ed84fab44ac6176707652))
* **ProsePre:** get code from DOM if `code` prop is missing ([#6333](https://github.com/nuxt/ui/issues/6333)) ([b808ce4](https://github.com/nuxt/ui/commit/b808ce4661f5232357615fcb40d7d9be8ad1ceb1))
* **Select:** support `item-aligned` position mode ([#6358](https://github.com/nuxt/ui/issues/6358)) ([255807a](https://github.com/nuxt/ui/commit/255807a4bf95b91e8222ccd8bbc60016ec862c1c))

## :wave: New Contributors

* @faizkhairi made their first contribution in https://github.com/nuxt/ui/pull/6266
* @Archetipo95 made their first contribution in https://github.com/nuxt/ui/pull/6234
* @nimonian made their first contribution in https://github.com/nuxt/ui/pull/6350
* @mrkaashee made their first contribution in https://github.com/nuxt/ui/pull/6305
* @tratteo made their first contribution in https://github.com/nuxt/ui/pull/6282
* @Ken-vdE made their first contribution in https://github.com/nuxt/ui/pull/6120
* @claylevering made their first contribution in https://github.com/nuxt/ui/pull/6380
* @ChronicStone made their first contribution in https://github.com/nuxt/ui/pull/6217

**Full Changelog**: https://github.com/nuxt/ui/compare/v4.6.1...v4.7.0

---

## v1.0.2 (nuxt/scripts) - 2026-04-23

[Release notes](https://github.com/nuxt/scripts/releases/tag/v1.0.2)

### &nbsp;&nbsp;&nbsp;🐞 Bug Fixes

- **bundle**: Content-address bundled script filenames for stable SRI &nbsp;-&nbsp; by @harlan-zw in https://github.com/nuxt/scripts/issues/725 [<samp>(f979e)</samp>](https://github.com/nuxt/scripts/commit/f979ede)
- **fathom-analytics**: Drop proxy support, bundle-only with sdkPatches &nbsp;-&nbsp; by @harlan-zw in https://github.com/nuxt/scripts/issues/722 [<samp>(0f27c)</samp>](https://github.com/nuxt/scripts/commit/0f27cbb)

##### &nbsp;&nbsp;&nbsp;&nbsp;[View changes on GitHub](https://github.com/nuxt/scripts/compare/v1.0.1...v1.0.2)

---

## v1.0.1 (nuxt/scripts) - 2026-04-17

[Release notes](https://github.com/nuxt/scripts/releases/tag/v1.0.1)

### &nbsp;&nbsp;&nbsp;🐞 Bug Fixes

- Respect proxying self-hosted domains &nbsp;-&nbsp; by @harlan-zw in https://github.com/nuxt/scripts/issues/718 [<samp>(2bbeb)</samp>](https://github.com/nuxt/scripts/commit/2bbeb68)
- **google-maps**:
  - Prevent blank space during page transitions &nbsp;-&nbsp; by @harlan-zw in https://github.com/nuxt/scripts/issues/715 [<samp>(8a817)</samp>](https://github.com/nuxt/scripts/commit/8a81779)
  - Handle marker + mapOptions.styles conflict &nbsp;-&nbsp; by @harlan-zw in https://github.com/nuxt/scripts/issues/719 [<samp>(67af0)</samp>](https://github.com/nuxt/scripts/commit/67af0c1)
- **vercel-analytics**:
  - Skip script in dev to avoid failed insights POSTs &nbsp;-&nbsp; by @harlan-zw in https://github.com/nuxt/scripts/issues/713 [<samp>(8ef0d)</samp>](https://github.com/nuxt/scripts/commit/8ef0d39)

##### &nbsp;&nbsp;&nbsp;&nbsp;[View changes on GitHub](https://github.com/nuxt/scripts/compare/v1.0.0...v1.0.1)

---

## v1.0.0 (nuxt/scripts) - 2026-04-15

[Release notes](https://github.com/nuxt/scripts/releases/tag/v1.0.0)

> Nuxt Scripts v1 is the first stable release.


Nuxt Scripts v1 is the first stable release, pushing the ecosystem forward for better **privacy** and **performance** for third-party scripts.

## 📣 Highlights

### 🔒 First-Party Mode: Privacy Focused Proxy

Every third-party script request exposes your users data to [fingerprinting](https://firstpartysimulator.net/learn).

Different providers are more intrusive, for example, the X Pixel accesses 9 browser fingerprinting APIs (including `navigator.getBattery()`), sets 5 tracking cookies, and makes requests to 3 separate domains. Microsoft Clarity reads 10 fingerprinting APIs across 3 domains.

First-party mode acts as a **reverse proxy**: scripts are bundled at build time and served from your domain, while runtime requests are securely forwarded through your server. Data sent to third-party servers gets anonymised: IPs (`180.233.124.74` -> `180.233.124.0`), browser versions (`Mozilla/5.0 (compatible; Chrome/120.0)`) and more. This is **auto-enabled** for all scripts that support it.

A side-effect is a performance boost from avoiding extra DNS lookups, fewer cookie banners, and reducing expensive fingerprinting queries. It also makes ad-blockers ineffective since requests appear same-origin.

See the [First-Party Mode Guide](https://scripts.nuxt.com/docs/guides/first-party) and [PR #577](https://github.com/nuxt/scripts/pull/577) for details.

### 🛠️ Rebuilt DevTools

The Nuxt DevTools panel has been rewritten around the v1 privacy and capability model. New views surface the things v1 does differently.

<img width="2764" height="1314" alt="Image" src="https://github.com/user-attachments/assets/47814398-b321-454f-895f-5d659d49a69f" />

### 🎉 Partytown Web Worker Support

Load third-party scripts off the main thread using [Partytown](https://partytown.builder.io/). Scripts run in a web worker, freeing the main thread for your app. Integrates directly with first-party mode. See [PR #576](https://github.com/nuxt/scripts/pull/576).

Set `partytown: true` per-script:

```ts
export default defineNuxtConfig({
  modules: ['@nuxtjs/partytown', '@nuxt/scripts'],
  scripts: {
    registry: {
      plausibleAnalytics: { domain: 'example.com', partytown: true },
      fathomAnalytics: { site: 'XXXXX', partytown: true },
      umamiAnalytics: { websiteId: 'xxx', partytown: true },
    }
  }
  // Forward array auto-configured per-script!
})
```

**Auto-forwarding supported for:** `googleAnalytics`, `plausibleAnalytics`, `fathomAnalytics`, `umamiAnalytics`, `matomoAnalytics`, `segment`, `mixpanelAnalytics`, `bingUet`, `metaPixel`, `xPixel`, `tiktokPixel`, `snapchatPixel`, `redditPixel`, `cloudflareWebAnalytics`

> ⚠️ GA4 has [known issues](https://github.com/BuilderIO/partytown/issues/583) with Partytown. GTM is not compatible (requires DOM access). Consider Plausible, Fathom, or Umami instead.

### 🐦 SSR Social Embeds

Third-party embed scripts (Twitter widgets, Instagram embeds, Bluesky posts) hurt performance and leak user data. Following the [Cloudflare Zaraz approach](https://blog.cloudflare.com/zaraz-supports-server-side-rendering-of-embeds/), Nuxt Scripts now fetches embed data server-side and securely proxies all assets through your domain. See [PR #590](https://github.com/nuxt/scripts/pull/590).

```vue
<ScriptXEmbed tweet-id="1754336034228171055">
  <template #default="{ userName, text, likesFormatted, photos }">
    <!-- Full styling control via scoped slots -->
  </template>
</ScriptXEmbed>

<ScriptInstagramEmbed post-url="https://instagram.com/p/ABC123/">
  <template #default="{ html, shortcode }">
    <div v-html="html" />
  </template>
</ScriptInstagramEmbed>

<ScriptBlueskyEmbed post-url="https://bsky.app/profile/...">
  <template #default="{ html }">
    <div v-html="html" />
  </template>
</ScriptBlueskyEmbed>
```

### ✋ First-Class Consent Controls

v1 treats consent as a first-class concern with two complementary APIs. See the [Consent Guide](https://scripts.nuxt.com/docs/guides/consent), [PR #544](https://github.com/nuxt/scripts/pull/544), [PR #631](https://github.com/nuxt/scripts/pull/631), and [PR #712](https://github.com/nuxt/scripts/pull/712).

Every consent-aware registry script now exposes a vendor-native `consent` object on the returned instance plus a typed `defaultConsent` option applied before the first tracking call.

```ts
const gtm = useScriptGoogleTagManager({
  id: 'GTM-XXX',
  defaultConsent: { ad_storage: 'denied', analytics_storage: 'denied' },
})
// Later, after the user accepts
gtm.consent.update({ ad_storage: 'granted', analytics_storage: 'granted' })

const ttq = useScriptTikTokPixel({ id: '...', defaultConsent: 'hold' })
ttq.consent.grant() // or .revoke() / .hold()

const meta = useScriptMetaPixel({ id: '...', defaultConsent: 'denied' })
meta.consent.grant()
```

### 📦 New Registry Scripts

- **PostHog Analytics** ([#568](https://github.com/nuxt/scripts/pull/568)): Product analytics with feature flags
- **Google reCAPTCHA v3** ([#567](https://github.com/nuxt/scripts/pull/567)): Invisible bot protection
- **TikTok Pixel** ([#569](https://github.com/nuxt/scripts/pull/569)): Conversion tracking
- **Google Sign-In** ([#573](https://github.com/nuxt/scripts/pull/573)): One-tap authentication
- **Rybbit Analytics** ([#453](https://github.com/nuxt/scripts/pull/453)): Privacy-focused open source analytics
- **Databuddy Analytics** ([#495](https://github.com/nuxt/scripts/pull/495)): Lightweight analytics
- **Bing UET** ([#650](https://github.com/nuxt/scripts/pull/650)): Microsoft Advertising conversion tracking
- **Mixpanel Analytics** ([#648](https://github.com/nuxt/scripts/pull/648)): Product analytics and user tracking
- **Vercel Analytics** ([#605](https://github.com/nuxt/scripts/pull/605)): Vercel Web Analytics integration
- **Gravatar** ([#606](https://github.com/nuxt/scripts/pull/606)): Avatar service with privacy-preserving proxy

## Other Changes

### 🔄 Script Reload API

Scripts now expose a [`.reload()`](https://scripts.nuxt.com/docs/api/use-script) method for re-executing DOM-scanning scripts after SPA navigation. See [commit 77f853b](https://github.com/nuxt/scripts/commit/77f853b).

```ts
const script = useScript('/third-party.js')
await script.reload()
```

### 🔐 Automatic SRI Integrity Hashes

Bundled scripts can automatically generate Subresource Integrity hashes. See [PR #575](https://github.com/nuxt/scripts/pull/575).

```ts
export default defineNuxtConfig({
  scripts: {
    assets: {
      integrity: 'sha384'
    }
  }
})
```

### 📊 Script Stats Export

New `@nuxt/scripts/stats` subpath export for auditing script privacy, performance, and security characteristics.

```ts
import { getScriptStats } from '@nuxt/scripts/stats'

const stats = await getScriptStats()
// Privacy ratings (A+ to F), performance ratings, CWV estimates,
// cookie analysis, network behavior, tracked data types
```

### 🎬 YouTube Player Overhaul

- **Isolated player instances** ([#586](https://github.com/nuxt/scripts/pull/586)): Multiple players work correctly
- **Aspect ratio control**: New `ratio` prop
- **Proper cleanup**: Players destroyed on unmount

### 📹 Vimeo Player Enhancements

- **Aspect ratio control** ([#624](https://github.com/nuxt/scripts/pull/624)): New `ratio` prop, matching YouTube Player API

### 🗺️ Google Maps Overhaul

The Google Maps integration received a major DX overhaul for v1, making it feel like a native Vue component library rather than a wrapper around options bags.

**Declarative SFC Components** ([#510](https://github.com/nuxt/scripts/pull/510)): 11 composable components for markers, shapes, overlays, clustering, and more. All use Vue's injection system for parent/child communication and clean up automatically on unmount.

**Custom Marker Content** ([#658](https://github.com/nuxt/scripts/pull/658)): The `#content` slot on `ScriptGoogleMapsMarker` replaces the default pin with any HTML or Vue template. Build price tags, status badges, or any custom marker visual declaratively.

```vue
<ScriptGoogleMapsMarker :position="{ lat: -34.397, lng: 150.644 }">
  <template #content>
    <div class="price-tag">$420k</div>
  </template>
</ScriptGoogleMapsMarker>
```

**Custom Overlay View** ([#658](https://github.com/nuxt/scripts/pull/658)): `ScriptGoogleMapsOverlayView` renders arbitrary Vue content at a map position with full styling control. When nested inside a marker, it auto-inherits position and follows the marker during drag. Supports `v-model:open` for toggling visibility without remounting.

```vue
<ScriptGoogleMapsMarker :position="pos" @click="open = !open">
  <ScriptGoogleMapsOverlayView v-model:open="open" anchor="bottom-center" :offset="{ x: 0, y: -50 }">
    <MyCustomPopup @close="open = false" />
  </ScriptGoogleMapsOverlayView>
</ScriptGoogleMapsMarker>
```

**Direct `:position` Prop**: Marker components now accept `:position` as a top-level prop (no options bag needed for the most common case).

**Additional Components**:
- [**`ScriptGoogleMapsStaticMap`**](https://scripts.nuxt.com/scripts/google-maps/api/static-map) ([#673](https://github.com/nuxt/scripts/pull/673)): The static placeholder is now a standalone component, with images routed through your server so API keys stay server-side. Use it inside `#placeholder` on `ScriptGoogleMaps`, or standalone for store locators and contact pages that never need the interactive Maps API.
- [**`ScriptGoogleMapsGeoJson`**](https://scripts.nuxt.com/scripts/google-maps/api/geojson) ([#656](https://github.com/nuxt/scripts/pull/656)): Declarative wrapper around `google.maps.Data` for loading and styling GeoJSON with full event bindings.

**Infrastructure**:
- **Color mode support** ([#587](https://github.com/nuxt/scripts/pull/587)): Auto light/dark map switching with `mapIds` prop
- **Geocode proxy**: Server-side geocoding reduces billing and hides API keys
- **Memory leak fixes** ([#651](https://github.com/nuxt/scripts/pull/651)): `useGoogleMapsResource` composable ensures all sub-components clean up safely on unmount, even across async boundaries
- **Marker clustering perf** ([#517](https://github.com/nuxt/scripts/pull/517), [#653](https://github.com/nuxt/scripts/pull/653)): Batch operations with `noDraw` flag to avoid multiple rerenders

**Deprecation**: The legacy `ScriptGoogleMapsMarker` (wrapping `google.maps.Marker`) and `ScriptGoogleMapsAdvancedMarkerElement` names have been consolidated into `ScriptGoogleMapsMarker` (wrapping `google.maps.marker.AdvancedMarkerElement`). We removed `ScriptGoogleMapsPinElement`; use the `#content` slot on `ScriptGoogleMapsMarker` instead.

### 🔧 Environment-Variable Config

The module now auto-populates `runtimeConfig.public.scripts` defaults for any enabled registry entry. Script IDs, keys, and domains resolve from `NUXT_PUBLIC_SCRIPTS_*` env vars without any `runtimeConfig` boilerplate. See [PR #634](https://github.com/nuxt/scripts/pull/634).

```bash
# .env
NUXT_PUBLIC_SCRIPTS_GOOGLE_ANALYTICS_ID=G-XXXXXX
NUXT_PUBLIC_SCRIPTS_POSTHOG_API_KEY=phc_xxx
```

## ⚠️ Breaking Changes & Migration

Upgrading from v0? See the [v0 to v1 migration guide](https://scripts.nuxt.com/docs/migration-guide/v0-to-v1) for the summary table and before/after diffs for every breaking change and deprecation.

## Changelog

### &nbsp;&nbsp;&nbsp;🚨 Breaking Changes

- First party mode config &nbsp;-&nbsp; by @harlan-zw [<samp>(01ae8)</samp>](https://github.com/nuxt/scripts/commit/01ae82c)
- Config consolidation for v1 &nbsp;-&nbsp; by @harlan-zw in https://github.com/nuxt/scripts/issues/661 [<samp>(8deac)</samp>](https://github.com/nuxt/scripts/commit/8deacfb)
- Simplify Google Maps components &nbsp;-&nbsp; by @harlan-zw [<samp>(d381c)</samp>](https://github.com/nuxt/scripts/commit/d381c9a)
- Extract `ScriptGoogleMapsStaticMap` as standalone component &nbsp;-&nbsp; by @harlan-zw in https://github.com/nuxt/scripts/issues/673 [<samp>(6947c)</samp>](https://github.com/nuxt/scripts/commit/6947c7a)
- **google-maps**:
  - Deprecate top-level center/zoom props &nbsp;-&nbsp; by @harlan-zw in https://github.com/nuxt/scripts/issues/694 [<samp>(bf560)</samp>](https://github.com/nuxt/scripts/commit/bf560fd)
  - Rename googleMaps expose to mapsApi &nbsp;-&nbsp; by @harlan-zw in https://github.com/nuxt/scripts/issues/695 [<samp>(966de)</samp>](https://github.com/nuxt/scripts/commit/966de43)
  - OverlayView class extraction and reactive position rendering &nbsp;-&nbsp; by @harlan-zw in https://github.com/nuxt/scripts/issues/697 [<samp>(c3347)</samp>](https://github.com/nuxt/scripts/commit/c33473c)
- **paypal**:
  - Migrate to PayPal JavaScript SDK v6 &nbsp;-&nbsp; by @harlan-zw in https://github.com/nuxt/scripts/issues/628 [<samp>(89e33)</samp>](https://github.com/nuxt/scripts/commit/89e3333)

### &nbsp;&nbsp;&nbsp;🚀 Features

- Script `.reload()` &nbsp;-&nbsp; by @harlan-zw [<samp>(77f85)</samp>](https://github.com/nuxt/scripts/commit/77f853b)
- Add SSR social media embeds for X and Instagram &nbsp;-&nbsp; by @harlan-zw and **Claude Opus 4.6 (1M context)** in https://github.com/nuxt/scripts/issues/590 [<samp>(aa542)</samp>](https://github.com/nuxt/scripts/commit/aa542c0)
- Experimental nuxt/partytown support &nbsp;-&nbsp; by @harlan-zw and **Claude Opus 4.6 (1M context)** in https://github.com/nuxt/scripts/issues/576 [<samp>(b67c9)</samp>](https://github.com/nuxt/scripts/commit/b67c9a3)
- First-party proxy mode with privacy anonymization &nbsp;-&nbsp; by @harlan-zw, **Claude Opus 4.6 (1M context)** and **Copilot Autofix powered by AI** in https://github.com/nuxt/scripts/issues/577 [<samp>(3bc81)</samp>](https://github.com/nuxt/scripts/commit/3bc816e)
- `@nuxt/scripts/stats` subpath export &nbsp;-&nbsp; by @harlan-zw [<samp>(202a8)</samp>](https://github.com/nuxt/scripts/commit/202a881)
- `/types-source` subpath export for doc gen &nbsp;-&nbsp; by @harlan-zw [<samp>(e415b)</samp>](https://github.com/nuxt/scripts/commit/e415bac)
- Add Vercel Analytics support &nbsp;-&nbsp; by @harlan-zw in https://github.com/nuxt/scripts/issues/605 [<samp>(2a38f)</samp>](https://github.com/nuxt/scripts/commit/2a38fa4)
- Add Gravatar integration with privacy-preserving proxy &nbsp;-&nbsp; by @harlan-zw in https://github.com/nuxt/scripts/issues/606 [<samp>(9576b)</samp>](https://github.com/nuxt/scripts/commit/9576b5b)
- Auto-populate runtimeConfig for .env registry script overrides &nbsp;-&nbsp; by @harlan-zw in https://github.com/nuxt/scripts/issues/634 [<samp>(1db6f)</samp>](https://github.com/nuxt/scripts/commit/1db6fc1)
- Bluesky embed &nbsp;-&nbsp; by @harlan-zw [<samp>(491da)</samp>](https://github.com/nuxt/scripts/commit/491daf8)
- Endpoint opt-in, path standardization, proxy consolidation &nbsp;-&nbsp; by @harlan-zw in https://github.com/nuxt/scripts/issues/644 [<samp>(fd14d)</samp>](https://github.com/nuxt/scripts/commit/fd14d10)
- Add Mixpanel analytics registry script &nbsp;-&nbsp; by @harlan-zw in https://github.com/nuxt/scripts/issues/648 [<samp>(d11be)</samp>](https://github.com/nuxt/scripts/commit/d11be8a)
- Consent trigger revocation support &nbsp;-&nbsp; by @harlan-zw in https://github.com/nuxt/scripts/issues/631 [<samp>(a6401)</samp>](https://github.com/nuxt/scripts/commit/a6401a4)
- Add Bing UET (Microsoft Advertising) registry script &nbsp;-&nbsp; by @harlan-zw in https://github.com/nuxt/scripts/issues/650 [<samp>(696af)</samp>](https://github.com/nuxt/scripts/commit/696afe8)
- Integrate Partytown with first-party proxy mode &nbsp;-&nbsp; by @harlan-zw in https://github.com/nuxt/scripts/issues/654 [<samp>(80518)</samp>](https://github.com/nuxt/scripts/commit/805182a)
- Add `ScriptGoogleMapsGeoJson` component &nbsp;-&nbsp; by @harlan-zw in https://github.com/nuxt/scripts/issues/655 [<samp>(ee65e)</samp>](https://github.com/nuxt/scripts/commit/ee65ea3)
- Add `ScriptGoogleMapsGeoJson` component " &nbsp;-&nbsp; by @harlan-zw in https://github.com/nuxt/scripts/issues/655 [<samp>(28f80)</samp>](https://github.com/nuxt/scripts/commit/28f80ff)
- New devtools &nbsp;-&nbsp; by @harlan-zw [<samp>(1c285)</samp>](https://github.com/nuxt/scripts/commit/1c2855f)
- Vendor-native consent controls for consent-aware scripts &nbsp;-&nbsp; by @harlan-zw in https://github.com/nuxt/scripts/issues/712 [<samp>(04659)</samp>](https://github.com/nuxt/scripts/commit/0465940)
- **ScriptVimeoPlayer**:
  - Add `ratio` prop &nbsp;-&nbsp; by @AndColla in https://github.com/nuxt/scripts/issues/624 [<samp>(88ab1)</samp>](https://github.com/nuxt/scripts/commit/88ab123)
- **bundling**:
  - Add automatic SRI integrity hash generation &nbsp;-&nbsp; by @harlan-zw and **Claude Opus 4.6 (1M context)** in https://github.com/nuxt/scripts/issues/575 [<samp>(fbdf9)</samp>](https://github.com/nuxt/scripts/commit/fbdf96b)
- **first-party**:
  - Exclude fingerprinting scripts, fix per-script opt-out &nbsp;-&nbsp; by @harlan-zw in https://github.com/nuxt/scripts/issues/662 [<samp>(1ac35)</samp>](https://github.com/nuxt/scripts/commit/1ac35a4)
- **google-maps**:
  - Add ScriptGoogleMapsGeoJson component &nbsp;-&nbsp; by @harlan-zw and @DamianGlowala in https://github.com/nuxt/scripts/issues/656 [<samp>(fb549)</samp>](https://github.com/nuxt/scripts/commit/fb54985)
  - DX overhaul for v1 &nbsp;-&nbsp; by @harlan-zw in https://github.com/nuxt/scripts/issues/659 [<samp>(5a8e6)</samp>](https://github.com/nuxt/scripts/commit/5a8e644)
  - Overlay view panning, cluster auto-hide, and render guard &nbsp;-&nbsp; by @harlan-zw in https://github.com/nuxt/scripts/issues/663 [<samp>(7fc0b)</samp>](https://github.com/nuxt/scripts/commit/7fc0b52)
  - Support transitions with `data-state` &nbsp;-&nbsp; by @harlan-zw [<samp>(61319)</samp>](https://github.com/nuxt/scripts/commit/6131964)
  - Add #renderer slot to ScriptGoogleMapsMarkerClusterer &nbsp;-&nbsp; by @harlan-zw in https://github.com/nuxt/scripts/issues/675 [<samp>(46798)</samp>](https://github.com/nuxt/scripts/commit/4679886)
  - OverlayView defaultOpen prop and LatLng position widening &nbsp;-&nbsp; by @harlan-zw in https://github.com/nuxt/scripts/issues/696 [<samp>(7bfc7)</samp>](https://github.com/nuxt/scripts/commit/7bfc780)
- **posthog**:
  - Support proxy mode &nbsp;-&nbsp; by @harlan-zw [<samp>(6c467)</samp>](https://github.com/nuxt/scripts/commit/6c4675f)
- **proxy**:
  - Granular per-script privacy controls &nbsp;-&nbsp; by @harlan-zw in https://github.com/nuxt/scripts/issues/611 [<samp>(ec2a6)</samp>](https://github.com/nuxt/scripts/commit/ec2a60a)
- **registry**:
  - Add TikTok Pixel script &nbsp;-&nbsp; by @harlan-zw and **Claude Opus 4.6 (1M context)** in https://github.com/nuxt/scripts/issues/569 [<samp>(48385)</samp>](https://github.com/nuxt/scripts/commit/4838509)
  - Add Google reCAPTCHA v3 script &nbsp;-&nbsp; by @harlan-zw and **Claude Opus 4.6 (1M context)** in https://github.com/nuxt/scripts/issues/567 [<samp>(c2601)</samp>](https://github.com/nuxt/scripts/commit/c2601c5)
  - Add PostHog analytics script &nbsp;-&nbsp; by @harlan-zw and **Claude Opus 4.6 (1M context)** in https://github.com/nuxt/scripts/issues/568 [<samp>(c91ea)</samp>](https://github.com/nuxt/scripts/commit/c91eaa5)
  - Add Google Sign-In script &nbsp;-&nbsp; by @harlan-zw and **Claude Opus 4.6 (1M context)** in https://github.com/nuxt/scripts/issues/573 [<samp>(3b4e6)</samp>](https://github.com/nuxt/scripts/commit/3b4e676)
- **security**:
  - HMAC signing infrastructure for proxy endpoints &nbsp;-&nbsp; by @harlan-zw in https://github.com/nuxt/scripts/issues/699 [<samp>(3ca07)</samp>](https://github.com/nuxt/scripts/commit/3ca078c)

### &nbsp;&nbsp;&nbsp;🐞 Bug Fixes

- Broken type augmenting &nbsp;-&nbsp; by @harlan-zw [<samp>(c685f)</samp>](https://github.com/nuxt/scripts/commit/c685f43)
- Add `estree-walker` as a dependency &nbsp;-&nbsp; by @danielroe in https://github.com/nuxt/scripts/issues/583 [<samp>(a8d20)</samp>](https://github.com/nuxt/scripts/commit/a8d20b0)
- Align templates with existing augments &nbsp;-&nbsp; by @danielroe and @harlan-zw in https://github.com/nuxt/scripts/issues/589 [<samp>(e2050)</samp>](https://github.com/nuxt/scripts/commit/e2050a2)
- Safer resolve of triggers via nuxt.config &nbsp;-&nbsp; by @harlan-zw [<samp>(73870)</samp>](https://github.com/nuxt/scripts/commit/738703a)
- Import from `@nuxt/schema` &nbsp;-&nbsp; by @danielroe in https://github.com/nuxt/scripts/issues/600 [<samp>(1addd)</samp>](https://github.com/nuxt/scripts/commit/1adddab)
- Explicit opt-in for proxy mode &nbsp;-&nbsp; by @harlan-zw [<samp>(ef5f4)</samp>](https://github.com/nuxt/scripts/commit/ef5f418)
- Migrate to unplugin v3 &nbsp;-&nbsp; by @harlan-zw [<samp>(409a8)</samp>](https://github.com/nuxt/scripts/commit/409a88c)
- Better registry key matching &nbsp;-&nbsp; by @harlan-zw [<samp>(23c75)</samp>](https://github.com/nuxt/scripts/commit/23c7545)
- Broken bare domain path matching &nbsp;-&nbsp; by @harlan-zw [<samp>(58fe9)</samp>](https://github.com/nuxt/scripts/commit/58fe9e3)
- Broken bundle transforms &nbsp;-&nbsp; by @harlan-zw [<samp>(84709)</samp>](https://github.com/nuxt/scripts/commit/84709eb)
- Protect against broken new URL when proxying &nbsp;-&nbsp; by @harlan-zw [<samp>(cb7ff)</samp>](https://github.com/nuxt/scripts/commit/cb7ff7e)
- Preserve compressed/binary request bodies in proxy handler &nbsp;-&nbsp; by @harlan-zw in https://github.com/nuxt/scripts/issues/619 [<samp>(c3a60)</samp>](https://github.com/nuxt/scripts/commit/c3a6098)
- Npm-mode registry scripts stored at $$scripts instead of $scripts &nbsp;-&nbsp; by @zizzfizzix in https://github.com/nuxt/scripts/issues/623 [<samp>(3163b)</samp>](https://github.com/nuxt/scripts/commit/3163bad)
- Broken $script write &nbsp;-&nbsp; by @harlan-zw [<samp>(985ab)</samp>](https://github.com/nuxt/scripts/commit/985ab11)
- Allow custom script keys in ScriptRegistry type &nbsp;-&nbsp; by @harlan-zw in https://github.com/nuxt/scripts/issues/632 [<samp>(00fba)</samp>](https://github.com/nuxt/scripts/commit/00fbaae)
- First-party mode improvements &nbsp;-&nbsp; by @harlan-zw [<samp>(93dee)</samp>](https://github.com/nuxt/scripts/commit/93dee29)
- Improved script types &nbsp;-&nbsp; by @harlan-zw [<samp>(b3439)</samp>](https://github.com/nuxt/scripts/commit/b3439bb)
- Flakey first-party mode &nbsp;-&nbsp; by @harlan-zw [<samp>(75485)</samp>](https://github.com/nuxt/scripts/commit/754852c)
- Avoid mutating runtimeConfig scriptOptions &nbsp;-&nbsp; by @onmax in https://github.com/nuxt/scripts/issues/638 [<samp>(7e139)</samp>](https://github.com/nuxt/scripts/commit/7e139b3)
- Broken schema generation &nbsp;-&nbsp; by @harlan-zw [<samp>(0f047)</samp>](https://github.com/nuxt/scripts/commit/0f047dd)
- Bad first party warnings &nbsp;-&nbsp; by @harlan-zw [<samp>(8877c)</samp>](https://github.com/nuxt/scripts/commit/8877cd2)
- Target canvas fingerprinting at build-time &nbsp;-&nbsp; by @harlan-zw [<samp>(b1c23)</samp>](https://github.com/nuxt/scripts/commit/b1c235d)
- Improve registry script DX and type safety &nbsp;-&nbsp; by @harlan-zw in https://github.com/nuxt/scripts/issues/647 [<samp>(32ff4)</samp>](https://github.com/nuxt/scripts/commit/32ff4fa)
- Resolve merge conflicts keeping normalized tuple approach with false support &nbsp;-&nbsp; by @harlan-zw [<samp>(3db19)</samp>](https://github.com/nuxt/scripts/commit/3db198b)
- Add BuiltInRegistryScriptKey to prevent augmented keys from breaking typecheck &nbsp;-&nbsp; by @harlan-zw [<samp>(40056)</samp>](https://github.com/nuxt/scripts/commit/4005627)
- Prevent memory leak in ScriptGoogleMapsAdvancedMarkerElement &nbsp;-&nbsp; by @harlan-zw in https://github.com/nuxt/scripts/issues/649 [<samp>(a597d)</samp>](https://github.com/nuxt/scripts/commit/a597de9)
- Prevent memory leaks in all Google Maps sub-components &nbsp;-&nbsp; by @harlan-zw in https://github.com/nuxt/scripts/issues/651 [<samp>(03938)</samp>](https://github.com/nuxt/scripts/commit/039380e)
- Update e2e bundle snapshot hash &nbsp;-&nbsp; by @harlan-zw [<samp>(8aaea)</samp>](https://github.com/nuxt/scripts/commit/8aaea60)
- Env not being picked up always &nbsp;-&nbsp; by @harlan-zw [<samp>(8a938)</samp>](https://github.com/nuxt/scripts/commit/8a938db)
- Mark useScript instance as raw &nbsp;-&nbsp; by @harlan-zw [<samp>(37d38)</samp>](https://github.com/nuxt/scripts/commit/37d3870)
- Asset path broken when using query params &nbsp;-&nbsp; by @harlan-zw [<samp>(710f8)</samp>](https://github.com/nuxt/scripts/commit/710f877)
- Remove redundant `=== false` check causing type error in registry &nbsp;-&nbsp; by @harlan-zw [<samp>(f53a1)</samp>](https://github.com/nuxt/scripts/commit/f53a11b)
- Add missing proxy domains across registry scripts &nbsp;-&nbsp; by @harlan-zw [<samp>(1c47e)</samp>](https://github.com/nuxt/scripts/commit/1c47e72)
- Add v0 migration warnings and docs for breaking config changes &nbsp;-&nbsp; by @harlan-zw in https://github.com/nuxt/scripts/issues/679 [<samp>(63d4d)</samp>](https://github.com/nuxt/scripts/commit/63d4da5)
- Add defineSlots to all components for proper slot type inference &nbsp;-&nbsp; by @harlan-zw in https://github.com/nuxt/scripts/issues/684 [<samp>(4df13)</samp>](https://github.com/nuxt/scripts/commit/4df13ed)
- Inherit registry scriptOptions in composable instances &nbsp;-&nbsp; by @harlan-zw in https://github.com/nuxt/scripts/issues/691 [<samp>(698a5)</samp>](https://github.com/nuxt/scripts/commit/698a585)
- Missing Bing UET types &nbsp;-&nbsp; by @harlan-zw in https://github.com/nuxt/scripts/issues/710 [<samp>(96db0)</samp>](https://github.com/nuxt/scripts/commit/96db067)
- Quiter warnings &nbsp;-&nbsp; by @harlan-zw [<samp>(c98e8)</samp>](https://github.com/nuxt/scripts/commit/c98e893)
- Runtime script proxy signing &nbsp;-&nbsp; by @harlan-zw [<samp>(6725e)</samp>](https://github.com/nuxt/scripts/commit/6725e49)
- Quite warnings for embeds &nbsp;-&nbsp; by @harlan-zw [<samp>(230cd)</samp>](https://github.com/nuxt/scripts/commit/230cd32)
- **ScriptGoogleMapsPinElement**:
  - V1 migration helpers &nbsp;-&nbsp; by @harlan-zw [<samp>(a1595)</samp>](https://github.com/nuxt/scripts/commit/a1595e0)
- **Vimeo**:
  - `placeholderObjectFit` &nbsp;-&nbsp; by @harlan-zw [<samp>(61b1c)</samp>](https://github.com/nuxt/scripts/commit/61b1c47)
- **YouTube**:
  - Fetch placeholder with high priority if above the folder &nbsp;-&nbsp; by @harlan-zw [<samp>(420fe)</samp>](https://github.com/nuxt/scripts/commit/420feea)
- **ci**:
  - Run nuxt prepare at root so .nuxt/tsconfig.json exists for build &nbsp;-&nbsp; by @harlan-zw [<samp>(edc3b)</samp>](https://github.com/nuxt/scripts/commit/edc3bcf)
- **devtools**:
  - Clean up &nbsp;-&nbsp; by @harlan-zw [<samp>(1178c)</samp>](https://github.com/nuxt/scripts/commit/1178c1e)
  - Broken tooltips &nbsp;-&nbsp; by @harlan-zw [<samp>(ae2f2)</samp>](https://github.com/nuxt/scripts/commit/ae2f2bd)
- **first-party**:
  - Inject proxy endpoints for boolean/mock registry entries &nbsp;-&nbsp; by @oritwoen in https://github.com/nuxt/scripts/issues/640 [<samp>(569ee)</samp>](https://github.com/nuxt/scripts/commit/569eeeb)
  - Missing scripts &nbsp;-&nbsp; by @harlan-zw [<samp>(2f0c9)</samp>](https://github.com/nuxt/scripts/commit/2f0c93c)
- **ga**:
  - Broken script rewrite &nbsp;-&nbsp; by @harlan-zw [<samp>(e0e1c)</samp>](https://github.com/nuxt/scripts/commit/e0e1c0e)
- **google-analytics**:
  - Add www.google.com and www.googletagmanager.com to proxy domains &nbsp;-&nbsp; by @harlan-zw in https://github.com/nuxt/scripts/issues/678 [<samp>(30074)</samp>](https://github.com/nuxt/scripts/commit/3007458)
- **google-maps**:
  - Static maps proxy, color mode, and bug fixes &nbsp;-&nbsp; by @harlan-zw and **Claude Opus 4.6 (1M context)** in https://github.com/nuxt/scripts/issues/587 [<samp>(2f8ad)</samp>](https://github.com/nuxt/scripts/commit/2f8ad9b)
  - Use noDraw flag in AdvancedMarkerElement clusterer operations &nbsp;-&nbsp; by @harlan-zw in https://github.com/nuxt/scripts/issues/653 [<samp>(d2591)</samp>](https://github.com/nuxt/scripts/commit/d25917e)
  - Fix OverlayView, InfoWindow, and AdvancedMarkerElement DX issues &nbsp;-&nbsp; by @harlan-zw in https://github.com/nuxt/scripts/issues/660 [<samp>(b65e5)</samp>](https://github.com/nuxt/scripts/commit/b65e5db)
  - Proxy registration order &nbsp;-&nbsp; by @harlan-zw [<samp>(9e9f6)</samp>](https://github.com/nuxt/scripts/commit/9e9f693)
  - Flatten emits &nbsp;-&nbsp; by @harlan-zw [<samp>(38697)</samp>](https://github.com/nuxt/scripts/commit/3869744)
  - Maybe solve race condition and warnings &nbsp;-&nbsp; by @harlan-zw [<samp>(72484)</samp>](https://github.com/nuxt/scripts/commit/72484c1)
  - Remove redundant slot props from OverlayView &nbsp;-&nbsp; by @harlan-zw in https://github.com/nuxt/scripts/issues/666 [<samp>(c2f8a)</samp>](https://github.com/nuxt/scripts/commit/c2f8a8b)
  - Bind `$attrs` to overlay view &nbsp;-&nbsp; by @DamianGlowala and **Damian Głowala** in https://github.com/nuxt/scripts/issues/672 [<samp>(e6ecf)</samp>](https://github.com/nuxt/scripts/commit/e6ecfff)
  - Prevent zoom/pan reset when overlay toggles &nbsp;-&nbsp; by @harlan-zw in https://github.com/nuxt/scripts/issues/685 [<samp>(0e4ae)</samp>](https://github.com/nuxt/scripts/commit/0e4ae9e)
  - Prevent center reset on re-render and export clusterer types &nbsp;-&nbsp; by @harlan-zw and **Claude Opus 4.6 (1M context)** in https://github.com/nuxt/scripts/issues/686 [<samp>(6fdd5)</samp>](https://github.com/nuxt/scripts/commit/6fdd533)
  - Close races in resolveQueryToLatLng &nbsp;-&nbsp; by @harlan-zw in https://github.com/nuxt/scripts/issues/693 [<samp>(33ebf)</samp>](https://github.com/nuxt/scripts/commit/33ebf61)
  - Guard pan-on-open for closed/unpositioned overlay &nbsp;-&nbsp; by @harlan-zw in https://github.com/nuxt/scripts/issues/698 [<samp>(506df)</samp>](https://github.com/nuxt/scripts/commit/506dfd8)
- **gravatar**:
  - Broken proxy &nbsp;-&nbsp; by @harlan-zw [<samp>(1c31a)</samp>](https://github.com/nuxt/scripts/commit/1c31a71)
- **gtm**:
  - Invoke onBeforeGtmStart callback when ID is in config &nbsp;-&nbsp; by @harlan-zw and **Claude Opus 4.6 (1M context)** in https://github.com/nuxt/scripts/issues/584 [<samp>(f8ce5)</samp>](https://github.com/nuxt/scripts/commit/f8ce5a1)
  - Extend gtm config to set default consent mode on init &nbsp;-&nbsp; by @mmeester in https://github.com/nuxt/scripts/issues/544 [<samp>(9efc1)</samp>](https://github.com/nuxt/scripts/commit/9efc16f)
- **instagram**:
  - Safer HTML parsing &nbsp;-&nbsp; by @harlan-zw [<samp>(e4b22)</samp>](https://github.com/nuxt/scripts/commit/e4b2277)
- **matomo**:
  - Respect user-provided URL protocol instead of forcing HTTPS &nbsp;-&nbsp; by @harlan-zw in https://github.com/nuxt/scripts/issues/572 [<samp>(78367)</samp>](https://github.com/nuxt/scripts/commit/78367b1)
- **plausible**:
  - Use consistent window reference in clientInit stub &nbsp;-&nbsp; by @harlan-zw and **Claude Opus 4.6 (1M context)** in https://github.com/nuxt/scripts/issues/574 [<samp>(4c794)</samp>](https://github.com/nuxt/scripts/commit/4c79486)
  - Broken firstParty mode &nbsp;-&nbsp; by @harlan-zw [<samp>(3b936)</samp>](https://github.com/nuxt/scripts/commit/3b93696)
  - Support bundling with scriptId &nbsp;-&nbsp; by @harlan-zw [<samp>(9dcf6)</samp>](https://github.com/nuxt/scripts/commit/9dcf6a4)
- **posthog**:
  - 'history_change' as a capture_pageview option &nbsp;-&nbsp; by @zizzfizzix in https://github.com/nuxt/scripts/issues/620 [<samp>(f0e11)</samp>](https://github.com/nuxt/scripts/commit/f0e1129)
  - Unwrap array registry entry before injecting firstParty apiHost &nbsp;-&nbsp; by @zizzfizzix in https://github.com/nuxt/scripts/issues/625 [<samp>(86945)</samp>](https://github.com/nuxt/scripts/commit/869458c)
  - Expose Partial<PostHogConfig> on config field &nbsp;-&nbsp; by @zizzfizzix in https://github.com/nuxt/scripts/issues/626 [<samp>(52f01)</samp>](https://github.com/nuxt/scripts/commit/52f01c0)
  - Ensure api host is runtime properly &nbsp;-&nbsp; by @harlan-zw [<samp>(f0472)</samp>](https://github.com/nuxt/scripts/commit/f0472de)
- **proxy**:
  - Missing path separators &nbsp;-&nbsp; by @harlan-zw [<samp>(a935e)</samp>](https://github.com/nuxt/scripts/commit/a935e97)
  - Missing script src &nbsp;-&nbsp; by @harlan-zw [<samp>(fadda)</samp>](https://github.com/nuxt/scripts/commit/fadda86)
- **rybbit**:
  - Queue custom events before script loads &nbsp;-&nbsp; by @harlan-zw and **Claude Opus 4.6 (1M context)** in https://github.com/nuxt/scripts/issues/585 [<samp>(cdfb6)</samp>](https://github.com/nuxt/scripts/commit/cdfb697)
  - Deprecate window accessor &nbsp;-&nbsp; by @harlan-zw [<samp>(05dfc)</samp>](https://github.com/nuxt/scripts/commit/05dfc23)
- **script-meta**:
  - Better stats &nbsp;-&nbsp; by @harlan-zw [<samp>(722ea)</samp>](https://github.com/nuxt/scripts/commit/722ea89)
- **stats**:
  - Expose all privacy apis &nbsp;-&nbsp; by @harlan-zw [<samp>(a5fdf)</samp>](https://github.com/nuxt/scripts/commit/a5fdf01)
- **tiktok**:
  - Missing global &nbsp;-&nbsp; by @harlan-zw [<samp>(8b391)</samp>](https://github.com/nuxt/scripts/commit/8b39140)
- **types**:
  - Add googleSignIn to ScriptRegistry &nbsp;-&nbsp; by @zizzfizzix in https://github.com/nuxt/scripts/issues/627 [<samp>(be31e)</samp>](https://github.com/nuxt/scripts/commit/be31ec1)
  - Broken IDE display of registry types &nbsp;-&nbsp; by @harlan-zw and **Copilot** in https://github.com/nuxt/scripts/issues/683 [<samp>(afbb6)</samp>](https://github.com/nuxt/scripts/commit/afbb6bd)
  - Prevent registry entry types from collapsing to `never` &nbsp;-&nbsp; by @harlan-zw in https://github.com/nuxt/scripts/issues/701 [<samp>(fdaf0)</samp>](https://github.com/nuxt/scripts/commit/fdaf089)
- **youtube**:
  - Isolate player instances and fix multiple bugs &nbsp;-&nbsp; by @harlan-zw and **Claude Opus 4.6 (1M context)** in https://github.com/nuxt/scripts/issues/586 [<samp>(dc4c7)</samp>](https://github.com/nuxt/scripts/commit/dc4c7f4)

### &nbsp;&nbsp;&nbsp;🏎 Performance

- Migrate plugins to oxc-walker (parseAndWalk) &nbsp;-&nbsp; by @harlan-zw in https://github.com/nuxt/scripts/issues/610 [<samp>(abb95)</samp>](https://github.com/nuxt/scripts/commit/abb95a2)

##### &nbsp;&nbsp;&nbsp;&nbsp;[View changes on GitHub](https://github.com/nuxt/scripts/compare/v0.13.2...v1.0.0)

---

## v1.0.0-rc.11 (nuxt/scripts) - 2026-04-15

[Release notes](https://github.com/nuxt/scripts/releases/tag/v1.0.0-rc.11)

### &nbsp;&nbsp;&nbsp;🐞 Bug Fixes

- Quite warnings for embeds &nbsp;-&nbsp; by @harlan-zw [<samp>(230cd)</samp>](https://github.com/nuxt/scripts/commit/230cd32)

##### &nbsp;&nbsp;&nbsp;&nbsp;[View changes on GitHub](https://github.com/nuxt/scripts/compare/v1.0.0-rc.10...v1.0.0-rc.11)

---

## v1.0.0-rc.10 (nuxt/scripts) - 2026-04-15

[Release notes](https://github.com/nuxt/scripts/releases/tag/v1.0.0-rc.10)

### &nbsp;&nbsp;&nbsp;🚀 Features

- Vendor-native consent controls for consent-aware scripts &nbsp;-&nbsp; by @harlan-zw in https://github.com/nuxt/scripts/issues/712 [<samp>(04659)</samp>](https://github.com/nuxt/scripts/commit/0465940)

### &nbsp;&nbsp;&nbsp;🐞 Bug Fixes

- Quiter warnings &nbsp;-&nbsp; by @harlan-zw [<samp>(c98e8)</samp>](https://github.com/nuxt/scripts/commit/c98e893)
- Runtime script proxy signing &nbsp;-&nbsp; by @harlan-zw [<samp>(6725e)</samp>](https://github.com/nuxt/scripts/commit/6725e49)
- **devtools**: Broken tooltips &nbsp;-&nbsp; by @harlan-zw [<samp>(ae2f2)</samp>](https://github.com/nuxt/scripts/commit/ae2f2bd)

##### &nbsp;&nbsp;&nbsp;&nbsp;[View changes on GitHub](https://github.com/nuxt/scripts/compare/v1.0.0-rc.9...v1.0.0-rc.10)

---

## v1.0.0-rc.9 (nuxt/scripts) - 2026-04-14

[Release notes](https://github.com/nuxt/scripts/releases/tag/v1.0.0-rc.9)

### &nbsp;&nbsp;&nbsp;🐞 Bug Fixes

- Missing Bing UET types &nbsp;-&nbsp; by @harlan-zw in https://github.com/nuxt/scripts/issues/710 [<samp>(96db0)</samp>](https://github.com/nuxt/scripts/commit/96db067)

##### &nbsp;&nbsp;&nbsp;&nbsp;[View changes on GitHub](https://github.com/nuxt/scripts/compare/v1.0.0-rc.8...v1.0.0-rc.9)

---

## v0.13.4 (nuxt/scripts) - 2026-04-14

[Release notes](https://github.com/nuxt/scripts/releases/tag/v0.13.4)

### &nbsp;&nbsp;&nbsp;🐞 Bug Fixes

- Avoid mutating runtimeConfig when merging registry script options &nbsp;-&nbsp; by @harlan-zw in https://github.com/nuxt/scripts/issues/708 [<samp>(16924)</samp>](https://github.com/nuxt/scripts/commit/16924a9)

##### &nbsp;&nbsp;&nbsp;&nbsp;[View changes on GitHub](https://github.com/nuxt/scripts/compare/v0.13.2...v0.13.4)

---

## v0.13.3 (nuxt/scripts) - 2026-04-14

[Release notes](https://github.com/nuxt/scripts/releases/tag/v0.13.3)

**Full Changelog**: https://github.com/nuxt/scripts/compare/v0.13.3...v0.13.3

---
