# What changed in @react-three/fiber

> 24 changes in @react-three/fiber 9 from its official release notes, upgrade guides and advisories. Each one cited. Sources checked 2026-10-18. HTML: https://unstale.sh/npm/@react-three/fiber/

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

## @react-three/fiber 9

### Behavior and default changes

- Pixel ratio updates automatically when moving between displays or zooming. (9.8.2) — [release notes](https://github.com/pmndrs/react-three-fiber/releases/tag/v9.8.2)
- attach is applied on its first set; later dynamic updates to it are ignored. (9.7.0) — [release notes](https://github.com/pmndrs/react-three-fiber/releases/tag/v9.7.0)
- Event priorities now use the same list as react-dom, aligning the priority of continuous and impulse events. (9.7.0) — [release notes](https://github.com/pmndrs/react-three-fiber/releases/tag/v9.7.0)
- The reconciler can queue microtasks to defer work based on the priorities set for that work. (9.7.0) — [release notes](https://github.com/pmndrs/react-three-fiber/releases/tag/v9.7.0)
- Uniforms objects now have a stable reference, and passed objects are copied into them. This prevents desync and allows inline uniform props and individual uniforms using pierce notation. (9.6.0) — [release notes](https://github.com/pmndrs/react-three-fiber/releases/tag/v9.6.0)

### Fixes and other changes

- Dragging stays active when an object's args change, keeping pointer capture across instance reconstruction. (9.8.2) — [release notes](https://github.com/pmndrs/react-three-fiber/releases/tag/v9.8.2)
- Removing an object requests a frame so it disappears immediately instead of lingering as a ghost. (9.8.2) — [release notes](https://github.com/pmndrs/react-three-fiber/releases/tag/v9.8.2)
- Unmounted portals can now be cleaned up properly, preventing their root state from being retained by the parent and allowing garbage collection. (9.8.2) — [release notes](https://github.com/pmndrs/react-three-fiber/releases/tag/v9.8.2)
- JSX type registration no longer causes React.ElementType props to collapse to never or break unrelated React types. (9.8.2) — [release notes](https://github.com/pmndrs/react-three-fiber/releases/tag/v9.8.2)
- Activity visibility now works across R3F and React DOM boundaries, including when Activity wraps Canvas; hidden Canvas roots remain alive and visibility is bridged into scenes. (9.8.1) — [release notes](https://github.com/pmndrs/react-three-fiber/releases/tag/v9.8.1)
- Canvas rerenders no longer reset runtime settings. (9.8.1) — [release notes](https://github.com/pmndrs/react-three-fiber/releases/tag/v9.8.1)
- The renderer R3F creates is now disposed when its root unmounts; the notes clarify in which instances R3F auto-disposes. (9.8.1) — [release notes](https://github.com/pmndrs/react-three-fiber/releases/tag/v9.8.1)
- R3F is compatible with React 19.3.0, so developers can run the latest React without conflicts; not all new React APIs are fully supported. (9.8.0) — [release notes](https://github.com/pmndrs/react-three-fiber/releases/tag/v9.8.0)
- React roots are configured synchronously, with rendering gated on the renderer when it requires async behavior, avoiding out-of-sync issues. (9.8.0) — [release notes](https://github.com/pmndrs/react-three-fiber/releases/tag/v9.8.0)
- A root remounted during the unmount grace period is no longer torn down. (9.8.0) — [release notes](https://github.com/pmndrs/react-three-fiber/releases/tag/v9.8.0)
- Strict Mode no longer causes problems for the canvas. (9.8.0) — [release notes](https://github.com/pmndrs/react-three-fiber/releases/tag/v9.8.0)
- Host props such as dispose and onUpdate now update properly, and unsetting them no longer unexpectedly overwrites imperatively updated values. (9.7.0) — [release notes](https://github.com/pmndrs/react-three-fiber/releases/tag/v9.7.0)
- Instance reconstructions caused by args updates are properly batched, so one instance is not skipped when another bails out of updates. (9.7.0) — [release notes](https://github.com/pmndrs/react-three-fiber/releases/tag/v9.7.0)
- Internal children are reordered correctly when React reorders children, preventing the internal map from drifting out of sync. (9.7.0) — [release notes](https://github.com/pmndrs/react-three-fiber/releases/tag/v9.7.0)
- Unset pierced props now reset to the pierced prop's default value rather than to the base object. (9.7.0) — [release notes](https://github.com/pmndrs/react-three-fiber/releases/tag/v9.7.0)
- Interactivity state now transfers seamlessly when instances are swapped. (9.6.1) — [release notes](https://github.com/pmndrs/react-three-fiber/releases/tag/v9.6.1)
- R3F is compatible with React 19.0 through 19.2, including React 19.2's Activity feature. (9.5.0) — [release notes](https://github.com/pmndrs/react-three-fiber/releases/tag/v9.5.0)
- A workaround adds compatibility with Expo SDK 54. (9.4.2) — [release notes](https://github.com/pmndrs/react-three-fiber/releases/tag/v9.4.2)
- Passes the DevTools config through createReconciler to fix React DevTools. (9.4.1) — [release notes](https://github.com/pmndrs/react-three-fiber/releases/tag/v9.4.1)
