@react-three/fiber
Version:
A React renderer for Threejs
1,175 lines (600 loc) • 18.8 kB
Markdown
@react-three/fiber
# 9.4.0
## Minor Changes
- f0976dc14a2d3203af267d0e3524d45a07f3248a: feat: improve applyProps errors, harden pierced props setting
# 9.3.0
## Minor Changes
- 7579c2d79ed60e5c93a259637b65c01971f39d82: feat: add flushSync example
- 26e5d6e8b8b00b817ebb5242432000abe38bfc2c: fix: update flushSync for new reconciler
- 0281b6bc4fcf041ed801e64f1876f70c214aa117: fix(native): update react-native deep imports for 0.79 compatibility
# 9.2.0
## Minor Changes
- 94ece53e17a586465b10ec627cf4799cefa72b3a: Export flushSync
# 9.1.4
## Patch Changes
- d491e46087508dff50c48768a99f87bd486b6910: Accept readonly arrays for vector props
# 9.1.3
## Patch Changes
- efd28328f5e612b0592be7da316fad990fdf4675: fix(native) fix crash on rerendering GLView with new arch
# 9.1.2
## Patch Changes
- 053757f45d2411f2929975add76a4c979713e616: fix: reference dev-only act with computed key for Webpack
# 9.1.1
## Patch Changes
- 0deae3fb12b6d62ff083891e388ab09de51330d0: Fix failing builds for production when React.act is unavailable. This fixes issues found in React@19.1.0 and up.
# 9.1.0
## Minor Changes
- cbc79507600b81f6a39de9f3f0ecb3aaf811233f: feat: add meshes to loader graph, misc internal fixes
# 9.0.4
## Patch Changes
- 28ebfbf3e7f9e69dc62f5481965b7fd6a3e3a038: fix(types): exclude type conflicts in React runtime types
# 9.0.3
## Patch Changes
- 01f0f1c8855325aae1c337d5443c846cc46007b0: fix(types): remove recursive references in JSX types
# 9.0.2
## Patch Changes
- 14e133278c3cf1550a3b9aeaaadb624a2aae4781: fix(reconciler): prefer to resolve unprefixed instance types
# 9.0.1
## Patch Changes
- 5d711d103b8d3833b93c3ab74707b2b6db5d274a: fix: add use-sync-external-store dep
# 9.0.0
## Major Changes
- 226d2ec: feat: React 19 support
# 8.18.0
## Minor Changes
- 54a3330f: feat: make children optional in Canvas
# 8.17.14
## Patch Changes
- eeeed16b: fix: update use-measure
# 8.17.13
## Patch Changes
- 0a0f2acd: fix: upstream use-measure
# 8.17.12
## Patch Changes
- ff1a16f1: fix: narrow React peer dep range
# 8.17.11
## Patch Changes
- 7461bf0c: fix: loosen instanceof checks for CSB issue
# 8.17.10
## Patch Changes
- d1a072ac: fix: ThreeEvent should not include initMouseEvent
# 8.17.9
## Patch Changes
- f34de655: fix: add orientation handling
# 8.17.8
## Patch Changes
- 3c885807: fix(types): fix React typings, fault tolerant Node type
# 8.17.7
## Patch Changes
- c20a7d73: fix(native): missing pointerId in pointer events
# 8.17.6
## Patch Changes
- 66c3e9fe: fix(native): don't bind events to GLView
# 8.17.5
## Patch Changes
- 162dbbdd: fix: npmignore ignored types"
# 8.17.4
## Patch Changes
- 43866f4e: fix: rebuild with types
# 8.17.3
## Patch Changes
- 8363eb7a: fix: rebuild with types
# 8.17.2
## Patch Changes
- 6aa4eb28: fix: rebuild with types
# 8.17.1
## Patch Changes
- e5f3f4f9: fix: rebuild with types
# 8.17.0
## Minor Changes
- 3c22194d: feat: flushSync, native EventTarget
# 8.16.8
## Patch Changes
- 4748b365: fix: update is.equ to compare booleans
# 8.16.7
## Patch Changes
- 4d6408c7: fix(types): revert usage of future module JSX
# 8.16.6
## Patch Changes
- 03ab82fe: fix(applyProps): null check indeterminate instances
# 8.16.5
## Patch Changes
- cb913e01: fix: use fast JSX, future JSX types
# 8.16.4
## Patch Changes
- 1270d24c: fix: missing dependency on inject function
# 8.16.3
## Patch Changes
- 9c83502c: fix(Canvas): don't override camera frustum props
# 8.16.2
## Patch Changes
- e0900489: fix(useLoader): don't dispose of memoized loader
# 8.16.1
## Patch Changes
- 503efc2e: fix: prevent invalidate from piling up frames
# 8.16.0
## Minor Changes
- 6b0ea6eb: feat: add childadded event dispatch
# 8.15.19
## Patch Changes
- 74926b94: fix(types): avoid emitting THREE.XRFrame
# 8.15.18
## Patch Changes
- 8c01939a: fix: correctly pass frames in invalidate
# 8.15.17
## Patch Changes
- 16c2ee97: fix(types): support @types/three@0.162.0
# 8.15.16
## Patch Changes
- 71cd8f96: fix: tonemapping config overwrites userland
- 0bb12fd1: fix(types): remove usage of THREE.Vector
# 8.15.14
## Patch Changes
- 0afc9c12: fix: portal events, update examples
# 8.15.13
## Patch Changes
- 0a399f6d: fix(native): use MSAA for antialias on iOS
# 8.15.12
## Patch Changes
- 496d6f0d: fix: useLoader and XRFrame type fixes
# 8.15.11
## Patch Changes
- 3d9af04d: fix: update import from three examples
# 8.15.10
## Patch Changes
- 49158164: fix: don't recursively dispose primitives
# 8.15.9
## Patch Changes
- 4cbc5530: fix(native): deopt iOS blob URI path
# 8.15.8
## Patch Changes
- 70680832: fix: revert stable sort
# 8.15.7
## Patch Changes
- 07e39e2e: fix(types): remove use of Object3D generic
# 8.15.6
## Patch Changes
- 7bb2950b: experiment: stable object sort
# 8.15.5
## Patch Changes
- 0e44fd8b: fix(types): preserve deprecated JSX annotations
# 8.15.4
## Patch Changes
- 634e5db5: fix(native): harden Blob URI check for Android
# 8.15.3
## Patch Changes
- beab4344: fix(native): workaround Android content policy for Blob URI
# 8.15.2
## Patch Changes
- 086d3932: fix: size check and raycaster camera
# 8.15.1
## Patch Changes
- 2d39676d: fix: ignore deprecated types, use correct XRFrame definition
# 8.15.0
## Minor Changes
- cca8b6bb: feat: export buildGraph
# 8.14.7
## Patch Changes
- 0f63a287: fix(native): restore polyfill conversions, drop networking
# 8.14.6
## Patch Changes
- 465fa0fb: fix(native): revert usage of networking stack
# 8.14.5
## Patch Changes
- f372a5b5: fix(applyProps): loosen copy identity in dev
# 8.14.4
## Patch Changes
- dc7e5739: fix(native): amend BlobManager over globals
# 8.14.3
## Patch Changes
- d77b0990: fix(native): drop fsstat for react-native-web
# 8.14.2
## Patch Changes
- 33e8baef: fix: native perf, loader types
# 8.14.1
## Patch Changes
- c99907bf: fix(native): prefer local uri for fs
# 8.14.0
## Minor Changes
- 89e96bf4: feat: react-native-web, native globals fixes
# 8.13.9
## Patch Changes
- 44d57b3c: fix(native): TextureLoader should remain consistent with FileLoader
# 8.13.8
## Patch Changes
- 5da26d52: fix(useLoader): dispose loaders
# 8.13.7
## Patch Changes
- 37b9502a: fix(Canvas): pass scene prop
# 8.13.6
## Patch Changes
- 0597495c: fix: harden XR init against Renderer shim
# 8.13.5
## Patch Changes
- 7a3b543b: fix: three type regressions
# 8.13.4
## Patch Changes
- 824ee0f7: fix: safely diff instances
# 8.13.3
## Patch Changes
- ffdb5fc4: revert nested portals, up suspend-react
# 8.13.2
## Patch Changes
- bbabdf07: update suspend-react
# 8.13.1
## Patch Changes
- c9fe03ba: fix: primitive swap and reactive portals
# 8.13.0
## Minor Changes
- ecfc48b7: feat: CanvasProps alias, respect r152 color management
# 8.12.2
## Patch Changes
- c5193468: fix: safeguard window.devicePixelRatio
# 8.12.1
## Patch Changes
- 571f07ac: fix: safeguard window.devicePixelRatio
# 8.12.0
## Minor Changes
- 1928d095: feat: `scene` render prop for custom THREE.Scene
# 8.11.11
## Patch Changes
- f03c6ef8: feat: `scene` render prop for custom THREE.Scene
# 8.11.10
## Patch Changes
- 12907836: fix onpointerlostcapture which fired before pointerup
# 8.11.9
## Patch Changes
- 6b5f572c: fix: treeshake THREE.ColorManagement
# 8.11.8
## Patch Changes
- 350cd3f3: fix(Canvas): inline render-effect
# 8.11.7
## Patch Changes
- 96af62d5: fix: don't overwrite public cameras
# 8.11.6
## Patch Changes
- 7d319c18: Fix is.equ obj:shallow, allow it to test arrays 1 level deep, fix canvas.camera prop being stale
# 8.11.5
## Patch Changes
- c658f763: fix: update canvas prop types
# 8.11.4
## Patch Changes
- 970aa58b: fix: play nice with offscreencanvas
# 8.11.3
## Patch Changes
- 2bce569c: fix: progressively set colormanagement
# 8.11.2
## Patch Changes
- 41d655cd: fix: hmr, srgb encode
# 8.11.1
## Patch Changes
- 58cadeff: fix: skip circular onUpdate calls
# 8.11.0
## Minor Changes
- 2917a47b: events.update, allow raycast w/o user interaction
- 521bfb07: events.update, allow raycast w/o user interaction
# 8.10.4
## Patch Changes
- d9e6316d: fix: transpile class properties
# 8.10.3
## Patch Changes
- d06d2879: fix: align useLoader type, public fields from builds
# 8.10.2
## Patch Changes
- 564edbbb: fix port inject layers, it should allow root props to overwrite undefined portal props"
# 8.10.1
## Patch Changes
- bfa0298f: fix memoized identity
# 8.10.0
## Minor Changes
- 24c4dba4: shortcut for shadow type
# 8.9.2
## Patch Changes
- 2aeb6500: fix: primitives are incorrectly swapped on key change in maps
# 8.9.1
## Patch Changes
- 0cf11797: fix(events): type spread event props
# 8.9.0
## Minor Changes
- a458b4dd: fix(loop): export flush methods and types
# 8.8.11
## Patch Changes
- 2068f0cc: fix: events pointerlock, useLoader extension types
# 8.8.10
## Patch Changes
- 00c24718: fix: invalidate pierced props
# 8.8.9
## Patch Changes
- 4254400e: fix(createPortal): use correct JSX type
# 8.8.8
## Patch Changes
- fcb183e3: fix: call onUpdate for attached children prop update
# 8.8.7
## Patch Changes
- bedb16e7: fix: prefer named functions, for loops in hot paths
# 8.8.6
## Patch Changes
- 02a558bb: fix: upgrade deps
# 8.8.5
## Patch Changes
- 530a06d6: fix: upgrade deps to work-around CRA
# 8.8.4
## Patch Changes
- 2f2dc9f9: chore: upgrade bridge to harden suspense behavior
# 8.8.3
## Patch Changes
- 9f571239: fix #2506, events should fall back to rootstate"
# 8.8.2
## Patch Changes
- dc389ed6: fix(Canvas): prevent remount on context update
# 8.8.1
## Patch Changes
- 370d3ae5: refactor: pull context bridge from its-fine
# 8.8.0
## Minor Changes
- 46d8b440: bridge cross-container context
# 8.7.4
## Patch Changes
- 259c8895: fix: use self to get global context before window
# 8.7.3
## Patch Changes
- eb5a3be4: fix: if there is an eventsource pointerevent will be set to none
# 8.7.2
## Patch Changes
- 7f801e60: fix: events in portals carry the wrong raycaster, camera, etc
# 8.7.1
## Patch Changes
- 962cc270: fix: allow canvas eventsource to be a ref
# 8.7.0
## Minor Changes
- f5db1b78: feat: useInstanceHandle, flushGlobalEffects
# 8.6.2
## Patch Changes
- 57c12e9c: fix(types): @react-three/drei declaration files
# 8.6.1
## Patch Changes
- 7a0b5670: fix(core): don't append to unmounted containers
# 8.6.0
## Minor Changes
- 85c80e70: eventsource and eventprefix on the canvas component
# 8.5.1
## Patch Changes
- 87821d9: fix: null-check instance.children on reconstruct
# 8.5.0
## Minor Changes
- edc8252: feat: handle primitive children, auto-attach via instanceof
# 8.3.1
## Patch Changes
- aaeb2b8: fix(types): accept readonly arrays for vector props
# 8.3.0
## Minor Changes
- 9c450ec: feat: improve errors
# 8.2.3
## Patch Changes
- b8d2eab: fix: improve useLoader signature, initial size on createRoot
# 8.2.2
## Patch Changes
- acd6f04: fix: warn on stray text
# 8.2.1
## Patch Changes
- 25e35a1: fix: prefer useLayoutEffect in react-native
# 8.2.0
## Minor Changes
- 9770d7d: feat: expose ThreeElements interface for JSX elements
# 8.1.0
## Minor Changes
- 8d0f708c: Expose position information in state.size
# 8.0.27
## Patch Changes
- 7940995: fix: resume on xrsession end, export internal events
# 8.0.26
## Patch Changes
- 7b6df9df: fix: infinite loop updating cam viewport
# 8.0.25
## Patch Changes
- b7cd0f42: update viewport on camera changes
# 8.0.24
## Patch Changes
- ee8e785: fix: attach timings
# 8.0.23
## Patch Changes
- 29d03c64: revert multi attach
# 8.0.22
## Patch Changes
- 419e854: fix: always prepare primitives
# 8.0.21
## Patch Changes
- 3098b9b: fix: resizing in worker contexts, copy over attachments on reconstruct
# 8.0.20
## Patch Changes
- 4c87bce: fix: attach, devtools, and perf fixes
# 8.0.19
## Patch Changes
- 360b45a: fix: handle attach on reconstruct
# 8.0.18
## Patch Changes
- be567c1: fix: suspense attach and three compat in webpack
# 8.0.17
## Patch Changes
- 9e3369e: fix dom resize, improve native tree shaking
# 8.0.16
## Patch Changes
- 669c45c: correctly type useLoader results
# 8.0.15
## Patch Changes
- c4715d5f: allow invalidate to preempt more than 1 frame
# 8.0.14
## Patch Changes
- 5559a119: Add support for recoverable errors
# 8.0.13
## Patch Changes
- 9d77d8e2: fix: detach attribute removal
# 8.0.12
## Patch Changes
- 3d10413f: fix portal layers
# 8.0.11
## Patch Changes
- 5167b1e4: memoized.args can be undefined
# 8.0.10
## Patch Changes
- eb321afd: fix: remount bug, allow portals to inject custom size
# 8.0.9
## Patch Changes
- 624df949: fix: canvas unmount race condition"
# 8.0.8
## Patch Changes
- 952a566: fix: react SSR
# 8.0.7
## Patch Changes
- f63806b: fix: react SSR
# 8.0.6
## Patch Changes
- d4bafb9: fix re-parenting, useframe not working properly in portals, attach crash
# 8.0.5
## Patch Changes
- 227c328: fix pointer for root and portals
# 8.0.4
## Patch Changes
- e981a72: fix: mock three color management, loosen peer dep
# 8.0.3
## Patch Changes
- 3252aed: setevents needs to spread and be mirrored in portals
# 8.0.2
## Patch Changes
- 8035d1f: fix: legacy mode
# 8.0.1
## Patch Changes
- 26db195: add legacy flag to turn of three.colormanagement
# 8.0.0
## Major Changes
- 385ba9c: v8 major, react-18 compat
- 04c07b8: v8 major, react-18 compat
## Patch Changes
- 347ea79: new beta for library testing
# 8.0.0-beta.0
## Major Changes
- 385ba9c: v8 major, react-18 compat
# 8.0.0-beta.0
## Patch Changes
- cf6316c: new beta for library testing
# 7.0.25
## Patch Changes
- 8698734: Release latest patches
# 7.0.24
## Patch Changes
- 7f46ddf: cleanup captured pointers when released (#1914)
# 7.0.23
## Patch Changes
- 30d38b1: remove logs
# 7.0.22
## Patch Changes
- 259e1fa: add camera:manual
# 7.0.21
## Patch Changes
- 65e4147: up usemeasure, add last event to internals"
# 7.0.20
## Patch Changes
- 54cb0fd: update react-use-measure, allow it to use the offsetSize
# 7.0.19
## Patch Changes
- 7aa2eab: fix: remove zustand subscribe selector
# 7.0.18
## Patch Changes
- 6780f58: fix unmount pointer capture
# 7.0.17
## Patch Changes
- 894c550: fix: event count
# 7.0.16
## Patch Changes
- c7a4220: patch: applyprops returns the same instance
# 7.0.15
## Patch Changes
- c5645e8: fix primitive leftovers on switch
# 7.0.14
## Patch Changes
- 05af996: fix: revert the is function
# 7.0.13
## Patch Changes
- f256558: fix(core): don't overwrite camera rotation
- 51e6fc9: fix(core): safely handle external instances
# 7.0.12
## Patch Changes
- 0df6073: fix: missed events
# 7.0.11
## Patch Changes
- 62b0a3a: fix: event order of missed pointers
# 7.0.10
## Patch Changes
- e019dd4: fixes
# 7.0.9
## Patch Changes
- cd266e4: Fix diffProps dashed keys
# 7.0.8
## Patch Changes
- 6f68406: Allow getCurrentViewport to receive an array
# 7.0.7
## Patch Changes
- 0375896: Simplify useframe, support instanced event cancelation, silence disposal
# 7.0.6
## Patch Changes
- fb052ad: Fix babel-env browserslist transpiling into old code"
# 7.0.5
## Patch Changes
- c97794a: Add useLoader.clear(Loader, input)
# 7.0.4
## Patch Changes
- 974ecfb: Allow elements to define attachFns for specific mount/unmount
# 7.0.2
## Patch Changes
- a97aca3: Add controls state field
- 4c703d6: fix rttr didn't work with r130
# 7.0.0
## Major Changes
- 96ae1ad: fix javascript interpreting negative renderpriority as positive
This is a major breaking change that will fix an edge-case. It will only affect you if you used negative useFrame indices, for instance
```jsx
useFrame(..., -1)
```
Surprisingly this disabled auto-rendering although the documentation says positive numbers only. As of v7 this will not take over the render loop.
```jsx
function Render() {
// Takes over the render-loop, the user has the responsibility to render
useFrame(({ gl, scene, camera }) => {
gl.render(scene, camera)
}, 1)
function RenderOnTop() {
// This will render on top of the previous call
useFrame(({ gl, ... }) => {
gl.render(...)
}, 2)
function A() {
// Will *not* take over the render-loop, negative indices can still be useful for sorting
useFrame(() => ..., -1)
function B() {
// B's useFrame will execute *after* A's
useFrame(() => ..., -2)
```
# 6.2.3
## Patch Changes
- 26bc7eb: typescript changes
# 6.2.2
## Patch Changes
- 4f44a2c: use more helpful name with event handling in rttr
# 6.2.1
## Patch Changes
- Fix stopPropagation logic
# 6.2.0
## Minor Changes
- Allow object3d instances to be attached
# 6.1.5
## Patch Changes
- fix(rttr): if children is undefined return an array to map with
# 6.1.4
## Patch Changes
- 6faa090: Add shape to types, exclude event functions from event data
# 6.1.3
## Patch Changes
- 71e72c0: Fix constructor args with attached children (#1348)
- 015fc03: Only set up pointer/wheel events as passive
- a160e08: Fix event setPointerCapture and stopPropagation.
# 6.1.2