-
-
Notifications
You must be signed in to change notification settings - Fork 1.8k
V10-hmr-bug #3670
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
V10-hmr-bug #3670
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
- Canvas now auto-detects Vite/webpack HMR and refreshes TSL state - Add `hmr` prop to Canvas to disable if needed - useNodes/useUniforms reader modes now subscribe to store changes - Add rebuildNodes/rebuildUniforms utils for manual rebuild - Add rebuildAllNodes/rebuildAllUniforms standalone exports - Fix usePostProcessing callback guards blocking HMR re-execution - Add _hmrVersion to RootState for coordinating rebuilds - Add documentation and CHANGELOG-ALPHA.md
Adds a Proxy-based wrapper that provides TypeScript-friendly access to uniforms and nodes in creator functions without manual casting. - New ScopedStore.ts with createScopedStore<T>() factory - CreatorState type replaces RootState in creator function signatures - Supports .scope(key), .has(key), .keys() methods - Works with Object.keys(), for...in, and 'key' in store
CodeSandbox CI is abandoned and doesn't support current Node LTS. Consolidating on GitHub Actions for all CI/testing. Closes #3621
Add width and height props to Canvas for explicit resolution control, enabling use cases like 4K video export independent of container size. New Canvas props: - width: Canvas resolution width in pixels - height: Canvas resolution height in pixels (or square if omitted) Enhanced setSize API: - setSize() - Reset to props/container mode - setSize(n) - Set to n×n square - setSize(w, h) - Set explicit size (takes ownership until reset) Ownership model: Once setSize(w, h) is called imperatively, it takes ownership. Props/container changes are stored but don't apply until setSize() reset is called. Also fixes HMR cleanup using Vite's dispose() instead of non-existent off() Closes #3617
- Babel ecosystem: 7.16→7.28 - Types: @types/react 19.0→19.2, @types/scheduler 0.23→0.26 - Testing: vitest 4.0.16→4.0.17, @testing-library/* updates - Zustand: 5.0.3→5.0.10 - use-sync-external-store: 1.4.0→1.6.0 - Changesets CLI: 2.22→2.29 - eslint-plugin-react: 7.29→7.37 - eslint-plugin-vitest: 0.3→0.5 Note: three.js 0.182.0 skipped due to WebGPU module issues in test environment
- Updated husky from v7 to v9 (new hook format) - Updated lint-staged from v12 to v16 - Removed deprecated husky config block from package.json - Simplified .husky/pre-commit to new format
- Updated prettier from v2 to v3.8.0 - Updated pretty-quick from v3 to v4.2.2 - Removed @types/prettier (Prettier 3 has built-in types) - Reformatted codebase with new prettier version
- Updated eslint to v9.39.2 - Updated to typescript-eslint v8.53.0 (replaces @typescript-eslint/*) - Updated eslint-config-prettier to v10.1.8 - Updated eslint-plugin-prettier to v5.5.5 - Updated eslint-plugin-react-hooks to v5.2.0 - Migrated from .eslintrc.json to eslint.config.js (flat config) - Removed .eslintignore (ignores now in flat config) - Removed eslint-plugin-import (compatibility issues with ESLint 9) - Added globals package for environment globals - Added "type": "module" to package.json
- Define FiberRoot locally instead of importing from react-reconciler to prevent unbuild from writing absolute filesystem paths in .d.ts - Convert verify-bundles.js to ES modules for project compatibility
The format() function returns a Promise that was being passed directly to fs.writeFile instead of being awaited first.
…t props to Canvas for explicit resolution control - Enhanced setSize() API with square shorthand and reset capability - Ownership model: imperative setSize(w, h) takes control until setSize() resets ScopedStore for Type-Safe Uniform/Node Access - New createScopedStore<T>() wrapper for TypeScript-friendly access to uniforms/nodes - Eliminates manual casting in creator functions - New exports: ScopedStoreType<T>, CreatorState HMR Support for TSL Hooks - Automatic Hot Module Replacement for WebGPU TSL hooks - Canvas detects Vite/webpack HMR events and rebuilds nodes/uniforms - New hmr prop on Canvas, rebuildNodes(), rebuildUniforms() utils Bug Fixes - Fixed useNodes() and useUniforms() reader modes not updating when store changes - Fixed usePostProcessing callbacks not re-running after HMR - Fixed absolute Windows paths in bundled type declarations (FiberRoot now defined locally) - Fixed eslint-plugin codegen not awaiting prettier format Maintenance - Migrated to ESLint 9 flat config - Updated Vite to v7, Prettier to v3, Husky to v9, lint-staged to v16 - Converted verify-bundles.js to ES modules ---
Releases: @react-three/[email protected] @react-three/[email protected] @react-three/[email protected] [email protected] [skip ci]
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
NOTE: Due to prettier v3 bump, many files were touched in this release. The diff wil suck.
Adds Canvas Sizing to Canvas component and expands setSize closes #3617
Better handing of uniforms and nodes WITHIN hooks. can get default or scoped with scope() works for nodes and uniforms closes #3669
HMR issues with node hooks closes #3668
Added methods to flush and rebuild nodes system including deps and global methods
Bumped deps closes #3622
Removed CSB CI closes #3621
Flattened eslint plugin supported. closes #3580
Stupid type issues with bundling like absolute paths
React reconciler types (spoiler, react just uses any)
For more details see CHANGELOG-ALPHA in root. (I will likely delete fresh on each one to keep root changelog correct?)