# Nuxt Changelog

> Latest releases from Nuxt and official modules.

## v4.8.0 (nuxt/ui) - 2026-05-21

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

## ✨ Highlights

### 🎨 Theme component prop defaults

The [`Theme`](https://ui.nuxt.com/docs/components/theme#prop-defaults) component can now override **default prop values** for all descendant components. Pass a `props` object where keys are component names and values are their prop overrides:

```vue
<template>
  <UTheme
    :props="{
      tooltip: { delayDuration: 0, arrow: true },
      button: { color: 'neutral', variant: 'subtle', size: 'lg' },
      input: { size: 'lg' }
    }"
  >
    <UTooltip text="Tooltip">
      <UButton label="Save" />
    </UTooltip>

    <UInput placeholder="Search..." />
  </UTheme>
</template>
```

Explicit props on a component always take priority. Theme components can be nested (innermost wins) and propagate through the entire tree via `provide` / `inject`.

### 🔍 ContentSearch async search

The [`ContentSearch`](https://ui.nuxt.com/docs/components/content-search#search) component now supports [FTS5 full-text search](https://www.sqlite.org/fts5.html) via the new `search` prop and the [`useSearchCollection`](https://content.nuxt.com/docs/utils/use-search-collection) composable ([nuxt/content#3787](https://github.com/nuxt/content/pull/3787), released in [`@nuxt/content` v3.14.0](https://github.com/nuxt/content/releases/tag/v3.14.0)). Instead of loading all content upfront with `files` and filtering client-side with Fuse.js, you can now run async queries with highlighted snippets:

```vue
<script setup lang="ts">
const { search, status, init } = useSearchCollection('content', {
  immediate: false,
  ignoredTags: ['style']
})

const { open } = useContentSearch()

watch(open, (value) => {
  if (value && status.value === 'idle') {
    init()
  }
})
</script>

<template>
  <UContentSearch :search="search" :search-status="status" />
</template>
```

> You can check out the new search on https://ui.nuxt.com or https://nuxt.com.

## 🚨 Breaking Changes

* **InputMenu:** rename `autocomplete` prop to `mode` to free up HTML attribute (#6474)

The boolean `autocomplete` prop introduced in [v4.6.0](https://github.com/nuxt/ui/releases/tag/v4.6.0) collided with the standard HTML `autocomplete` attribute used for browser autofill (`address-line1`, `one-time-code`, `email`, etc.). It has been renamed to `mode` which accepts `'combobox' | 'autocomplete'` (defaults to `combobox`). The HTML `autocomplete` attribute now falls through to the inner input like other form components.

```diff
- <UInputMenu autocomplete :items="items" />
+ <UInputMenu mode="autocomplete" :items="items" />
```

## 🚀 Features

* **Avatar/AvatarGroup:** add `color` prop (#6405) (6f2396f)
* **Breadcrumb:** add `color` prop (#6406) (955dac1)
* **ChatMessage:** add `body` slot and improve actions alignment (#6460) (48685b6)
* **ChatMessage:** add `color` prop and `header` slot (#6407) (c6ce8ca)
* **ChatPrompt:** add `submitOnEnter` prop to control Enter behavior (b597f90)
* **Checkbox/RadioGroup/Switch:** add `highlight` prop for error ring styling (a0deee4)
* **CommandPalette:** search and highlight description field (524c34d)
* **ContentSearch/DashboardSearch:** enable Fuse.js token search by default (ba08220)
* **ContentSearch:** add async search support via `useSearchCollection` (#6432) (a1bef8b)
* **DashboardGroup:** add `storageOptions` prop (8f0101b)
* **Error:** add `icon` prop and `leading` slot (e6ea707)
* **Separator:** add `position` prop (#6415) (844660a)
* **Theme:** override component prop defaults (#6031) (71c008e)

## 🐛 Bug Fixes

* **ChatMessage:** add `wrap-break-word` to content slot (#6476) (eb468e6)
* **CommandPalette:** only split tokens in highlight when `useTokenSearch` is enabled (898fbce)
* **CommandPalette:** preserve relative order of ignoreFilter groups (e4c1787)
* **CommandPalette:** re-highlight first item after debounced results render (efd7b8e)
* **CommandPalette:** update default fuse keys in docs and search components (0d9cc0d)
* **components:** apply `theme.prefix` to hardcoded utility classes (f51b1e8)
* **components:** constrain popper content to available viewport height (007b136)
* **ContentSearch:** preserve intermediate ancestors in breadcrumb prefix (#6466) (f639b19)
* **ContentToc:** apply `ui.trigger` prop to trigger elements (252b906)
* **defineShortcuts:** use `e.code` for alt shortcuts to handle macOS key remapping (231f156)
* **FileUpload:** pass `disabled` attribute to button variant (2890c83)
* **Form:** improve errors type (#6208) (c1090ab)
* **InputMenu/Select/SelectMenu:** respect `trailing: false` over default `trailingIcon` (#6457) (65b47ce)
* **InputMenu:** rename `autocomplete` prop to `mode` to free up HTML attribute (#6474) (2799fa6)
* **module:** don't require `@nuxtjs/mdc` when using `content` option (89f7778)
* **module:** pass computed ref directly to useHead innerHTML (00b7476)
* **module:** ship stripped `#build/ui.css` fallback for tooling (083c2a9)
* **ProseKbd:** add default slot and make `value` optional (f317c7f)
* **Textarea:** autoresize on mount with pre-filled value (e96a0b6)
* **useComponentProps:** treat array-typed theme values as `ClassValue` leaves (cac3860)

## 👋 Contributors

* @benjamincanac
* @Bobakanoosh
* @maximepvrt
* @zAlweNy26
* @Akur1a

**Full Changelog**: https://github.com/nuxt/ui/compare/v4.7.1...v4.8.0

---

## v1.1.1 (nuxt/scripts) - 2026-05-21

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

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

- **security**:
  - Allow opting out of proxy page token in SSR payload &nbsp;-&nbsp; by @harlan-zw in https://github.com/nuxt/scripts/issues/789 [<samp>(4738a)</samp>](https://github.com/nuxt/scripts/commit/4738a27)
  - Allow disabling proxy signing with `security: false` &nbsp;-&nbsp; by @harlan-zw in https://github.com/nuxt/scripts/issues/790 [<samp>(dc11a)</samp>](https://github.com/nuxt/scripts/commit/dc11ae0)
- **tiktok-pixel**:
  - Use TikTok's array snippet protocol &nbsp;-&nbsp; by @harlan-zw in https://github.com/nuxt/scripts/issues/786 [<samp>(f46cc)</samp>](https://github.com/nuxt/scripts/commit/f46ccb6)

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

---

## v1.1.2 (nuxt/hints) - 2026-05-18

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

### 🚀 Enhancements

- **rpc:** Implement wrapBroadcast function to enhance RPC error handling ([#343](https://github.com/nuxt/hints/pull/343))

### ❤️ Contributors

- Julien Huang ([@huang-julien](https://github.com/huang-julien))

---

## v3.14.0 (nuxt/content) - 2026-05-18

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

### 🚀 Features

- **search**:
  - Add `useSearchCollection` composable with FTS5 full-text search - by @benjamincanac and @atinux in https://github.com/nuxt/content/issues/3787 [<samp>(2a1a5)</samp>](https://github.com/nuxt/content/commit/2a1a585a)
- **types**:
  - Add custom properties on ContentConfig - by @TotomInc in https://github.com/nuxt/content/issues/3761 [<samp>(ea196)</samp>](https://github.com/nuxt/content/commit/ea196c54)
  - Add NOT IN to SQLOperator type - by @surohak in https://github.com/nuxt/content/issues/3785 [<samp>(ab88e)</samp>](https://github.com/nuxt/content/commit/ab88eb3c)

### 🐞 Bug Fixes

- **docs**: Update Nuxt version from 3 to 4 in template features - by @rudrokhanpro in https://github.com/nuxt/content/issues/3780 [<samp>(1f240)</samp>](https://github.com/nuxt/content/commit/1f24029b)
- **path-meta**: Slugify options did not pass to transformer - by @farnabaz in https://github.com/nuxt/content/issues/3794 [<samp>(778d7)</samp>](https://github.com/nuxt/content/commit/778d7dbb)
- **preview**: Skip collections without source in preview template - by @humanbird and @larbish in https://github.com/nuxt/content/issues/3771 [<samp>(8aabe)</samp>](https://github.com/nuxt/content/commit/8aabefd2)

##### [View changes on GitHub](https://github.com/nuxt/content/compare/v3.13.0...v3.14.0)

---

## v4.4.6 (nuxt/nuxt) - 2026-05-18

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

> 4.4.6 is the next patch release.


## 👉 Changelog

[compare changes](https://github.com/nuxt/nuxt/compare/v4.4.5...v4.4.6)
### 🩹 Fixes
- **vite:** Use spa entry for vite-node fallback ([#35037](https://github.com/nuxt/nuxt/pull/35037))
- **vite:** Invalidate SSR module cache when modules are invalidated via plugin hooks ([a86657a0e](https://github.com/nuxt/nuxt/commit/a86657a0e))
- **nuxt:** Match deduplicated `resolveComponent` calls in jsx blocks ([#35028](https://github.com/nuxt/nuxt/pull/35028))
- **nuxt:** Prefer our own builder/server deps ([#35029](https://github.com/nuxt/nuxt/pull/35029))
- **nuxt:** Update `useFetch` key even with `watch: false` ([#35002](https://github.com/nuxt/nuxt/pull/35002))
- **nitro:** Mark `@babel/plugin-syntax-typescript` as optional peer dep ([#35041](https://github.com/nuxt/nuxt/pull/35041))
- **nitro:** Add json extension to payload cache items ([#35043](https://github.com/nuxt/nuxt/pull/35043))
- **nuxt:** Handle errors fetching app manifest ([#35050](https://github.com/nuxt/nuxt/pull/35050))
- **nuxt:** Encode html-significant characters in external redirect body ([#35052](https://github.com/nuxt/nuxt/pull/35052))
- **nuxt:** Preserve `setPageLayout` props on same-path navigation ([#35055](https://github.com/nuxt/nuxt/pull/35055))
- **vite:** Don't strip buildAssetsDir from vite-node SSR ids ([#35040](https://github.com/nuxt/nuxt/pull/35040))
- **nuxt:** Mark `useLoadingIndicator` properties as readonly ([#35062](https://github.com/nuxt/nuxt/pull/35062))
- **vite:** Strip queries in css inline styles map ([#35067](https://github.com/nuxt/nuxt/pull/35067))
- **nitro:** Validate island request hash matches props ([#35077](https://github.com/nuxt/nuxt/pull/35077))
- **nitro:** Use regexp to strip query ([163e18d4b](https://github.com/nuxt/nuxt/commit/163e18d4b))
- **nitro:** Use `statusCode` for nitro v2 compatibility ([952f6841e](https://github.com/nuxt/nuxt/commit/952f6841e))
- **nitro-server:** Re-export h3 named symbols statically ([cd99001c8](https://github.com/nuxt/nuxt/commit/cd99001c8))
- **nuxt:** Render component-less parent routes during client-side nav ([#35036](https://github.com/nuxt/nuxt/pull/35036))
- **kit:** Respect `tsConfig.exclude` in legacy `tsconfig.json` ([#35079](https://github.com/nuxt/nuxt/pull/35079))
- **nuxt:** Run middleware for page islands ([#35092](https://github.com/nuxt/nuxt/pull/35092))
### 💅 Refactors
- **rspack,webpack:** Extract same-origin check for dev middleware ([#35051](https://github.com/nuxt/nuxt/pull/35051))
### 📖 Documentation
- Remove CSB, set node 22 and use steps for clarity ([#35066](https://github.com/nuxt/nuxt/pull/35066))
### 🏡 Chore
- One more type, one more ([50dcf15bb](https://github.com/nuxt/nuxt/commit/50dcf15bb))
- Remove unneeded (?) overrides ([6997093af](https://github.com/nuxt/nuxt/commit/6997093af))
- Use explicit versions for fixture dependencies ([294a734d4](https://github.com/nuxt/nuxt/commit/294a734d4))
- Ignore link-like syntax in code ([2584a549c](https://github.com/nuxt/nuxt/commit/2584a549c))
- Narrow engines.node in test ([5bb17fb47](https://github.com/nuxt/nuxt/commit/5bb17fb47))
- Remove unused import ([a52d78626](https://github.com/nuxt/nuxt/commit/a52d78626))
### ✅ Tests
- Relax relative time assertion ([c3dcd16f9](https://github.com/nuxt/nuxt/commit/c3dcd16f9))
- Add type ([732d844ad](https://github.com/nuxt/nuxt/commit/732d844ad))
- Drop h3 v2 types ([8286e5fcd](https://github.com/nuxt/nuxt/commit/8286e5fcd))
### 🤖 CI
- Clean up agent-scan workflow ([ab8317547](https://github.com/nuxt/nuxt/commit/ab8317547))
- Continue autofix workflow when `test:engines` fails ([3025e561e](https://github.com/nuxt/nuxt/commit/3025e561e))
- Improve workflows ([#35088](https://github.com/nuxt/nuxt/pull/35088))

### ❤️ Contributors
- Daniel Roe (@danielroe)
- Tim (@timhn-bm)
- Julien Huang (@huang-julien)
- Damian Głowala (@DamianGlowala)
- Sébastien Chopin (@atinux)
- Adrien Foulon (@Tofandel)
- Sami El Achi (@samiashi)

---

## v3.21.6 (nuxt/nuxt) - 2026-05-18

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

> 3.21.6 is the next patch release.

## 👉 Changelog

[compare changes](https://github.com/nuxt/nuxt/compare/v3.21.5...v3.21.6)
### 🩹 Fixes
- **nuxt:** Prefer our own builder/server deps ([#35029](https://github.com/nuxt/nuxt/pull/35029))
- **nitro:** Add json extension to payload cache items ([#35043](https://github.com/nuxt/nuxt/pull/35043))
- **nuxt:** Handle errors fetching app manifest ([#35050](https://github.com/nuxt/nuxt/pull/35050))
- **nuxt:** Preserve `setPageLayout` props on same-path navigation ([#35055](https://github.com/nuxt/nuxt/pull/35055))
- **vite:** Don't strip buildAssetsDir from vite-node SSR ids ([#35040](https://github.com/nuxt/nuxt/pull/35040))
- **nuxt:** Mark `useLoadingIndicator` properties as readonly ([#35062](https://github.com/nuxt/nuxt/pull/35062))
- **vite:** Strip queries in css inline styles map ([#35067](https://github.com/nuxt/nuxt/pull/35067))
- **nuxt:** Encode html-significant characters in external redirect body ([#35052](https://github.com/nuxt/nuxt/pull/35052))
- **nitro:** Validate island request hash matches props ([#35077](https://github.com/nuxt/nuxt/pull/35077))
- **nitro:** Use regexp to strip query ([042b615e6](https://github.com/nuxt/nuxt/commit/042b615e6))
- **nitro:** Use `statusCode` for nitro v2 compatibility ([82dcd6a31](https://github.com/nuxt/nuxt/commit/82dcd6a31))
- **nuxt:** Render component-less parent routes during client-side nav ([#35036](https://github.com/nuxt/nuxt/pull/35036))
- **nuxt:** Run middleware for page islands ([#35092](https://github.com/nuxt/nuxt/pull/35092))
### 💅 Refactors
- **rspack,webpack:** Extract same-origin check for dev middleware ([#35051](https://github.com/nuxt/nuxt/pull/35051))
### 📖 Documentation
- Remove CSB, set node 22 and use steps for clarity ([#35066](https://github.com/nuxt/nuxt/pull/35066))
### 🏡 Chore
- Ignore link-like syntax in code ([f9bf11b11](https://github.com/nuxt/nuxt/commit/f9bf11b11))
- Narrow engines.node in test ([5ed9a2691](https://github.com/nuxt/nuxt/commit/5ed9a2691))
- Remove unused import ([3a8bb0030](https://github.com/nuxt/nuxt/commit/3a8bb0030))
### ✅ Tests
- Relax relative time assertion ([256513eb0](https://github.com/nuxt/nuxt/commit/256513eb0))
- Move build assets dir fixture out of `app/` ([6d2ac69ff](https://github.com/nuxt/nuxt/commit/6d2ac69ff))
### 🤖 CI
- Clean up agent-scan workflow ([31590cf07](https://github.com/nuxt/nuxt/commit/31590cf07))
- Continue autofix workflow when `test:engines` fails ([958abb882](https://github.com/nuxt/nuxt/commit/958abb882))
- Improve workflows ([#35088](https://github.com/nuxt/nuxt/pull/35088))

### ❤️ Contributors
- Daniel Roe (@danielroe)
- Julien Huang (@huang-julien)
- Damian Głowala (@DamianGlowala)
- Sébastien Chopin (@atinux)
- Adrien Foulon (@Tofandel)

---

## v1.1.0 (nuxt/scripts) - 2026-05-14

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

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

- LinkedIn Insight Tag &nbsp;-&nbsp; by @zizzfizzix in https://github.com/nuxt/scripts/issues/741 [<samp>(fb922)</samp>](https://github.com/nuxt/scripts/commit/fb92206)
- Ahrefs Web Analytics &nbsp;-&nbsp; by @harlan-zw in https://github.com/nuxt/scripts/issues/751 [<samp>(ceb4b)</samp>](https://github.com/nuxt/scripts/commit/ceb4ba0)
- Usercentrics CMP &nbsp;-&nbsp; by @harlan-zw in https://github.com/nuxt/scripts/issues/749 [<samp>(d2114)</samp>](https://github.com/nuxt/scripts/commit/d2114c5)
- Calendly &nbsp;-&nbsp; by @harlan-zw in https://github.com/nuxt/scripts/issues/750 [<samp>(e8524)</samp>](https://github.com/nuxt/scripts/commit/e852443)
- Build-time debug flag with script-lifecycle tracing &nbsp;-&nbsp; by @harlan-zw in https://github.com/nuxt/scripts/issues/760 [<samp>(f6c25)</samp>](https://github.com/nuxt/scripts/commit/f6c25a5)
- Warn on misconfigured NUXT_PUBLIC_SCRIPTS_* env vars &nbsp;-&nbsp; by @harlan-zw in https://github.com/nuxt/scripts/issues/778 [<samp>(05d32)</samp>](https://github.com/nuxt/scripts/commit/05d3250)
- Env-var overrides for scripts.globals (single-build, multi-deploy) &nbsp;-&nbsp; by @harlan-zw in https://github.com/nuxt/scripts/issues/780 [<samp>(88869)</samp>](https://github.com/nuxt/scripts/commit/8886903)
- **gtm,ga**: Consent.default() + strict GCMv2 validation &nbsp;-&nbsp; by @harlan-zw in https://github.com/nuxt/scripts/issues/772 [<samp>(6f74a)</samp>](https://github.com/nuxt/scripts/commit/6f74a6c)
- **tiktokPixel**: Production hardening - region, CAPI dedup, advanced matching &nbsp;-&nbsp; by @harlan-zw in https://github.com/nuxt/scripts/issues/776 [<samp>(c5b69)</samp>](https://github.com/nuxt/scripts/commit/c5b6905)

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

- Add `--pnpm` flag to `pkg-pr-new publish` command in nightly workflow &nbsp;-&nbsp; by @DamianGlowala and **Damian Głowala** in https://github.com/nuxt/scripts/issues/755 [<samp>(53810)</samp>](https://github.com/nuxt/scripts/commit/53810dd)
- Validate required registry fields after runtime merge &nbsp;-&nbsp; by @tsukiyama-3 and @harlan-zw in https://github.com/nuxt/scripts/issues/762 [<samp>(61293)</samp>](https://github.com/nuxt/scripts/commit/6129314)
- **assets**:
  - Set js content-type on dev bundled asset handler &nbsp;-&nbsp; by @harlan-zw in https://github.com/nuxt/scripts/issues/748 [<samp>(6ddc9)</samp>](https://github.com/nuxt/scripts/commit/6ddc9f6)
- **google-maps**:
  - Avoid recentering on inline options &nbsp;-&nbsp; by @harlan-zw in https://github.com/nuxt/scripts/issues/747 [<samp>(65c3b)</samp>](https://github.com/nuxt/scripts/commit/65c3b56)
- **googleTagManager**:
  - Push consent as arguments to dataLayer &nbsp;-&nbsp; by @buffalom and **motion-work** in https://github.com/nuxt/scripts/issues/771 [<samp>(fc398)</samp>](https://github.com/nuxt/scripts/commit/fc3981b)
- **plausible**:
  - Honor scriptInput.src in bundle.resolve for self-hosted &nbsp;-&nbsp; by @harlan-zw in https://github.com/nuxt/scripts/issues/775 [<samp>(fb50b)</samp>](https://github.com/nuxt/scripts/commit/fb50b0a)
- **proxy**:
  - Allow `region1.google-analytics.com` &nbsp;-&nbsp; by @captnCC in https://github.com/nuxt/scripts/issues/753 [<samp>(58f81)</samp>](https://github.com/nuxt/scripts/commit/58f81ad)
  - Surface upstream error cause and distinguish timeouts &nbsp;-&nbsp; by @harlan-zw in https://github.com/nuxt/scripts/issues/757 [<samp>(0cb62)</samp>](https://github.com/nuxt/scripts/commit/0cb62af)
- **tiktokPixel**:
  - Missing types &nbsp;-&nbsp; by @harlan-zw in https://github.com/nuxt/scripts/issues/773 [<samp>(f73a0)</samp>](https://github.com/nuxt/scripts/commit/f73a0ce)

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

---

## v4.4.5 (nuxt/nuxt) - 2026-05-10

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

> 4.4.5 is the next patch release.


## 👉 Changelog

[compare changes](https://github.com/nuxt/nuxt/compare/v4.4.4...v4.4.5)
### 🔥 Performance
- **kit:** Cache layer roots and short-circuit `isIgnored` relative ([#35015](https://github.com/nuxt/nuxt/pull/35015))
### 🩹 Fixes
- **vite:** Resolve vite `clientServer` with `ssr: false` ([#34959](https://github.com/nuxt/nuxt/pull/34959))
- **nitro:** Correct payload route rule for `/` + override `ssr: true` ([#34990](https://github.com/nuxt/nuxt/pull/34990))
- **nitro:** Break recursive rendering deadlocks during prerender ([#34939](https://github.com/nuxt/nuxt/pull/34939))
- **vite:** Drop redundant css link when entry styles are inlined ([#34950](https://github.com/nuxt/nuxt/pull/34950))
- **vite:** Sort `optimizeDeps.include` in pre-bundle hint ([#34976](https://github.com/nuxt/nuxt/pull/34976))
- **nuxt:** Only force suspense remount after first resolve ([#34949](https://github.com/nuxt/nuxt/pull/34949))
- **kit:** Read `.env` before resolving nuxt schema ([#34958](https://github.com/nuxt/nuxt/pull/34958))
- **nitro:** Preserve `serverHandlers` array after `nitro:config` ([#34985](https://github.com/nuxt/nuxt/pull/34985))
- **nuxt:** Cast partial nitro handlers when prepending to server arrays ([61dcde4db](https://github.com/nuxt/nuxt/commit/61dcde4db))
- **vite:** Only consider CSS inlined when styles are actually emitted ([#35006](https://github.com/nuxt/nuxt/pull/35006))
- **nuxt:** Dedupe `getCachedData` for concurrent callers sharing a key ([#34999](https://github.com/nuxt/nuxt/pull/34999))
- **nuxt:** Respect factory fetch/baseURL options in server `useFetch` ([#35003](https://github.com/nuxt/nuxt/pull/35003))
- **nuxt:** Handle string presets in auto-imports ([#35013](https://github.com/nuxt/nuxt/pull/35013))
- **nuxt:** Correct island transform for server pages and 'deep' mode ([#35005](https://github.com/nuxt/nuxt/pull/35005))
- **vite:** Inline css for non-island children of server components ([#35001](https://github.com/nuxt/nuxt/pull/35001))
- **nuxt:** Defer head DOM updates until page transition finishes ([#35016](https://github.com/nuxt/nuxt/pull/35016))
- **nuxt:** Explicitly freeze head during island plugin phase ([#35010](https://github.com/nuxt/nuxt/pull/35010))
- **vite:** Inline css imported from non-vue js modules ([#35020](https://github.com/nuxt/nuxt/pull/35020))
### 📖 Documentation
- Add warning about routing in server components ([#34994](https://github.com/nuxt/nuxt/pull/34994))
### 🏡 Chore
- Fix lockfile ([c3ee07801](https://github.com/nuxt/nuxt/commit/c3ee07801))
- Pin `jiti` ([c8102228f](https://github.com/nuxt/nuxt/commit/c8102228f))
- Lint ([39422b6d2](https://github.com/nuxt/nuxt/commit/39422b6d2))
- Pin `@vue/compiler-sfc` ([cd404a14c](https://github.com/nuxt/nuxt/commit/cd404a14c))
- Ignore pnpm cyclic workspace deps warn ([#34998](https://github.com/nuxt/nuxt/pull/34998))
- Remove jiti from build steps ([#35004](https://github.com/nuxt/nuxt/pull/35004))
### ✅ Tests
- Extract server components fixture + add some failing tests ([#34995](https://github.com/nuxt/nuxt/pull/34995))
- Isolate `buildDir` per matrix project for shared fixtures ([#35007](https://github.com/nuxt/nuxt/pull/35007))
- Remove tests for 5.x runtimeBaseURL fature ([816c25487](https://github.com/nuxt/nuxt/commit/816c25487))

### ❤️ Contributors
- Daniel Roe (@danielroe)
- Harlan Wilton (@harlan-zw)
- Jonazzzz (@Bombastickj)
- Damian Głowala (@DamianGlowala)
- Florian Heuberger (@Flo0806)

---

## v3.21.5 (nuxt/nuxt) - 2026-05-10

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

> 3.21.5 is the next patch release.



## 👉 Changelog

[compare changes](https://github.com/nuxt/nuxt/compare/v3.21.4...v3.21.5)
### 🔥 Performance
- **kit:** Cache layer roots and short-circuit `isIgnored` relative ([#35015](https://github.com/nuxt/nuxt/pull/35015))
### 🩹 Fixes
- **nitro:** Correct payload route rule for `/` + override `ssr: true` ([#34990](https://github.com/nuxt/nuxt/pull/34990))
- **nitro:** Break recursive rendering deadlocks during prerender ([#34939](https://github.com/nuxt/nuxt/pull/34939))
- **vite:** Drop redundant css link when entry styles are inlined ([#34950](https://github.com/nuxt/nuxt/pull/34950))
- **nuxt:** Only force suspense remount after first resolve ([#34949](https://github.com/nuxt/nuxt/pull/34949))
- **kit:** Read `.env` before resolving nuxt schema ([#34958](https://github.com/nuxt/nuxt/pull/34958))
- **nitro:** Preserve `serverHandlers` array after `nitro:config` ([#34985](https://github.com/nuxt/nuxt/pull/34985))
- **vite:** Only consider CSS inlined when styles are actually emitted ([#35006](https://github.com/nuxt/nuxt/pull/35006))
- **nuxt:** Handle string presets in auto-imports ([#35013](https://github.com/nuxt/nuxt/pull/35013))
- **nuxt:** Correct island transform for server pages and 'deep' mode ([#35005](https://github.com/nuxt/nuxt/pull/35005))
- **vite:** Inline css for non-island children of server components ([#35001](https://github.com/nuxt/nuxt/pull/35001))
- **nuxt:** Defer head DOM updates until page transition finishes ([#35016](https://github.com/nuxt/nuxt/pull/35016))
- **nuxt:** Explicitly freeze head during island plugin phase ([#35010](https://github.com/nuxt/nuxt/pull/35010))
- **vite:** Inline css imported from non-vue js modules ([#35020](https://github.com/nuxt/nuxt/pull/35020))
- **nitro:** Remove unused middleware ([fe857d36b](https://github.com/nuxt/nuxt/commit/fe857d36b))
### 📖 Documentation
- Add warning about routing in server components ([#34994](https://github.com/nuxt/nuxt/pull/34994))
### 🏡 Chore
- Ignore pnpm cyclic workspace deps warn ([#34998](https://github.com/nuxt/nuxt/pull/34998))
- Remove jiti from build steps ([#35004](https://github.com/nuxt/nuxt/pull/35004))
- Fix lockfile ([48e56a509](https://github.com/nuxt/nuxt/commit/48e56a509))
- **nuxt:** Cast to nitro event handler type ([5b358ca19](https://github.com/nuxt/nuxt/commit/5b358ca19))
### ✅ Tests
- Extract server components fixture + add some failing tests ([#34995](https://github.com/nuxt/nuxt/pull/34995))
- Isolate `buildDir` per matrix project for shared fixtures ([#35007](https://github.com/nuxt/nuxt/pull/35007))
- Split env testing into separate file ([fd4019cf8](https://github.com/nuxt/nuxt/commit/fd4019cf8))
- Use 3.x style tsconfig ([86625efad](https://github.com/nuxt/nuxt/commit/86625efad))
- Use more 3.x style tsconfigs ([4a9bde3f3](https://github.com/nuxt/nuxt/commit/4a9bde3f3))
- Correct import path ([133d5f6d7](https://github.com/nuxt/nuxt/commit/133d5f6d7))
- Update snapshots ([9fc42f788](https://github.com/nuxt/nuxt/commit/9fc42f788))

### ❤️ Contributors
- Daniel Roe (@danielroe)
- Harlan Wilton (@harlan-zw)
- Jonazzzz (@Bombastickj)
- Damian Głowala (@DamianGlowala)
- Florian Heuberger (@Flo0806)

---

## 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)

---
