v9.8.1
The main changes here are bug fixes:
- Activity now works completely inside of R3F, even across boundaries with React DOM. Ie, an Activity that wraps the Canvas.
- In some cases a renderer would not be disposed when the Canvas was unmounted. This is fixed and we clarify in which instances we auto-dispose.
- fix(core): dispose the renderer R3F creates when its root unmounts by @tonyblu331 in https://github.com/pmndrs/react-three-fiber/pull/3942
- fix(core): preserve visibility across Activity and Suspense hiding by @krispya in https://github.com/pmndrs/react-three-fiber/pull/3944
- fix(web): keep a Canvas root alive while hides it by @tonyblu331 in https://github.com/pmndrs/react-three-fiber/pull/3943
- fix(core): stop Canvas rerenders from resetting runtime settings by @krispya in https://github.com/pmndrs/react-three-fiber/pull/3945
- fix(core): bridge Activity visibility into Canvas scenes by @krispya in https://github.com/pmndrs/react-three-fiber/pull/3946
- @tonyblu331 made their first contribution in https://github.com/pmndrs/react-three-fiber/pull/3942
Full Changelog: https://github.com/pmndrs/react-three-fiber/compare/v9.8.0...v9.8.1
v9.8.0
The headline feature is that R3F is now compatible with React 19.3.0. We don't fully support all of the new APIs, but it will not longer conflict to run the latest and greatest React.
In addition we fixed some long standing bugs:
- React roots are configured synchronously and then gated on the renderer if it need async, for example with WebGPURenderer. This means that you won't get awkward out of sync issues.
- Strict Mode no longer causes problems for our canvas. This was related to the async support added a while ago as well.
Have fun!
- fix: corrected broken links by @dor-rondel in https://github.com/pmndrs/react-three-fiber/pull/3872
- feat: support React 19.3 by @cades in https://github.com/pmndrs/react-three-fiber/pull/3916
- fix(core): don't tear down a root remounted during the unmount grace period by @abernier in https://github.com/pmndrs/react-three-fiber/pull/3869
- feat(core): configure and render roots synchronously by @krispya in https://github.com/pmndrs/react-three-fiber/pull/3925
- @dor-rondel made their first contribution in https://github.com/pmndrs/react-three-fiber/pull/3872
- @cades made their first contribution in https://github.com/pmndrs/react-three-fiber/pull/3916
Full Changelog: https://github.com/pmndrs/react-three-fiber/compare/v9.7.0...v9.8.0
v10.0.0-alpha.5
Alpha 5 is a types release. The WebGPU resource hooks now carry three's exact node generics, the stale TSL augmentations are gone, and the built declarations are compiled by a strict consumer fixture on every build. Alongside it: the reconciler oddities that strict-TypeScript consumers surfaced while working around the old types, and the single-canvas depth-attachment fix.
useUniformanduseUniformskeep three's exactUniformNode<TNodeType, TValue>generics and the input's exact keys. Anumberuniform is aNode<'float'>, so TSL math,mix()andbloom()accept it without a cast;.valueis typed; an unknown key is an error (#3769, #3886, #3887).ScopedStoredistinguishes nested scopes from object-valued and callable (Fn()) leaves at runtime, and.scope(key)accepts an explicit schema generic for cross-call access.- The stale
ShaderNodeObjectandthree/tslFnaugmentations are gone. three's ownFnoverloads, including theFn(fn, 'void')statement-call form compute kernels use, are reachable again with R3F installed. Matrix2is an accepted uniform value (mat2), matching three'suniform()overloads.StorageLikeincludesStorage3DTextureandStorageArrayTexture, souseGPUStorageaccepts whatcompute.mdxdocuments.once()is typed as the value the prop declares:translate={once(0, 0, 5)}andcenter={once()}typecheck without a cast.- On the
/webgpuentry,Canvas'sonCreatedreceivesWebGPURootState, so WebGPU-only renderer members no longer need aninstanceofnarrow. pnpm verify-typescompiles a strict consumer fixture against the built declarations withskipLibCheck: false, for every entry.- Reader-mode
useUniforms,useNodes,useBuffersanduseGPUStorageaccept an explicit schema:useUniforms<{ blurAmount: number }>()returns typed nodes for values registered elsewhere, instead ofUniformNode<unknown>. extend(THREE)accepts a whole module namespace without a cast; only its constructors are registered.raycaster={{ params: { Points: { threshold: 0.2 } } }}typechecks:paramsis a partial, matching the runtime merge into the raycaster's defaults.eventSourceaccepts any DOMElement, so anSVGRenderer's<svg>no longer needs a cast.<primitive>keeps typed pointer events (onClick={(e) => ...}inferse) and accepts arbitrary props for the wrapped object.- The examples compile under strict TypeScript without a single
as unknown ascast; the remainingas anysites are third-party gaps (three'sBackend,@use-gesture) and are commented as such.
useTexture'sonLoadreceives the keyed record for record inputs, matching its declared type. It was handeduseLoader's positional array, sotextures.map.wrapTthrew at runtime.- Prefixed elements (
<threeLine>) no longer throw "ThreeLine is not part of the THREE namespace" on their first prop update. - A removed prop resets to the class default for every class. Any class whose constructor takes arguments (every material, geometry and camera) previously had the prop set to
0, turning a removedcolorblack. fromRef(ref, transform)maps the resolved sibling before assignment, so props that need the sibling wrapped are declarative:lightsNode={fromRef(lightRef, (l) => lights([l]))}.- Six-file
.hdrcube sets load throughHDRCubeTextureLoaderinuseEnvironment,<Environment>and the Canvasbackgroundprop, with linear color space. - A lone primary
<Canvas id>owns the renderer's default canvas target, so its depth attachment follows the layout instead of the element's construction size (#3905). - Canvas honors the
resize.debounceprop after the initial measurement (#3881). useRenderPipelinecallbacks receive aWebGPURenderer-typed state, may not return the hook-ownedscenePass, and the hook's return narrowsrenderPipelineonisReady(#3901).- The Pointcloud example's fragment shader handles point colors correctly.
- The demo registry is the one table of contents; the app derives its groups from it. Adds
WebGPUFogandWebGPUPrimaryOnly, drops stale entries, and the examples cleanup from #3883.
no-clone-in-looponly flags.clone()calls. A loop variable namedcloneused asclone.positionno longer trips it.
v10.0.0-alpha4
We have been hard at work on the pmndrs org and all the while alpha updates have been streaming in for R3F v10 as we march toward first class WebGPU and TSL support. Let's catch you up on the big news:
The original v10 alpha introduced useUniforms, useNodes, and useLocalNodes. We have experimented with more hooks since then.
- New experimental
useBuffersanduseGPUStoragehooks manage compute buffers and storage textures. useTexturesprovides a reactive, ref-counted texture registry without passing refs throughout the component tree.- TSL nodes, uniforms, buffers, and storage now rebuild atomically during fast refresh instead of requiring a full reload.
useRenderPipelinereplacesusePostProcessingand provides declarative render-pipeline and MRT setup.- Imports from
@react-three/fiber/webgpunow typeuseThreeanduseFrameagainstWebGPURendererstate without manual casts.
What started as a revamp of the internal R3F scheduler has split out into its own project that is intended to stand on its own legs: https://github.com/pmndrs/scheduler
- useFrame can run outside , making the scheduler useful for external UI and application systems.
- Named phases, explicit before/after ordering, FPS limits, and render takeover make complex frame loops easier to compose.
- Every Canvas now owns its frameloop, invalidation, and manual stepping. A demand-driven Canvas can no longer interfere with an always-running sibling for real multi-canvas support.
WebGPU canvases can now share a single renderer and GPU context. This unlocks HUDs, picture-in-picture views, multi-viewport rendering, and 3D layers separated by regular HTML.
<Canvas id="main" renderer>
<MainScene />
</Canvas>
<Canvas
renderer={{
primaryCanvas: 'main',
scheduler: { after: 'main', fps: 30 },
}}>
<Hud />
</Canvas>
Each Canvas keeps its own scene, camera, events, and state while sharing the renderer and GPU resources. The scheduler handles target switching, render order, and independent frame rates.
There are also several smaller features that remove common imperative work:
- Canvas accepts declarative background colors, environment files, and presets.
- Explicit
widthandheightprops make fixed-resolution rendering and video export straightforward. - The default camera is part of the scene graph, so camera-attached lights, meshes, and HUD elements render naturally.
fromRef()connects props to sibling refs without a mount effect.once()supports mount-only geometry and object methods.userData.interactivePrioritylets overlays and controls take precedence over distance-based hit testing.
And then the usual hardening and bug fixes. There are a lot of ideas being tried out here so as always we would appreciate feedback on what is working and what is not working.
Try it out with:
npm install @react-three/fiber@alpha
Cheers!
- V10-hmr-bug by @DennisSmolek in https://github.com/pmndrs/react-three-fiber/pull/3670
- V10-fix-types by @DennisSmolek in https://github.com/pmndrs/react-three-fiber/pull/3675
- Bug Fixes and Life Improvement Features by @DennisSmolek in https://github.com/pmndrs/react-three-fiber/pull/3678
- chore: Automated canary releases by @krispya in https://github.com/pmndrs/react-three-fiber/pull/3680
- chore: Canary releases are only on v10 by @krispya in https://github.com/pmndrs/react-three-fiber/pull/3682
- Chore/remove changesets by @krispya in https://github.com/pmndrs/react-three-fiber/pull/3683
- V10 fixes cleanup by @DennisSmolek in https://github.com/pmndrs/react-three-fiber/pull/3684
- fix: various fixes by @DennisSmolek in https://github.com/pmndrs/react-three-fiber/pull/3688
- docs: replace deprecated miniplex with koota in AwesomeR3F by @travisbreaks in https://github.com/pmndrs/react-three-fiber/pull/3691
- feat: reactive Texture registry via useTextures (experimental, A5) by @DennisSmolek in https://github.com/pmndrs/react-three-fiber/pull/3776
- fix: v10 alpha.3 functional bugs (#1, #2, #3, #4, #6) by @DennisSmolek in https://github.com/pmndrs/react-three-fiber/pull/3777
- refactor: extract frame scheduler into @pmndrs/scheduler by @DennisSmolek in https://github.com/pmndrs/react-three-fiber/pull/3774
- docs: consolidate v10 docs into one canonical home + fix stale v9 API by @DennisSmolek in https://github.com/pmndrs/react-three-fiber/pull/3775
- test: unify testing strategy, CI parity, high-value coverage + gl-deprecation hardening by @DennisSmolek in https://github.com/pmndrs/react-three-fiber/pull/3779
- fix(v10): alpha hardening — portal leaks, WebGPU race, canvas fallback, events, uniforms, useLoader cacheKey by @DennisSmolek in https://github.com/pmndrs/react-three-fiber/pull/3784
- fix: complete the v10 alpha.3 pass (A5, C1/C2/C5/C8, blocks A+B, changelog, alpha.3 bump) by @DennisSmolek in https://github.com/pmndrs/react-three-fiber/pull/3785
- chore: require three >= 0.185, and use its WebGPU APIs properly by @DennisSmolek in https://github.com/pmndrs/react-three-fiber/pull/3786
- docs: scrub scattered specs — delete the stale ones, author what they knew by @DennisSmolek in https://github.com/pmndrs/react-three-fiber/pull/3789
- fix: close out the alpha.3 remainder (A1 test, C3, C4, C7, D4) by @DennisSmolek in https://github.com/pmndrs/react-three-fiber/pull/3788
- test: port scheduler ordering regression into the @pmndrs/scheduler idiom by @DennisSmolek in https://github.com/pmndrs/react-three-fiber/pull/3790
- fix(webgpu): atomic, generation-aware TSL resource registration (C16 HMR blocker) by @DennisSmolek in https://github.com/pmndrs/react-three-fiber/pull/3803
- docs(changelog): correct three alpha.3 entries before the release cut by @DennisSmolek in https://github.com/pmndrs/react-three-fiber/pull/3791
- ci(docs): unblock the link check — repoint cc0textures, stop timeouts counting as rot by @DennisSmolek in https://github.com/pmndrs/react-three-fiber/pull/3806
- fix: port v9 reconciler hardening by @krispya in https://github.com/pmndrs/react-three-fiber/pull/3818
- feat: remove act by @krispya in https://github.com/pmndrs/react-three-fiber/pull/3817
- fix(test-renderer): return real object handles from the mock GL create* calls by @DennisSmolek in https://github.com/pmndrs/react-three-fiber/pull/3822
- fix: keep interaction state continuous across instance reconstruction by @DennisSmolek in https://github.com/pmndrs/react-three-fiber/pull/3824
- chore(ci): close workflow drift with master, and fix the canary publish set by @DennisSmolek in https://github.com/pmndrs/react-three-fiber/pull/3825
- docs(changelog): make the alpha.3 record accurate, and give every package one by @DennisSmolek in https://github.com/pmndrs/react-three-fiber/pull/3829
- fix(build): stop the entries importing the package by name, and gate it by @DennisSmolek in https://github.com/pmndrs/react-three-fiber/pull/3830
- test: stop shadowing React's act with a frame-wait helper by @DennisSmolek in https://github.com/pmndrs/react-three-fiber/pull/3823
- fix(events): recover two fixes lost when #3823/#3824 merged at a stale head by @DennisSmolek in https://github.com/pmndrs/react-three-fiber/pull/3833
- chore(packaging): fix the exports map, drop dead files, align peers by @DennisSmolek in https://github.com/pmndrs/react-three-fiber/pull/3841
- docs: record the breaking changes alpha.3 actually ships by @DennisSmolek in https://github.com/pmndrs/react-three-fiber/pull/3842
- docs(tests): point the Tier-2 markers at where the tiers are defined by @DennisSmolek in https://github.com/pmndrs/react-three-fiber/pull/3832
- chore(ci): verify v10 after merge, and verify canaries before publishing by @DennisSmolek in https://github.com/pmndrs/react-three-fiber/pull/3834
- chore(release): derive the dist-tag from the version instead of defaulting to latest by @DennisSmolek in https://github.com/pmndrs/react-three-fiber/pull/3843
- fix(webgpu): make the three Inspector a lazy import to break the Turbopack cycle by @DennisSmolek in https://github.com/pmndrs/react-three-fiber/pull/3855
- fix(webgpu): narrow useThree/useFrame to WebGPURootState on the /webgpu entry by @DennisSmolek in https://github.com/pmndrs/react-three-fiber/pull/3860
- fix(webgpu): give scoped TSL resources valid WGSL identifiers by @DennisSmolek in https://github.com/pmndrs/react-three-fiber/pull/3857
- fix(webgpu): correct multi-canvas resize targeting by @DennisSmolek in https://github.com/pmndrs/react-three-fiber/pull/3859
- fix(core): stop useTexture's array/record forms looping forever by @DennisSmolek in https://github.com/pmndrs/react-three-fiber/pull/3858
- fix(webgpu): make useRenderPipeline rebuilds recompile and stop leaking the old scenePass by @DennisSmolek in https://github.com/pmndrs/react-three-fiber/pull/3856
- fix(core): keep the renderer root alive when a child suspends by @DennisSmolek in https://github.com/pmndrs/react-three-fiber/pull/3861
- fix(core): make Canvas frameloop root-scoped by @DennisSmolek in https://github.com/pmndrs/react-three-fiber/pull/3865
- chore-minor-cleanup by @DennisSmolek in https://github.com/pmndrs/react-three-fiber/pull/3878
- fix(core): route Canvas ordering through scheduler roots by @DennisSmolek in https://github.com/pmndrs/react-three-fiber/pull/3879
- chore(release): prepare v10.0.0-alpha.4 by @DennisSmolek in https://github.com/pmndrs/react-three-fiber/pull/3880
- @travisbreaks made their first contribution in https://github.com/pmndrs/react-three-fiber/pull/3691
Full Changelog: https://github.com/pmndrs/react-three-fiber/compare/v10.0.0-alpha.1...v10.0.0-alpha.4
v9.7.0
The headline updates for this release are the reconciler fixes. We did a pass to harden what is there against react-dom as the standard.
- R3F's internal children were not being reordered correctly. Basically, if React reordered children, our internal map would drift out of sync and this would cause subtle bugs. This is now fixed. Thanks to @kvvasuu who reported it and @wanxiankai who offered a solution.
- Pierced props now reset properly. We had a bug where if a pierce prop was unset, the reconciler would try to reset it to a default value. However, it would set it to the base object instead of the pierced prop. This is fixed now.
// Initial render
<mesh position-x={5} />
// Later render: prop removed
<mesh />
// bug: would set it to the base object
mesh.x = 0 // !!!
- Host props now update properly. Host props are ones that we supply such as
disposeandonUpdate. These now update properly. This also caused a subtle bug where imperatively updated values could get overwritten unexpectedly after unsetting the value in React. This is all fixed. Note:attachis fixed on first set and ignored if you try to dynamically update it. - Properly batch instance reconstruction. This one is pretty technical and if you are curious check out the test in the attached PR. Basically, there was an edge case where if two instances needed to reconstruct (because the
argsupdated), one could be ignore if the other bailed out of updates because of aReact.memoor similar. It is likely a problem you never had, but your agent would curse if you did. - Event priorities match
react-dom. React allows for prioritizing events, for example continuous events like wheel get a higher priority over impulse events like pointer. We copy from the best here and use the same listreact-domdoes. - Support reconciler microtasks. The React reconciler has a cool feature where it can queue microtasks to defer work based on the priorities we set earlier.
- chore: move eslint rules from parserOptions to top-level rules (#3706) by @in-ch in https://github.com/pmndrs/react-three-fiber/pull/3707
- docs: update
useFramehook description to specify that the clock delta is in seconds by @AJamesPhillips in https://github.com/pmndrs/react-three-fiber/pull/3742 - chore(CI): update test workflow actions to remove Node 20 deprecation warning by @Shushovan015 in https://github.com/pmndrs/react-three-fiber/pull/3710
- docs: fix FBXLoader naming in loading-models by @pavan-sh in https://github.com/pmndrs/react-three-fiber/pull/3745
- chore(docs): pmndrs/examples by @abernier in https://github.com/pmndrs/react-three-fiber/pull/3639
- fix: act import by @krispya in https://github.com/pmndrs/react-three-fiber/pull/3807
- fix: internal instance children synchronization after keyed reorder by @krispya in https://github.com/pmndrs/react-three-fiber/pull/3808
- chore: remove CodeSandbox CI by @krispya in https://github.com/pmndrs/react-three-fiber/pull/3809
- fix: Pierced prop reset by @krispya in https://github.com/pmndrs/react-three-fiber/pull/3810
- fix: Internal instance props sync by @krispya in https://github.com/pmndrs/react-three-fiber/pull/3811
- fix: Batch instance reconstruction hardening by @krispya in https://github.com/pmndrs/react-three-fiber/pull/3812
- feat: Match react-dom event priorities by @krispya in https://github.com/pmndrs/react-three-fiber/pull/3815
- feat: Support reconciler microtasks by @krispya in https://github.com/pmndrs/react-three-fiber/pull/3816
- @in-ch made their first contribution in https://github.com/pmndrs/react-three-fiber/pull/3707
- @AJamesPhillips made their first contribution in https://github.com/pmndrs/react-three-fiber/pull/3742
- @Shushovan015 made their first contribution in https://github.com/pmndrs/react-three-fiber/pull/3710
- @pavan-sh made their first contribution in https://github.com/pmndrs/react-three-fiber/pull/3745
Full Changelog: https://github.com/pmndrs/react-three-fiber/compare/v9.6.1...v9.7.0
v9.6.1
- fix: Seamlessly transfer interactivity state when swapping instances (#3743) by @notrabs in https://github.com/pmndrs/react-three-fiber/pull/3744
Full Changelog: https://github.com/pmndrs/react-three-fiber/compare/v9.6.0...v9.6.1
v9.6.0 - Sunset X
Ever tried using <shaderMaterial uniforms={{ time: { value: time } }} /> and ran into immediate issues with desync? No more.
The uniforms objects on ShaderMaterial and its derivatives now have a stable reference. Objects passed into uniforms will instead copy into it. This is the same as behavior for math structures that have copy such as position, rotation, quaternion, etc. and ends up simplifying using the raw JSX where utilities were often introduced before.
Documentation can be found here: https://r3f.docs.pmnd.rs/api/objects#shader-material-uniforms
And an example can be found here: https://github.com/pmndrs/react-three-fiber/blob/master/example/src/demos/ShaderMaterial.tsx
- fix: Fix broken link on "Performance pitfalls" documentation page by @simonKristensen in https://github.com/pmndrs/react-three-fiber/pull/3700
- fix: uniforms have stable refs for ShaderMaterial by @krispya in https://github.com/pmndrs/react-three-fiber/pull/3715
- docs: fix typos and documentation consistency by @NssGourav in https://github.com/pmndrs/react-three-fiber/pull/3709
- @simonKristensen made their first contribution in https://github.com/pmndrs/react-three-fiber/pull/3700
- @NssGourav made their first contribution in https://github.com/pmndrs/react-three-fiber/pull/3709
Full Changelog: https://github.com/pmndrs/react-three-fiber/compare/v9.5.0...v9.6.0
v10.0.0-alpha.1
R3F v10 has been a long time coming. We have talked over plans for years but late last year @DennisSmolek took the initiative do it all himself. We now have an alpha release, along with an alpha release of Drei 11. You can try it out today.
npm install @react-three/fiber@alpha
We were so excited to get this out we forgot to make a release for alpha.0 and alpha.1 is already upon us. But let's quickly get you caught up on what you can expect to be new.
- R3F now supports the
WebGLRendererandWebGPURenderer. This meansstate.glis nowstate.renderer. - There is a new scheduler, allowing for
useFrameto have advanced scheduling and also allows for it to be used outside of<Canvas />. Read more here: Frame Loop Overview. - WebGPU and TSL is first-class, with new built-ins just for working with TSL:
useUniforms,useNodes,useLocalNodesandusePostProcessing. Read more here: WebGPU Hook Overview.
And for a more in-depth introduction check out the migration guide.
And now comes alpha.1 with bug fixes, documentation updates, and several important feature unlocks.
- Camera frustum access for in-frame spatial queries.
- Visibility lifecycle events:
Visible,Framed, andOccluded. - Cameras are now part of the scene graph. Children of a camera will render correctly, enabling camera-attached objects by default.
- Renderer-independent render targets, similar to
useFBO, without needing to branch on the active renderer.
- The scheduler no longer depends on R3F and can run standalone.
- Scheduler context can now be shared outside the R3F tree, allowing external UIs or systems to participate in the frame loop while correctly waiting on the root set.
- New v10 features documentation.
- Updated developer documentation.
- Migration guide expanded, including details on taking over the renderer.
As always, feedback welcome. Consider all features experimental and may be changed, removed or expanded at any time. Who know,s you could be the reason 👀. Happy building!
- Start of the v10 Branch by @DennisSmolek in https://github.com/pmndrs/react-three-fiber/pull/3620
- Fix: Only Run Preinstall when working on actual repo by @DennisSmolek in https://github.com/pmndrs/react-three-fiber/pull/3624
- Feat-null-props by @DennisSmolek in https://github.com/pmndrs/react-three-fiber/pull/3628
- V10-fix-canvas-override by @DennisSmolek in https://github.com/pmndrs/react-three-fiber/pull/3629
- Feat-fire-event-3537 by @DennisSmolek in https://github.com/pmndrs/react-three-fiber/pull/3630
- Fix-portal-container-updates by @DennisSmolek in https://github.com/pmndrs/react-three-fiber/pull/3631
- Feat-useLoader-preload by @DennisSmolek in https://github.com/pmndrs/react-three-fiber/pull/3635
- feat: canvasDebounce by @DennisSmolek in https://github.com/pmndrs/react-three-fiber/pull/3636
- Docs-useframe by @DennisSmolek in https://github.com/pmndrs/react-three-fiber/pull/3640
- feat: react 19.2 and test clean by @DennisSmolek in https://github.com/pmndrs/react-three-fiber/pull/3641
- Chore-update-yarn by @DennisSmolek in https://github.com/pmndrs/react-three-fiber/pull/3643
- Fix-type-exports by @DennisSmolek in https://github.com/pmndrs/react-three-fiber/pull/3644
- Chore/migrate to pnpm by @DennisSmolek in https://github.com/pmndrs/react-three-fiber/pull/3645
- Fix-portal-bug by @DennisSmolek in https://github.com/pmndrs/react-three-fiber/pull/3649
- Docs-cleanup-circular by @DennisSmolek in https://github.com/pmndrs/react-three-fiber/pull/3655
- Docs-migration-guide by @DennisSmolek in https://github.com/pmndrs/react-three-fiber/pull/3658
- V10-shared-context by @DennisSmolek in https://github.com/pmndrs/react-three-fiber/pull/3663
- V10-feat-Occlusion by @DennisSmolek in https://github.com/pmndrs/react-three-fiber/pull/3664
Full Changelog: https://github.com/pmndrs/react-three-fiber/compare/v9.4.2...v10.0.0-alpha.1
v9.5.0
After a bit of research and development, R3F is now compatible with React 19.2, including the Activity feature!
Why did this take some effort, you might wonder? When React bumped to version 19.2.x, they also bumped the internal reconciler up a version which was not backwards compatible with 19.1.x. This put us in an awkward position of either making a breaking change in the middle of R3F v9, bump to another major just because of an internal detail from React or get creative. We chose to get creative and R3F is compatible with all versions of React between 19.0 and 19.2. The downside is we had to bundle the reconciler with R3F, but react-dom already does this so for now it is the best solution available.
Forcing breaking changes on libraries is likely not what the React teams intended so we will be working with them to try to avoid this in the future.
Happy coding.
- feat: support React 19.2 by @CodyJasonBennett in https://github.com/pmndrs/react-three-fiber/pull/3606
Full Changelog: https://github.com/pmndrs/react-three-fiber/compare/v9.4.2...v9.5.0
v9.4.2
- docs: update installation guide with iOS simulator note by @rudin in https://github.com/pmndrs/react-three-fiber/pull/3572
- fix: Expo SDK 54 compatibility through workaround by @alextoudic in https://github.com/pmndrs/react-three-fiber/pull/3599
- @rudin made their first contribution in https://github.com/pmndrs/react-three-fiber/pull/3572
- @alextoudic made their first contribution in https://github.com/pmndrs/react-three-fiber/pull/3599
Full Changelog: https://github.com/pmndrs/react-three-fiber/compare/v9.4.1...v9.4.2