unstale

npm / @react-three/fiber

@react-three/fiber

What changed in @react-three/fiber 9, from its official release notes, upgrade guides and advisories. Sources checked 2026-10-18.

5 behavior and defaults19 fixes and other

See which of these apply to your code, ranked, in your agent:

npx @unstale/cli init

@unstale/cli 0.1.1 on npm

@react-three/fiber 924 changes

Behavior and default changes 5

  • Pixel ratio updates automatically when moving between displays or zooming.

    9.8.2release notes

  • attach is applied on its first set; later dynamic updates to it are ignored.

    9.7.0release notes

  • Event priorities now use the same list as react-dom, aligning the priority of continuous and impulse events.

    9.7.0release notes

  • The reconciler can queue microtasks to defer work based on the priorities set for that work.

    9.7.0release notes

  • 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.0release notes

Fixes and other changes 19

  • Dragging stays active when an object's args change, keeping pointer capture across instance reconstruction.

    9.8.2release notes

  • Removing an object requests a frame so it disappears immediately instead of lingering as a ghost.

    9.8.2release notes

  • Unmounted portals can now be cleaned up properly, preventing their root state from being retained by the parent and allowing garbage collection.

    9.8.2release notes

  • JSX type registration no longer causes React.ElementType props to collapse to never or break unrelated React types.

    9.8.2release notes

  • 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.1release notes

  • Canvas rerenders no longer reset runtime settings.

    9.8.1release notes

  • The renderer R3F creates is now disposed when its root unmounts; the notes clarify in which instances R3F auto-disposes.

    9.8.1release notes

  • 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.0release notes

  • React roots are configured synchronously, with rendering gated on the renderer when it requires async behavior, avoiding out-of-sync issues.

    9.8.0release notes

  • A root remounted during the unmount grace period is no longer torn down.

    9.8.0release notes

  • Strict Mode no longer causes problems for the canvas.

    9.8.0release notes

  • Host props such as dispose and onUpdate now update properly, and unsetting them no longer unexpectedly overwrites imperatively updated values.

    9.7.0release notes

  • Instance reconstructions caused by args updates are properly batched, so one instance is not skipped when another bails out of updates.

    9.7.0release notes

  • Internal children are reordered correctly when React reorders children, preventing the internal map from drifting out of sync.

    9.7.0release notes

  • Unset pierced props now reset to the pierced prop's default value rather than to the base object.

    9.7.0release notes

  • Interactivity state now transfers seamlessly when instances are swapped.

    9.6.1release notes

  • R3F is compatible with React 19.0 through 19.2, including React 19.2's Activity feature.

    9.5.0release notes

  • A workaround adds compatibility with Expo SDK 54.

    9.4.2release notes

  • Passes the DevTools config through createReconciler to fix React DevTools.

    9.4.1release notes