React Doctor
492 rules react-doctor@0.9.14
Complete effective rule inventory.
Rules
No enabled React Doctor rules match this search.
-
react-doctor/supabase-rls-policy-riskKeep public-read policies explicit, but gate inserts, updates, deletes, and service-role bypasses behind
auth.uid()plus trusted tenant membership.: error in React projects -
react-doctor/supabase-table-missing-rlsEnable RLS in the same migration (
alter table <name> enable row level security;) and addauth.uid()-scoped policies for select/insert/update/delete. A public table without RLS is fully readable and writable with the public anon key.: error in React projects -
react-doctor/svg-filter-clickjacking-riskAvoid filtering cross-origin iframes. Use
frame-ancestorson sensitive pages and keep SVG filters away from embedded privileged UI.: warning in React projects -
react-doctor/tabindex-no-positiveUse
tabIndex={0}(focusable in source order) ortabIndex={-1}(focus only in code).: warning in React projects -
react-doctor/tanstack-form-on-submit-requires-prevent-defaultWrap the submit handler as onSubmit={(event) => { event.preventDefault(); form.handleSubmit(); }} because TanStack Form's handleSubmit never cancels the native submit itself.
: warning in React projects -
react-doctor/tanstack-table-no-unstable-data-or-columnsGive the table's data and columns options stable references: useMemo or useState inside the component, or a module-scope constant, so row and column models are not rebuilt on every render.
: warning in React projects -
react-doctor/tanstack-virtual-measure-element-requires-data-indexAdd data-index={virtualItem.index} to every element whose ref is the virtualizer's measureElement, so dynamic measurement can attribute the size to the right row.
: warning in React projects -
react-doctor/tenant-static-proxy-riskBind tenant identity to the trusted host or authenticated org, canonicalize after decoding, reject traversal, and never let one tenant choose another tenant's asset prefix.
: warning in React projects -
react-doctor/three-cap-device-pixel-ratioCap renderer pixel ratio, commonly at 2, so high-density displays do not multiply GPU work without a bound
: warning in React projects -
react-doctor/three-effect-composer-output-pass-lastAdd OutputPass after every other EffectComposer pass
: error in React projects -
react-doctor/three-effect-composer-require-size-on-resizeResize every EffectComposer associated with a resized renderer
: error in React projects -
react-doctor/three-gpu-computation-handle-init-errorCheck or propagate the error string returned by GPUComputationRenderer.init()
: error in React projects -
react-doctor/three-gpu-computation-require-init-before-computeCall and validate GPUComputationRenderer.init() before scheduling compute()
: error in React projects -
react-doctor/three-gpu-computation-valid-variable-nameUse a unique, non-reserved GLSL identifier for each computation variable
: error in React projects -
react-doctor/three-limit-shadowed-point-lightsKeep at most two shadow-casting point lights in one scene, or use cheaper directional, spot, baked, or fake shadows
: warning in React projects -
react-doctor/three-no-allocation-in-pointer-moveReuse vectors, raycasters, and other Three.js objects while handling continuous pointer movement
: warning in React projects -
react-doctor/three-no-async-animation-loopKeep animation callbacks synchronous; start asynchronous work outside the loop and consume completed state during frames
: warning in React projects -
react-doctor/three-no-clone-in-animation-loopClone once before the animation loop or copy values into a reusable scratch object during frames
: warning in React projects -
react-doctor/three-no-compile-in-animation-loopPrecompile scene materials outside the animation loop before they are first displayed
: error in React projects -
react-doctor/three-no-ignored-basic-material-propertiesUse MeshStandardMaterial or MeshPhysicalMaterial when a mesh needs roughness or metalness
: warning in React projects -
react-doctor/three-no-ignored-linewidthUse Line2 for wide GPU-rendered lines, or leave linewidth at one pixel
: warning in React projects -
react-doctor/three-no-material-recompile-in-animation-loopChange material defines or features outside the animation loop and set needsUpdate only when the compiled program must change
: error in React projects -
react-doctor/three-no-new-in-animation-loopAllocate reusable objects before the animation loop and mutate them in place during each frame
: warning in React projects -
react-doctor/three-no-normalized-float-buffer-attributeUse normalized only with integer buffer data; floating-point attributes are already represented directly
: warning in React projects -
react-doctor/three-no-object-construction-in-renderConstruct mutable Three.js objects in a stable initializer, effect, event, or module scope instead of recreating them during React render
: warning in React projects -
react-doctor/three-no-redundant-uniforms-need-updateMutate ShaderMaterial uniform values directly; Three.js uploads custom uniforms during rendering
: warning in React projects -
react-doctor/three-no-shader-configuration-mutation-in-animation-loopKeep shader source and program configuration stable; animate existing uniform values instead
: error in React projects -
react-doctor/three-no-shadows-on-unsupported-lightUse a DirectionalLight, PointLight, or SpotLight when the scene needs a shadow-casting light
: warning in React projects -
react-doctor/three-no-state-in-animation-loopMutate Three.js objects or refs during frames; reserve React state for guarded, infrequent transitions
: warning in React projects -
react-doctor/three-no-state-in-pointer-moveKeep continuous pointer previews in Three.js objects or refs and publish React state when the interaction commits
: warning in React projects -
react-doctor/three-no-sync-readback-in-animation-loopUse readRenderTargetPixelsAsync or move GPU readback to a discrete, lower-frequency path
: warning in React projects -
react-doctor/three-no-unconditional-renderer-resize-in-animation-loopCompare the drawing-buffer size first and resize the renderer only when its display size changed
: warning in React projects -
react-doctor/three-on-before-compile-require-program-cache-keyReturn every mutable shader-patch variant from customProgramCacheKey on the same material
: error in React projects -
react-doctor/three-prefer-gpu-instanced-animationMove repeated per-instance transform motion into instanced attributes, a vertex shader, or GPU simulation
: warning in React projects -
react-doctor/three-prefer-gpu-position-animationAnimate repeated vertex or particle positions in a vertex shader, instanced attribute, or GPU simulation instead of rewriting them on the CPU every frame
: warning in React projects -
react-doctor/three-prefer-instanced-meshReplace repeated Mesh objects that share geometry and material with one InstancedMesh and per-instance transforms
: warning in React projects -
react-doctor/three-prefer-set-animation-loopUse renderer.setAnimationLoop for Three.js animation-loop compatibility, including WebXR
: warning in React projects -
react-doctor/three-raw-shader-require-fragment-float-precisionDeclare a default fragment float precision or qualify every floating-point declaration
: error in React projects -
react-doctor/three-raw-shader-require-glsl3-versionSet glslVersion to THREE.GLSL3 when RawShaderMaterial uses GLSL 3 syntax
: error in React projects -
react-doctor/three-require-animation-mixer-cleanupStop component-owned AnimationMixer actions and uncache their owned root in React cleanup
: warning in React projects