React Doctor
492 rules react-doctor@0.9.18
Complete effective rule inventory.
Rules
No enabled React Doctor rules match this search.
-
react-doctor/public-debug-artifactRemove debug artifacts from public output; logs and dumps often reveal source paths, internal routes, tokens, or environment snapshots.
: warning in React projects -
react-doctor/public-env-secret-namePublic env prefixes are inlined into browser bundles. Rename public values to non-secret names, and keep tokens, passwords, private keys, and service-role credentials server-only.
: warning in React projects -
react-doctor/r3f-cap-device-pixel-ratioCap devicePixelRatio, commonly at 2, or pass an explicit DPR range so high-density displays do not multiply rendering work without a bound
: warning in React projects -
react-doctor/r3f-limit-shadowed-point-lightsKeep at most two shadow-casting point lights in one scene, or replace them with cheaper directional, spot, baked, or fake shadows
: warning in React projects -
react-doctor/r3f-no-advancing-clock-in-use-frameUse the delta argument supplied to useFrame or read clock.elapsedTime without advancing the shared clock
: warning in React projects -
react-doctor/r3f-no-allocation-in-pointer-moveReuse component-owned vectors and Three.js objects while handling pointer movement
: warning in React projects -
react-doctor/r3f-no-async-use-frameKeep useFrame synchronous; start asynchronous work outside the render loop and consume its completed state from the callback
: warning in React projects -
react-doctor/r3f-no-clone-in-use-frameClone once outside the frame loop or reuse a scratch vector, quaternion, matrix, or object allocated with useMemo or useRef
: warning in React projects -
react-doctor/r3f-no-compile-in-use-framePrecompile scene materials outside useFrame before they are first displayed
: error in React projects -
react-doctor/r3f-no-deep-use-three-selectorSelect the stable R3F store object, then read its mutable Three.js fields where they are consumed
: warning in React projects -
react-doctor/r3f-no-dispose-loader-cacheDo not dispose assets returned by cached R3F and Drei loader hooks
: warning in React projects -
react-doctor/r3f-no-duplicate-primitive-objectMount a Three.js object through one <primitive>, or clone it deliberately when two independent instances are required
: warning in React projects -
react-doctor/r3f-no-extend-in-renderCall extend at module scope so React renders and Strict Mode replays do not repeatedly mutate R3F's global catalogue
: warning in React projects -
react-doctor/r3f-no-extend-three-namespacePass extend an object containing only the Three.js constructors used by JSX so bundlers can tree-shake the rest of the namespace
: warning in React projects -
react-doctor/r3f-no-fresh-portal-containerKeep the createPortal container stable with module scope, lazy state, or useMemo so R3F can preserve the portal store and event layer
: warning in React projects -
react-doctor/r3f-no-fresh-use-three-selectorSelect one stable store field at a time, or provide an equality function when returning an object or array from useThree
: warning in React projects -
react-doctor/r3f-no-ignored-basic-material-propertiesUse meshStandardMaterial or meshPhysicalMaterial when a mesh needs roughness or metalness
: warning in React projects -
react-doctor/r3f-no-ignored-linewidthUse Drei Line for wide GPU-rendered lines, or leave linewidth at one pixel
: warning in React projects -
react-doctor/r3f-no-imperative-attach-of-managed-refLet R3F attach objects referenced by JSX. Do not add or attach the same ref.current imperatively
: error in React projects -
react-doctor/r3f-no-inline-primitive-objectCreate or clone the Three.js object once outside render, or memoize it, before passing it to <primitive>
: warning in React projects -
react-doctor/r3f-no-inline-resource-propCreate the Three.js geometry or material once at module scope, in lazy state, or with useMemo before passing it as an R3F resource prop
: warning in React projects -
react-doctor/r3f-no-internal-importsImport from @react-three/fiber or one of its documented public entry points instead of a dist or src implementation path
: warning in React projects -
react-doctor/r3f-no-manual-canvas-resizeLet Canvas and its ResizeObserver own renderer sizing instead of registering a window resize loop
: warning in React projects -
react-doctor/r3f-no-mutate-loader-cacheClone the loaded object or resource before mutating it
: warning in React projects -
react-doctor/r3f-no-mutate-uniform-prop-source-in-use-frameMutate materialRef.current.uniforms inside useFrame instead of the object passed to uniforms
: error in React projects -
react-doctor/r3f-no-mutating-pointer-event-dataCopy shared pointer-event vectors before applying local-space transforms or other mutations
: warning in React projects -
react-doctor/r3f-no-new-in-use-frameAllocate Three.js objects once in module scope, useMemo, or useRef and mutate the reusable instance inside useFrame
: warning in React projects -
react-doctor/r3f-no-normalized-float-buffer-attributeUse normalized only with integer buffer data; floating-point attributes are already represented directly
: warning in React projects -
react-doctor/r3f-no-null-loader-inputConditionally render a child component that calls the loader hook only after it has a real asset URL
: warning in React projects -
react-doctor/r3f-no-object-pointer-captureCall pointer-capture methods on the R3F event target or currentTarget, not object or eventObject
: error in React projects -
react-doctor/r3f-no-recursive-raf-with-use-frameUse R3F's useFrame subscription as the component's single animation loop instead of starting a second browser or renderer loop
: warning in React projects -
react-doctor/r3f-no-shader-configuration-mutation-in-use-frameKeep shader source and program configuration stable; animate materialRef.current.uniforms.*.value instead
: error in React projects