# What changed in preact

> 18 changes in preact 10 to 11 from its official release notes, upgrade guides and advisories: 1 breaking, 1 security. Each one cited. Sources checked 2026-10-18. HTML: https://unstale.sh/npm/preact/

To see which of these apply to a repository, run `npx @unstale/cli init` in it.

## preact 11

### Behavior and default changes

- Errors that no boundary handles now log the component stack. (11.0.1) — [release notes](https://github.com/preactjs/preact/releases/tag/11.0.1)
- Event listeners are keyed by prop name and have attach times stamped per listener. (11.0.1) — [release notes](https://github.com/preactjs/preact/releases/tag/11.0.1)
- Ref cleanups stay on the element instead of the ref function. (11.0.1) — [release notes](https://github.com/preactjs/preact/releases/tag/11.0.1)
- The imageRendering property is mapped to the image-rendering CSS property. (11.0.0) — [release notes](https://github.com/preactjs/preact/releases/tag/11.0.0)
- Top-level Fragments no longer use cloneNode. (11.0.0) — [release notes](https://github.com/preactjs/preact/releases/tag/11.0.0)

### Fixes and other changes

- Parked Suspense children are unmounted when their boundary unmounts. (11.0.1) — [release notes](https://github.com/preactjs/preact/releases/tag/11.0.1)
- Types for preact/compat/scheduler are fixed. (11.0.1) — [release notes](https://github.com/preactjs/preact/releases/tag/11.0.1)
- Types for preact/compat/server are fixed. (11.0.1) — [release notes](https://github.com/preactjs/preact/releases/tag/11.0.1)
- Suspended hydration stays within a component's own $s range. (11.0.1) — [release notes](https://github.com/preactjs/preact/releases/tag/11.0.1)
- CamelCase custom event names retain their casing. (11.0.0) — [release notes](https://github.com/preactjs/preact/releases/tag/11.0.0)
- Insertion appends when the reference node lives in another container. (11.0.0) — [release notes](https://github.com/preactjs/preact/releases/tag/11.0.0)
- Containers without an ownerDocument use the global document. (11.0.0) — [release notes](https://github.com/preactjs/preact/releases/tag/11.0.0)
- Availability is checked on the container rather than globally. (11.0.0) — [release notes](https://github.com/preactjs/preact/releases/tag/11.0.0)
- DOM nesting validation now stops at portal boundaries. (11.0.0) — [release notes](https://github.com/preactjs/preact/releases/tag/11.0.0)
- Refs are re-attached when a suspended subtree reveals. (11.0.0) — [release notes](https://github.com/preactjs/preact/releases/tag/11.0.0)
- Resuming into the DOM kept while a component was suspended is fixed. (11.0.0) — [release notes](https://github.com/preactjs/preact/releases/tag/11.0.0)

## preact 10

### Breaking changes

- Updates in flushSync are batched. (10.29.8) — [release notes](https://github.com/preactjs/preact/releases/tag/10.29.8)

### Security

- Preact has JSON VNode Injection issue (10.26.10, 10.27.3, 10.28.2) — [security advisory](https://github.com/advisories/GHSA-36HM-QXXP-PG3M)
