Moved from darkroomengineering#97
Problem
27 files + 5 production dependencies (~17% of the codebase) for a feature most projects won't use. Even though it's lazy-loaded, it's still:
- In
node_modules (inflating install time with Three.js + R3F + postprocessing)
- In the mental model (developers see
webgl/, GlobalCanvas, FlowMap, Fluid, PostProcessing)
- Leaking dev tools into production (Theatre.js imported unconditionally in fluid/flowmap components)
Proposal
Extract lib/webgl/ into @satus/webgl package. The OptionalFeatures / Wrapper component already handles lazy loading — just needs a package boundary.
Also Fix: Theatre.js Production Leak
Theatre.js imports in fluid/index.tsx and flowmaps/index.tsx need to be gated behind process.env.NODE_ENV === 'development' or extracted into a dev-only hook.
Tasks
Moved from darkroomengineering#97
Problem
27 files + 5 production dependencies (~17% of the codebase) for a feature most projects won't use. Even though it's lazy-loaded, it's still:
node_modules(inflating install time with Three.js + R3F + postprocessing)webgl/,GlobalCanvas,FlowMap,Fluid,PostProcessing)Proposal
Extract
lib/webgl/into@satus/webglpackage. TheOptionalFeatures/Wrappercomponent already handles lazy loading — just needs a package boundary.Also Fix: Theatre.js Production Leak
Theatre.js imports in
fluid/index.tsxandflowmaps/index.tsxneed to be gated behindprocess.env.NODE_ENV === 'development'or extracted into a dev-only hook.Tasks
lib/webgl/into@satus/webglpackagecomponents/effects/animated-gradient/(depends on WebGL)Wrappercomponent to optionally supportwebglproppackage.json@satus/webglsetup and usage