Fix the following React Review diagnostics in my codebase.
## Errors (27)
1. [error] effect-needs-cleanup — packages/kitchen-sink/src/examples/interactive-card-game.tsx:67
useEffect schedules `setTimeout(...)` but never returns a cleanup — leaks the registration on every re-run and on unmount. Return a cleanup function that calls clearTimeout(...)
2. [error] jsx-key — packages/kitchen-sink/src/examples/news-aggregator.tsx:88
Missing "key" prop for element in iterator.
3. [error] alt-text — packages/kitchen-sink/src/examples/music-player.jsx:42
Missing `alt` attribute.
4. [error] jsx-key — packages/kitchen-sink/src/examples/snake-game.jsx:7
Missing "key" prop for element in iterator.
5. [error] no-mutable-in-deps — packages/react/for.ts:74
"ref.current" in deps — refs are mutable and don't trigger re-renders, so React won't re-run this effect when it changes. Read the ref inside the effect body instead
6. [error] rules-of-hooks — website/theme.config.tsx:194
React Hook "useRouter" is called in function "Anonymous" that is neither a React function component nor a custom React Hook function. React component names must start with an uppercase letter. React Hook names must start with the word "use".
7. [error] rules-of-hooks — website/theme.config.tsx:197
React Hook "useConfig" is called in function "Anonymous" that is neither a React function component nor a custom React Hook function. React component names must start with an uppercase letter. React Hook names must start with the word "use".
8. [error] jsx-key — website/components/extra-content.tsx:74
Missing "key" prop for element in iterator.
9. [error] jsx-key — website/components/extra-content.tsx:76
Missing "key" prop for element in iterator.
10. [error] no-nested-component-definition — website/components/extra-content.tsx:70
Component "Component" defined inside "Showdown" — creates new instance every render, destroying state
11. [error] effect-needs-cleanup — website/components/extra-content.tsx:109
useEffect schedules `setTimeout(...)` but never returns a cleanup — leaks the registration on every re-run and on unmount. Return a cleanup function that calls clearTimeout(...)
12. [error] jsx-key — website/components/back-in-block/vdom.tsx:5
Missing "key" prop for element in array.
13. [error] jsx-key — website/components/back-in-block/vdom.tsx:190
Missing "key" prop for element in array.
14. [error] jsx-key — website/components/back-in-block/vdom.tsx:385
Missing "key" prop for element in array.
15. [error] jsx-key — website/components/back-in-block/vdom.tsx:644
Missing "key" prop for element in array.
16. [error] jsx-key — website/components/back-in-block/vdom.tsx:927
Missing "key" prop for element in array.
17. [error] jsx-key — website/components/back-in-block/vdom.tsx:1228
Missing "key" prop for element in array.
18. [error] jsx-key — website/components/back-in-block/static-analysis.tsx:5
Missing "key" prop for element in array.
19. [error] jsx-key — website/components/back-in-block/static-analysis.tsx:106
Missing "key" prop for element in array.
20. [error] jsx-key — website/components/back-in-block/static-analysis.tsx:210
Missing "key" prop for element in array.
21. [error] jsx-key — website/components/back-in-block/static-analysis.tsx:314
Missing "key" prop for element in array.
22. [error] jsx-key — website/components/back-in-block/static-analysis.tsx:474
Missing "key" prop for element in array.
23. [error] jsx-key — website/components/back-in-block/static-analysis.tsx:659
Missing "key" prop for element in array.
24. [error] alt-text — website/pages/api/og.tsx:115
Missing `alt` attribute.
25. [error] jsx-key — website/components/back-in-block/block-vdom.tsx:5
Missing "key" prop for element in array.
26. [error] jsx-key — website/components/back-in-block/block-vdom.tsx:235
Missing "key" prop for element in array.
27. [error] jsx-key — website/components/back-in-block/block-vdom.tsx:539
Missing "key" prop for element in array.
## Warnings (455)
28. [warning] rerender-functional-setstate — packages/kitchen-sink/src/examples/calculator.tsx:141
setValue(value / ...) — use functional update to avoid stale closures
29. [warning] rerender-functional-setstate — packages/kitchen-sink/src/examples/calculator.tsx:145
setValue(value * ...) — use functional update to avoid stale closures
30. [warning] no-array-index-as-key — packages/kitchen-sink/src/examples/calculator.tsx:278
Array index "index" used as key — causes bugs when list is reordered or filtered
31. [warning] rendering-usetransition-loading — packages/kitchen-sink/src/examples/movie-finder.tsx:13
useState for "isLoading" — if this guards a state transition (not an async fetch), consider useTransition instead
32. [warning] rerender-functional-setstate — packages/kitchen-sink/src/examples/counter.tsx:7
setCount(count + ...) — use functional update to avoid stale closures
33. [warning] label-has-associated-control — packages/kitchen-sink/src/examples/password-generator.tsx:74
A form label must be associated with a control.
34. [warning] rerender-functional-setstate — packages/kitchen-sink/src/examples/password-generator.tsx:64
setPassword({ ...password, ... }) — use functional update `setPassword(prev => ({ ...prev, ... }))` to avoid stale closures
35. [warning] rerender-functional-setstate — packages/kitchen-sink/src/examples/password-generator.tsx:78
setPassword({ ...password, ... }) — use functional update `setPassword(prev => ({ ...prev, ... }))` to avoid stale closures
36. [warning] rerender-functional-setstate — packages/kitchen-sink/src/examples/password-generator.tsx:97
setPassword({ ...password, ... }) — use functional update `setPassword(prev => ({ ...prev, ... }))` to avoid stale closures
37. [warning] rerender-functional-setstate — packages/kitchen-sink/src/examples/password-generator.tsx:111
setPassword({ ...password, ... }) — use functional update `setPassword(prev => ({ ...prev, ... }))` to avoid stale closures
38. [warning] rerender-functional-setstate — packages/kitchen-sink/src/examples/password-generator.tsx:173
setPassword({ ...password, ... }) — use functional update `setPassword(prev => ({ ...prev, ... }))` to avoid stale closures
39. [warning] rerender-functional-setstate — packages/kitchen-sink/src/examples/password-generator.tsx:176
setPassword({ ...password, ... }) — use functional update `setPassword(prev => ({ ...prev, ... }))` to avoid stale closures
40. [warning] rerender-functional-setstate — packages/kitchen-sink/src/examples/password-generator.tsx:212
setPassword({ ...password, ... }) — use functional update `setPassword(prev => ({ ...prev, ... }))` to avoid stale closures
41. [warning] rerender-functional-setstate — packages/kitchen-sink/src/examples/number-guessing.tsx:19
setAttempts(attempts + ...) — use functional update to avoid stale closures
42. [warning] rerender-functional-setstate — packages/kitchen-sink/src/examples/guestbook.tsx:28
setComments([...comments, ...]) — use functional update `setComments(prev => [...prev, ...])` to avoid stale closures
43. [warning] design-no-vague-button-label — packages/kitchen-sink/src/examples/guestbook.tsx:49
Vague button label "Submit" — name the action ("Save changes", "Send invite", "Delete account") so screen readers and hesitant users know what happens
44. [warning] rerender-functional-setstate — packages/kitchen-sink/src/examples/data-converter.tsx:34
setState({ ...state, ... }) — use functional update `setState(prev => ({ ...prev, ... }))` to avoid stale closures
45. [warning] rerender-functional-setstate — packages/kitchen-sink/src/examples/data-converter.tsx:40
setState({ ...state, ... }) — use functional update `setState(prev => ({ ...prev, ... }))` to avoid stale closures
46. [warning] rerender-functional-setstate — packages/kitchen-sink/src/examples/data-converter.tsx:46
setState({ ...state, ... }) — use functional update `setState(prev => ({ ...prev, ... }))` to avoid stale closures
47. [warning] rerender-functional-setstate — packages/kitchen-sink/src/examples/data-converter.tsx:50
setState({ ...state, ... }) — use functional update `setState(prev => ({ ...prev, ... }))` to avoid stale closures
48. [warning] no-inline-exhaustive-style — packages/kitchen-sink/src/examples/data-converter.tsx:75
8 inline style properties — extract to a CSS class, CSS module, or styled component for maintainability and reuse
49. [warning] no-outline-none — packages/kitchen-sink/src/examples/data-converter.tsx:79
outline: none removes keyboard focus visibility — use :focus-visible styling instead, or provide a box-shadow focus ring
50. [warning] no-inline-exhaustive-style — packages/kitchen-sink/src/examples/data-converter.tsx:110
8 inline style properties — extract to a CSS class, CSS module, or styled component for maintainability and reuse
51. [warning] no-outline-none — packages/kitchen-sink/src/examples/data-converter.tsx:114
outline: none removes keyboard focus visibility — use :focus-visible styling instead, or provide a box-shadow focus ring
52. [warning] label-has-associated-control — packages/kitchen-sink/src/examples/repro.tsx:17
A form label must have accessible text.
53. [warning] design-no-vague-button-label — packages/kitchen-sink/src/examples/form.tsx:12
Vague button label "Submit" — name the action ("Save changes", "Send invite", "Delete account") so screen readers and hesitant users know what happens
54. [warning] no-unknown-property — packages/kitchen-sink/src/examples/million-quiz.jsx:310
Unknown property found
55. [warning] click-events-have-key-events — packages/kitchen-sink/src/examples/million-quiz.jsx:366
Enforce a clickable non-interactive element has at least one keyboard event listener.
56. [warning] no-static-element-interactions — packages/kitchen-sink/src/examples/million-quiz.jsx:366
Static HTML elements with event handlers require a role.
57. [warning] design-no-three-period-ellipsis — packages/kitchen-sink/src/examples/million-quiz.jsx:304
Three-period ellipsis ("...") in JSX text — use the actual ellipsis character "…" (or `…`)
58. [warning] rerender-functional-setstate — packages/kitchen-sink/src/examples/styled-counter.tsx:19
setCount(count + ...) — use functional update to avoid stale closures
59. [warning] click-events-have-key-events — packages/kitchen-sink/src/examples/interactive-card-game.tsx:30
Enforce a clickable non-interactive element has at least one keyboard event listener.
60. [warning] no-static-element-interactions — packages/kitchen-sink/src/examples/interactive-card-game.tsx:30
Static HTML elements with event handlers require a role.
61. [warning] prefer-useReducer — packages/kitchen-sink/src/examples/interactive-card-game.tsx:41
Component "CardGame" has 8 useState calls — consider useReducer for related state
62. [warning] rerender-state-only-in-handlers — packages/kitchen-sink/src/examples/interactive-card-game.tsx:43
useState "selectedCards" is updated but never read in the component's return — use useRef so updates don't trigger re-renders
63. [warning] rerender-state-only-in-handlers — packages/kitchen-sink/src/examples/interactive-card-game.tsx:47
useState "isTimerRunning" is updated but never read in the component's return — use useRef so updates don't trigger re-renders
64. [warning] rerender-lazy-state-init — packages/kitchen-sink/src/examples/interactive-card-game.tsx:42
useState(generateDeck()) calls initializer on every render — use useState(() => generateDeck()) for lazy initialization
65. [warning] rerender-functional-setstate — packages/kitchen-sink/src/examples/interactive-card-game.tsx:89
setSelectedCards([...selectedCards, ...]) — use functional update `setSelectedCards(prev => [...prev, ...])` to avoid stale closures
66. [warning] no-array-index-as-key — packages/kitchen-sink/src/examples/interactive-card-game.tsx:147
Array index "index" used as key — causes bugs when list is reordered or filtered
67. [warning] no-fetch-in-effect — packages/kitchen-sink/src/examples/crypto-tracker.jsx:72
fetch() inside useEffect — use a data fetching library (react-query, SWR) or server component
68. [warning] no-generic-handler-names — packages/kitchen-sink/src/examples/crypto-tracker.jsx:123
Non-descriptive handler name "handleChange" — name should describe what it does, not when it runs
69. [warning] no-inline-exhaustive-style — packages/kitchen-sink/src/examples/crypto-tracker.jsx:124
9 inline style properties — extract to a CSS class, CSS module, or styled component for maintainability and reuse
70. [warning] click-events-have-key-events — packages/kitchen-sink/src/examples/task-tracker.tsx:200
Enforce a clickable non-interactive element has at least one keyboard event listener.
71. [warning] click-events-have-key-events — packages/kitchen-sink/src/examples/task-tracker.tsx:206
Enforce a clickable non-interactive element has at least one keyboard event listener.
72. [warning] click-events-have-key-events — packages/kitchen-sink/src/examples/task-tracker.tsx:217
Enforce a clickable non-interactive element has at least one keyboard event listener.
73. [warning] click-events-have-key-events — packages/kitchen-sink/src/examples/task-tracker.tsx:309
Enforce a clickable non-interactive element has at least one keyboard event listener.
74. [warning] click-events-have-key-events — packages/kitchen-sink/src/examples/task-tracker.tsx:312
Enforce a clickable non-interactive element has at least one keyboard event listener.
75. [warning] click-events-have-key-events — packages/kitchen-sink/src/examples/task-tracker.tsx:321
Enforce a clickable non-interactive element has at least one keyboard event listener.
76. [warning] no-static-element-interactions — packages/kitchen-sink/src/examples/task-tracker.tsx:200
Static HTML elements with event handlers require a role.
77. [warning] no-static-element-interactions — packages/kitchen-sink/src/examples/task-tracker.tsx:206
Static HTML elements with event handlers require a role.
78. [warning] no-static-element-interactions — packages/kitchen-sink/src/examples/task-tracker.tsx:217
Static HTML elements with event handlers require a role.
79. [warning] no-static-element-interactions — packages/kitchen-sink/src/examples/task-tracker.tsx:309
Static HTML elements with event handlers require a role.
80. [warning] no-static-element-interactions — packages/kitchen-sink/src/examples/task-tracker.tsx:312
Static HTML elements with event handlers require a role.
81. [warning] no-static-element-interactions — packages/kitchen-sink/src/examples/task-tracker.tsx:321
Static HTML elements with event handlers require a role.
82. [warning] no-derived-useState — packages/kitchen-sink/src/examples/task-tracker.tsx:140
useState initialized from prop "itemData" — if this value should stay in sync with the prop, derive it during render instead
83. [warning] rerender-functional-setstate — packages/kitchen-sink/src/examples/task-tracker.tsx:142
setItem({ ...item, ... }) — use functional update `setItem(prev => ({ ...prev, ... }))` to avoid stale closures
84. [warning] no-inline-exhaustive-style — packages/kitchen-sink/src/examples/task-tracker.tsx:260
8 inline style properties — extract to a CSS class, CSS module, or styled component for maintainability and reuse
85. [warning] no-array-index-as-key — packages/kitchen-sink/src/examples/task-tracker.tsx:419
Array index "index" used as key — causes bugs when list is reordered or filtered
86. [warning] no-cascading-set-state — packages/kitchen-sink/src/examples/location-app.tsx:9
4 setState calls in a single useEffect — consider using useReducer or deriving state
87. [warning] rerender-functional-setstate — packages/kitchen-sink/src/examples/digital-personal-journal.jsx:66
setEntries([...entries, ...]) — use functional update `setEntries(prev => [...prev, ...])` to avoid stale closures
88. [warning] rerender-functional-setstate — packages/kitchen-sink/src/examples/digital-personal-journal.jsx:67
setNextId(nextId + ...) — use functional update to avoid stale closures
89. [warning] no-inline-exhaustive-style — packages/kitchen-sink/src/examples/digital-personal-journal.jsx:106
10 inline style properties — extract to a CSS class, CSS module, or styled component for maintainability and reuse
90. [warning] no-cascading-set-state — packages/kitchen-sink/src/examples/type-race.jsx:94
3 setState calls in a single useEffect — consider using useReducer or deriving state
91. [warning] prefer-useReducer — packages/kitchen-sink/src/examples/type-race.jsx:164
Component "TypeRace" has 9 useState calls — consider useReducer for related state
92. [warning] rerender-state-only-in-handlers — packages/kitchen-sink/src/examples/type-race.jsx:171
useState "timeLap" is updated but never read in the component's return — use useRef so updates don't trigger re-renders
93. [warning] rerender-functional-setstate — packages/kitchen-sink/src/examples/type-race.jsx:200
setTotalChar(totalChar + ...) — use functional update to avoid stale closures
94. [warning] label-has-associated-control — packages/kitchen-sink/src/examples/mortgage-calculator.tsx:42
A form label must be associated with a control.
95. [warning] label-has-associated-control — packages/kitchen-sink/src/examples/mortgage-calculator.tsx:51
A form label must be associated with a control.
96. [warning] label-has-associated-control — packages/kitchen-sink/src/examples/mortgage-calculator.tsx:60
A form label must be associated with a control.
97. [warning] anchor-is-valid — packages/kitchen-sink/src/examples/wouter.tsx:7
Missing `href` attribute for the `a` element.
98. [warning] no-secrets-in-client-code — packages/kitchen-sink/src/examples/news-aggregator.tsx:24
Possible hardcoded secret in "apikey" — use environment variables instead
99. [warning] no-cascading-set-state — packages/kitchen-sink/src/examples/news-aggregator.tsx:69
3 setState calls in a single useEffect — consider using useReducer or deriving state
100. [warning] no-fetch-in-effect — packages/kitchen-sink/src/examples/news-aggregator.tsx:69
fetch() inside useEffect — use a data fetching library (react-query, SWR) or server component
101. [warning] design-no-three-period-ellipsis — packages/kitchen-sink/src/examples/news-aggregator.tsx:85
Three-period ellipsis ("...") in JSX text — use the actual ellipsis character "…" (or `…`)
102. [warning] label-has-associated-control — packages/kitchen-sink/src/examples/bmi-calculator.jsx:51
A form label must be associated with a control.
103. [warning] label-has-associated-control — packages/kitchen-sink/src/examples/bmi-calculator.jsx:62
A form label must be associated with a control.
104. [warning] label-has-associated-control — packages/kitchen-sink/src/examples/bmi-calculator.jsx:70
A form label must be associated with a control.
105. [warning] label-has-associated-control — packages/kitchen-sink/src/examples/bmi-calculator.jsx:81
A form label must be associated with a control.
106. [warning] label-has-associated-control — packages/kitchen-sink/src/examples/bmi-calculator.jsx:92
A form label must be associated with a control.
107. [warning] no-cascading-set-state — packages/kitchen-sink/src/examples/music-player.jsx:101
3 setState calls in a single useEffect — consider using useReducer or deriving state
108. [warning] no-cascading-set-state — packages/kitchen-sink/src/examples/pomodoro-timer.jsx:9
4 setState calls in a single useEffect — consider using useReducer or deriving state
109. [warning] rerender-functional-setstate — packages/kitchen-sink/src/examples/pomodoro-timer.jsx:14
setSeconds(seconds - ...) — use functional update to avoid stale closures
110. [warning] rerender-functional-setstate — packages/kitchen-sink/src/examples/pomodoro-timer.jsx:20
setMinutes(minutes - ...) — use functional update to avoid stale closures
111. [warning] label-has-associated-control — packages/kitchen-sink/src/examples/etch-a-sketch.tsx:83
A form label must be associated with a control.
112. [warning] click-events-have-key-events — packages/kitchen-sink/src/examples/redux-todo.tsx:53
Enforce a clickable non-interactive element has at least one keyboard event listener.
113. [warning] no-static-element-interactions — packages/kitchen-sink/src/examples/redux-todo.tsx:53
Static HTML elements with event handlers require a role.
114. [warning] design-no-three-period-ellipsis — packages/kitchen-sink/src/examples/hangman-game.tsx:587
Three-period ellipsis ("...") in JSX text — use the actual ellipsis character "…" (or `…`)
115. [warning] no-secrets-in-client-code — packages/kitchen-sink/src/examples/recipe-finder.jsx:14
Possible hardcoded secret in "API_KEY" — use environment variables instead
116. [warning] rerender-functional-setstate — packages/kitchen-sink/src/examples/recipe-finder.jsx:86
setCart([...cart, ...]) — use functional update `setCart(prev => [...prev, ...])` to avoid stale closures
117. [warning] design-no-three-period-ellipsis — packages/kitchen-sink/src/examples/recipe-finder.jsx:152
Three-period ellipsis ("...") in JSX text — use the actual ellipsis character "…" (or `…`)
118. [warning] no-array-index-as-key — packages/kitchen-sink/src/examples/recipe-finder.jsx:233
Array index "index" used as key — causes bugs when list is reordered or filtered
119. [warning] no-array-index-as-key — packages/kitchen-sink/src/examples/recipe-finder.jsx:239
Array index "index" used as key — causes bugs when list is reordered or filtered
120. [warning] no-inline-exhaustive-style — packages/kitchen-sink/src/examples/recipe-finder.jsx:369
9 inline style properties — extract to a CSS class, CSS module, or styled component for maintainability and reuse
121. [warning] no-array-index-as-key — packages/kitchen-sink/src/examples/recipe-finder.jsx:391
Array index "index" used as key — causes bugs when list is reordered or filtered
122. [warning] no-array-index-as-key — packages/kitchen-sink/src/examples/recipe-finder.jsx:397
Array index "index" used as key — causes bugs when list is reordered or filtered
123. [warning] no-unknown-property — packages/kitchen-sink/src/examples/snake-game.jsx:174
Unknown property found
124. [warning] no-unknown-property — packages/kitchen-sink/src/examples/snake-game.jsx:186
Unknown property found
125. [warning] no-unknown-property — packages/kitchen-sink/src/examples/snake-game.jsx:197
Unknown property found
126. [warning] no-unknown-property — packages/kitchen-sink/src/examples/snake-game.jsx:209
Unknown property found
127. [warning] no-static-element-interactions — packages/kitchen-sink/src/examples/snake-game.jsx:118
Static HTML elements with event handlers require a role.
128. [warning] no-inline-exhaustive-style — packages/kitchen-sink/src/examples/snake-game.jsx:9
8 inline style properties — extract to a CSS class, CSS module, or styled component for maintainability and reuse
129. [warning] no-inline-exhaustive-style — packages/kitchen-sink/src/examples/snake-game.jsx:28
8 inline style properties — extract to a CSS class, CSS module, or styled component for maintainability and reuse
130. [warning] label-has-associated-control — packages/kitchen-sink/src/examples/investment-calculator.tsx:41
A form label must be associated with a control.
131. [warning] label-has-associated-control — packages/kitchen-sink/src/examples/investment-calculator.tsx:50
A form label must be associated with a control.
132. [warning] label-has-associated-control — packages/kitchen-sink/src/examples/investment-calculator.tsx:59
A form label must be associated with a control.
133. [warning] no-inline-exhaustive-style — packages/kitchen-sink/src/examples/morse-code-translator.jsx:125
8 inline style properties — extract to a CSS class, CSS module, or styled component for maintainability and reuse
134. [warning] no-inline-exhaustive-style — packages/kitchen-sink/src/examples/morse-code-translator.jsx:152
8 inline style properties — extract to a CSS class, CSS module, or styled component for maintainability and reuse
135. [warning] rerender-state-only-in-handlers — packages/kitchen-sink/src/examples/todolist.tsx:7
useState "taskIdCounter" is updated but never read in the component's return — use useRef so updates don't trigger re-renders
136. [warning] rerender-functional-setstate — packages/kitchen-sink/src/examples/todolist.tsx:11
setTasks([...tasks, ...]) — use functional update `setTasks(prev => [...prev, ...])` to avoid stale closures
137. [warning] rerender-functional-setstate — packages/kitchen-sink/src/examples/todolist.tsx:16
setTaskIdCounter(taskIdCounter + ...) — use functional update to avoid stale closures
138. [warning] prefer-useReducer — packages/kitchen-sink/src/examples/currency-convertor.tsx:15
Component "CurrencyConvertor" has 5 useState calls — consider useReducer for related state
139. [warning] no-fetch-in-effect — packages/kitchen-sink/src/examples/currency-convertor.tsx:22
fetch() inside useEffect — use a data fetching library (react-query, SWR) or server component
140. [warning] no-inline-exhaustive-style — packages/kitchen-sink/src/examples/currency-convertor.tsx:108
8 inline style properties — extract to a CSS class, CSS module, or styled component for maintainability and reuse
141. [warning] no-outline-none — packages/kitchen-sink/src/examples/currency-convertor.tsx:112
outline: none removes keyboard focus visibility — use :focus-visible styling instead, or provide a box-shadow focus ring
142. [warning] no-inline-exhaustive-style — packages/kitchen-sink/src/examples/currency-convertor.tsx:123
9 inline style properties — extract to a CSS class, CSS module, or styled component for maintainability and reuse
143. [warning] no-outline-none — packages/kitchen-sink/src/examples/currency-convertor.tsx:127
outline: none removes keyboard focus visibility — use :focus-visible styling instead, or provide a box-shadow focus ring
144. [warning] no-inline-exhaustive-style — packages/kitchen-sink/src/examples/tic-tac-toe.jsx:8
9 inline style properties — extract to a CSS class, CSS module, or styled component for maintainability and reuse
145. [warning] rerender-lazy-state-init — packages/kitchen-sink/src/examples/tic-tac-toe.jsx:27
useState(fill()) calls initializer on every render — use useState(() => fill()) for lazy initialization
146. [warning] no-render-in-render — packages/kitchen-sink/src/examples/tic-tac-toe.jsx:75
Inline render function "renderSquare()" — extract to a separate component for proper reconciliation
147. [warning] no-render-in-render — packages/kitchen-sink/src/examples/tic-tac-toe.jsx:76
Inline render function "renderSquare()" — extract to a separate component for proper reconciliation
148. [warning] no-render-in-render — packages/kitchen-sink/src/examples/tic-tac-toe.jsx:77
Inline render function "renderSquare()" — extract to a separate component for proper reconciliation
149. [warning] no-render-in-render — packages/kitchen-sink/src/examples/tic-tac-toe.jsx:86
Inline render function "renderSquare()" — extract to a separate component for proper reconciliation
150. [warning] no-render-in-render — packages/kitchen-sink/src/examples/tic-tac-toe.jsx:87
Inline render function "renderSquare()" — extract to a separate component for proper reconciliation
151. [warning] no-render-in-render — packages/kitchen-sink/src/examples/tic-tac-toe.jsx:88
Inline render function "renderSquare()" — extract to a separate component for proper reconciliation
152. [warning] no-render-in-render — packages/kitchen-sink/src/examples/tic-tac-toe.jsx:97
Inline render function "renderSquare()" — extract to a separate component for proper reconciliation
153. [warning] no-render-in-render — packages/kitchen-sink/src/examples/tic-tac-toe.jsx:98
Inline render function "renderSquare()" — extract to a separate component for proper reconciliation
154. [warning] no-render-in-render — packages/kitchen-sink/src/examples/tic-tac-toe.jsx:99
Inline render function "renderSquare()" — extract to a separate component for proper reconciliation
155. [warning] rerender-functional-setstate — packages/kitchen-sink/src/examples/create-event-calender.jsx:23
setEvents([...events, ...]) — use functional update `setEvents(prev => [...prev, ...])` to avoid stale closures
156. [warning] no-inline-exhaustive-style — packages/kitchen-sink/src/examples/weather-app.tsx:101
10 inline style properties — extract to a CSS class, CSS module, or styled component for maintainability and reuse
157. [warning] no-generic-handler-names — packages/kitchen-sink/src/examples/weather-app.tsx:142
Non-descriptive handler name "handleChange" — name should describe what it does, not when it runs
158. [warning] label-has-associated-control — packages/kitchen-sink/src/examples/discount-calculator.tsx:36
A form label must be associated with a control.
159. [warning] label-has-associated-control — packages/kitchen-sink/src/examples/discount-calculator.tsx:45
A form label must be associated with a control.
160. [warning] no-autofocus — packages/kitchen-sink/src/examples/virtual-whiteboard.tsx:423
The `autoFocus` attribute is found here, which can cause usability issues for sighted and non-sighted users.
161. [warning] no-giant-component — packages/kitchen-sink/src/examples/virtual-whiteboard.tsx:3
Component "VirtualBoard" is 428 lines — consider breaking it into smaller focused components
162. [warning] prefer-useReducer — packages/kitchen-sink/src/examples/virtual-whiteboard.tsx:3
Component "VirtualBoard" has 13 useState calls — consider useReducer for related state
163. [warning] rerender-state-only-in-handlers — packages/kitchen-sink/src/examples/virtual-whiteboard.tsx:18
useState "coordinates" is updated but never read in the component's return — use useRef so updates don't trigger re-renders
164. [warning] rerender-state-only-in-handlers — packages/kitchen-sink/src/examples/virtual-whiteboard.tsx:23
useState "currentLine" is updated but never read in the component's return — use useRef so updates don't trigger re-renders
165. [warning] rerender-state-only-in-handlers — packages/kitchen-sink/src/examples/virtual-whiteboard.tsx:26
useState "isDrawing" is updated but never read in the component's return — use useRef so updates don't trigger re-renders
166. [warning] rerender-state-only-in-handlers — packages/kitchen-sink/src/examples/virtual-whiteboard.tsx:37
useState "textElements" is updated but never read in the component's return — use useRef so updates don't trigger re-renders
167. [warning] rerender-state-only-in-handlers — packages/kitchen-sink/src/examples/virtual-whiteboard.tsx:42
useState "startPoint" is updated but never read in the component's return — use useRef so updates don't trigger re-renders
168. [warning] rerender-state-only-in-handlers — packages/kitchen-sink/src/examples/virtual-whiteboard.tsx:45
useState "mousePosition" is updated but never read in the component's return — use useRef so updates don't trigger re-renders
169. [warning] rerender-state-only-in-handlers — packages/kitchen-sink/src/examples/virtual-whiteboard.tsx:49
useState "showEraserPreview" is updated but never read in the component's return — use useRef so updates don't trigger re-renders
170. [warning] rerender-state-only-in-handlers — packages/kitchen-sink/src/examples/virtual-whiteboard.tsx:50
useState "undoStack" is updated but never read in the component's return — use useRef so updates don't trigger re-renders
171. [warning] rerender-state-only-in-handlers — packages/kitchen-sink/src/examples/virtual-whiteboard.tsx:51
useState "redoStack" is updated but never read in the component's return — use useRef so updates don't trigger re-renders
172. [warning] rerender-functional-setstate — packages/kitchen-sink/src/examples/virtual-whiteboard.tsx:60
setUndoStack([...undoStack, ...]) — use functional update `setUndoStack(prev => [...prev, ...])` to avoid stale closures
173. [warning] rerender-functional-setstate — packages/kitchen-sink/src/examples/virtual-whiteboard.tsx:113
setCoordinates([...coordinates, ...]) — use functional update `setCoordinates(prev => [...prev, ...])` to avoid stale closures
174. [warning] rerender-functional-setstate — packages/kitchen-sink/src/examples/virtual-whiteboard.tsx:184
setTextElements([...textElements, ...]) — use functional update `setTextElements(prev => [...prev, ...])` to avoid stale closures
175. [warning] rerender-functional-setstate — packages/kitchen-sink/src/examples/virtual-whiteboard.tsx:188
setTextInput({ ...textInput, ... }) — use functional update `setTextInput(prev => ({ ...prev, ... }))` to avoid stale closures
176. [warning] rerender-functional-setstate — packages/kitchen-sink/src/examples/virtual-whiteboard.tsx:262
setCurrentLine([...currentLine, ...]) — use functional update `setCurrentLine(prev => [...prev, ...])` to avoid stale closures
177. [warning] rerender-functional-setstate — packages/kitchen-sink/src/examples/countdown-timer.jsx:30
setRecordedTimes([...recordedTimes, ...]) — use functional update `setRecordedTimes(prev => [...prev, ...])` to avoid stale closures
178. [warning] no-cascading-set-state — packages/kitchen-sink/src/examples/countdown-timer.jsx:58
12 setState calls in a single useEffect — consider using useReducer or deriving state
179. [warning] rerender-functional-setstate — packages/kitchen-sink/src/examples/countdown-timer.jsx:72
setMilliseconds(milliseconds - ...) — use functional update to avoid stale closures
180. [warning] rerender-functional-setstate — packages/kitchen-sink/src/examples/countdown-timer.jsx:75
setSeconds(seconds - ...) — use functional update to avoid stale closures
181. [warning] rerender-functional-setstate — packages/kitchen-sink/src/examples/countdown-timer.jsx:79
setMinutes(minutes - ...) — use functional update to avoid stale closures
182. [warning] rerender-functional-setstate — packages/kitchen-sink/src/examples/countdown-timer.jsx:84
setHours(hours - ...) — use functional update to avoid stale closures
183. [warning] no-array-index-as-key — packages/kitchen-sink/src/examples/countdown-timer.jsx:215
Array index "index" used as key — causes bugs when list is reordered or filtered
184. [warning] rerender-state-only-in-handlers — packages/kitchen-sink/src/main.tsx:45
useState "screen" is updated but never read in the component's return — use useRef so updates don't trigger re-renders
185. [warning] no-cascading-set-state — packages/kitchen-sink/src/main.tsx:56
4 setState calls in a single useEffect — consider using useReducer or deriving state
186. [warning] design-no-three-period-ellipsis — packages/kitchen-sink/src/main.tsx:161
Three-period ellipsis ("...") in JSX text — use the actual ellipsis character "…" (or `…`)
187. [warning] no-secrets-in-client-code — packages/kitchen-sink/src/examples/book-recommendation.jsx:6
Possible hardcoded secret in "apiKey" — use environment variables instead
188. [warning] no-cascading-set-state — packages/kitchen-sink/src/examples/book-recommendation.jsx:13
3 setState calls in a single useEffect — consider using useReducer or deriving state
189. [warning] no-fetch-in-effect — packages/kitchen-sink/src/examples/book-recommendation.jsx:13
fetch() inside useEffect — use a data fetching library (react-query, SWR) or server component
190. [warning] design-no-three-period-ellipsis — packages/kitchen-sink/src/examples/book-recommendation.jsx:38
Three-period ellipsis ("...") in JSX text — use the actual ellipsis character "…" (or `…`)
191. [warning] no-outline-none — packages/kitchen-sink/src/examples/book-recommendation.jsx:82
outline: none removes keyboard focus visibility — use :focus-visible styling instead, or provide a box-shadow focus ring
192. [warning] rendering-svg-precision — packages/kitchen-sink/src/examples/book-recommendation.jsx:101
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
193. [warning] no-array-index-as-key — packages/kitchen-sink/src/examples/book-recommendation.jsx:135
Array index "index" used as key — causes bugs when list is reordered or filtered
194. [warning] no-inline-exhaustive-style — packages/kitchen-sink/src/examples/book-recommendation.jsx:235
8 inline style properties — extract to a CSS class, CSS module, or styled component for maintainability and reuse
195. [warning] no-barrel-import — packages/react/for.ts:11
Import from barrel/index file — import directly from source modules: "../million/array", "../million/block"
196. [warning] no-barrel-import — packages/react/index.ts:1
Import from barrel/index file — import directly from "../million/block" for better tree-shaking
197. [warning] no-children-prop — packages/react/utils.ts:89
Avoid passing children using a prop.
198. [warning] no-children-prop — packages/react-server/index.ts:173
Avoid passing children using a prop.
199. [warning] no-children-prop — packages/react-server/index.ts:223
Avoid passing children using a prop.
200. [warning] rendering-hydration-no-flicker — packages/react-server/index.ts:361
useEffect(setState, []) on mount causes a flash — consider useSyncExternalStore or suppressHydrationWarning
201. [warning] no-unknown-property — website/theme.config.tsx:84
Unknown property found
202. [warning] rendering-svg-precision — website/theme.config.tsx:18
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
203. [warning] rendering-svg-precision — website/theme.config.tsx:22
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
204. [warning] rendering-svg-precision — website/theme.config.tsx:26
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
205. [warning] rendering-svg-precision — website/theme.config.tsx:30
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
206. [warning] rendering-svg-precision — website/theme.config.tsx:34
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
207. [warning] rendering-hydration-mismatch-time — website/theme.config.tsx:119
new Date() reachable from JSX renders differently on server vs client — wrap in useEffect+useState (client-only) or add suppressHydrationWarning to the parent if intentional
208. [warning] nextjs-no-a-element — website/theme.config.tsx:136
Use next/link instead of <a> for internal links — enables client-side navigation and prefetching
209. [warning] nextjs-no-a-element — website/theme.config.tsx:160
Use next/link instead of <a> for internal links — enables client-side navigation and prefetching
210. [warning] nextjs-no-font-link — website/theme.config.tsx:251
Loading Google Fonts via <link> — use next/font instead for self-hosting, zero layout shift, and no render-blocking requests
211. [warning] design-no-default-tailwind-palette — website/components/back-in-block/slideshow.tsx:24
text-gray-500 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)
212. [warning] design-no-default-tailwind-palette — website/components/back-in-block/slideshow.tsx:29
bg-gray-500 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)
213. [warning] design-no-default-tailwind-palette — website/components/back-in-block/slideshow.tsx:29
bg-gray-600 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)
214. [warning] rerender-functional-setstate — website/components/back-in-block/slideshow.tsx:33
setFrame(frame - ...) — use functional update to avoid stale closures
215. [warning] design-no-default-tailwind-palette — website/components/back-in-block/slideshow.tsx:42
bg-gray-500 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)
216. [warning] design-no-default-tailwind-palette — website/components/back-in-block/slideshow.tsx:42
bg-gray-600 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)
217. [warning] rerender-functional-setstate — website/components/back-in-block/slideshow.tsx:46
setFrame(frame + ...) — use functional update to avoid stale closures
218. [warning] nextjs-no-img-element — website/components/lint/cases.tsx:55
Use next/image instead of <img> — provides automatic optimization, lazy loading, and responsive srcset
219. [warning] no-z-index-9999 — website/components/cursor.tsx:17
z-index: 1000 is arbitrarily high — use a deliberate z-index scale (1–50). Extreme values signal a stacking context problem, not a fix
220. [warning] rendering-svg-precision — website/components/cursor.tsx:28
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
221. [warning] design-no-default-tailwind-palette — website/components/box.tsx:118
bg-gray-50 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)
222. [warning] design-no-default-tailwind-palette — website/components/box.tsx:129
text-gray-500 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)
223. [warning] design-no-default-tailwind-palette — website/components/box.tsx:131
text-gray-400 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)
224. [warning] design-no-default-tailwind-palette — website/components/box.tsx:153
bg-gray-50 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)
225. [warning] design-no-default-tailwind-palette — website/components/box.tsx:164
text-gray-500 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)
226. [warning] design-no-default-tailwind-palette — website/components/box.tsx:166
text-gray-400 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)
227. [warning] server-sequential-independent-await — website/components/extra-content.tsx:33
Sequential `await` without a data dependency on the previous result — wrap the independent calls in `Promise.all([...])` so they race instead of waterfalling
228. [warning] rendering-hydration-mismatch-time — website/components/extra-content.tsx:91
Math.random() reachable from JSX renders differently on server vs client — wrap in useEffect+useState (client-only) or add suppressHydrationWarning to the parent if intentional
229. [warning] rendering-hydration-mismatch-time — website/components/extra-content.tsx:95
Math.random() reachable from JSX renders differently on server vs client — wrap in useEffect+useState (client-only) or add suppressHydrationWarning to the parent if intentional
230. [warning] design-no-redundant-padding-axes — website/components/extra-content.tsx:129
px-2 py-2 → use the shorthand p-2
231. [warning] rerender-functional-setstate — website/components/extra-content.tsx:146
setRenders(renders + ...) — use functional update to avoid stale closures
232. [warning] rerender-functional-setstate — website/components/extra-content.tsx:155
setRenders(renders + ...) — use functional update to avoid stale closures
233. [warning] design-no-bold-heading — website/components/home/faq.tsx:15
font-bold on <h2> crushes counter shapes at display sizes — use font-semibold (600) or font-medium (500)
234. [warning] design-no-default-tailwind-palette — website/components/home/faq.tsx:15
text-gray-800 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)
235. [warning] design-no-default-tailwind-palette — website/components/home/faq.tsx:18
text-gray-600 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)
236. [warning] design-no-default-tailwind-palette — website/components/home/faq.tsx:18
text-gray-300 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)
237. [warning] no-pure-black-background — website/components/home/faq.tsx:60
Pure black background (bg-black) looks harsh — use a near-black tinted toward your brand hue (e.g. bg-gray-950)
238. [warning] no-array-index-as-key — website/components/home/faq.tsx:154
Array index "i" used as key — causes bugs when list is reordered or filtered
239. [warning] design-no-default-tailwind-palette — website/components/home/faq.tsx:159
text-gray-400 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)
240. [warning] design-no-default-tailwind-palette — website/components/home/faq.tsx:160
text-gray-900 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)
241. [warning] design-no-default-tailwind-palette — website/components/home/faq.tsx:196
text-gray-600 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)
242. [warning] design-no-default-tailwind-palette — website/components/home/faq.tsx:196
text-gray-400 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)
243. [warning] no-unknown-property — website/components/icons/github-icon.tsx:8
Unknown property found
244. [warning] rendering-svg-precision — website/components/icons/github-icon.tsx:6
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
245. [warning] design-no-bold-heading — website/components/home/showcase.tsx:17
font-bold on <h2> crushes counter shapes at display sizes — use font-semibold (600) or font-medium (500)
246. [warning] design-no-default-tailwind-palette — website/components/home/showcase.tsx:17
text-gray-800 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)
247. [warning] design-no-default-tailwind-palette — website/components/home/showcase.tsx:90
text-gray-700 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)
248. [warning] design-no-default-tailwind-palette — website/components/home/showcase.tsx:91
text-gray-500 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)
249. [warning] no-danger — website/components/wrapped/index.tsx:74
Do not use `dangerouslySetInnerHTML` prop
250. [warning] no-giant-component — website/components/wrapped/index.tsx:10
Component "Wrapped" is 335 lines — consider breaking it into smaller focused components
251. [warning] rerender-state-only-in-handlers — website/components/wrapped/index.tsx:12
useState "name" is updated but never read in the component's return — use useRef so updates don't trigger re-renders
252. [warning] no-fetch-in-effect — website/components/wrapped/index.tsx:40
fetch() inside useEffect — use a data fetching library (react-query, SWR) or server component
253. [warning] no-pure-black-background — website/components/wrapped/index.tsx:156
Pure black background (bg-black) looks harsh — use a near-black tinted toward your brand hue (e.g. bg-gray-950)
254. [warning] no-prevent-default — website/components/wrapped/index.tsx:189
preventDefault() on <form> onSubmit — form won't work without JavaScript. Use a server action (`<form action={serverAction}>`) for progressive enhancement
255. [warning] no-pure-black-background — website/components/wrapped/index.tsx:200
Pure black background (bg-black) looks harsh — use a near-black tinted toward your brand hue (e.g. bg-gray-950)
256. [warning] no-pure-black-background — website/components/wrapped/index.tsx:207
Pure black background (bg-black) looks harsh — use a near-black tinted toward your brand hue (e.g. bg-gray-950)
257. [warning] no-pure-black-background — website/components/wrapped/index.tsx:221
Pure black background (bg-black) looks harsh — use a near-black tinted toward your brand hue (e.g. bg-gray-950)
258. [warning] no-pure-black-background — website/components/wrapped/index.tsx:247
Pure black background (bg-black) looks harsh — use a near-black tinted toward your brand hue (e.g. bg-gray-950)
259. [warning] rendering-svg-precision — website/components/wrapped/index.tsx:299
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
260. [warning] no-pure-black-background — website/components/wrapped/index.tsx:308
Pure black background (bg-black) looks harsh — use a near-black tinted toward your brand hue (e.g. bg-gray-950)
261. [warning] use-lazy-motion — website/components/back-in-block/vdom.tsx:1
Import "m" with LazyMotion instead of "motion" — saves ~30kb in bundle size
262. [warning] rendering-svg-precision — website/components/back-in-block/vdom.tsx:120
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
263. [warning] rendering-svg-precision — website/components/back-in-block/vdom.tsx:125
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
264. [warning] rendering-svg-precision — website/components/back-in-block/vdom.tsx:130
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
265. [warning] rendering-svg-precision — website/components/back-in-block/vdom.tsx:135
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
266. [warning] rendering-svg-precision — website/components/back-in-block/vdom.tsx:140
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
267. [warning] rendering-svg-precision — website/components/back-in-block/vdom.tsx:145
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
268. [warning] rendering-svg-precision — website/components/back-in-block/vdom.tsx:150
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
269. [warning] rendering-svg-precision — website/components/back-in-block/vdom.tsx:155
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
270. [warning] rendering-svg-precision — website/components/back-in-block/vdom.tsx:170
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
271. [warning] rendering-svg-precision — website/components/back-in-block/vdom.tsx:175
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
272. [warning] rendering-svg-precision — website/components/back-in-block/vdom.tsx:305
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
273. [warning] rendering-svg-precision — website/components/back-in-block/vdom.tsx:310
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
274. [warning] rendering-svg-precision — website/components/back-in-block/vdom.tsx:315
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
275. [warning] rendering-svg-precision — website/components/back-in-block/vdom.tsx:320
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
276. [warning] rendering-svg-precision — website/components/back-in-block/vdom.tsx:325
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
277. [warning] rendering-svg-precision — website/components/back-in-block/vdom.tsx:330
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
278. [warning] rendering-svg-precision — website/components/back-in-block/vdom.tsx:335
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
279. [warning] rendering-svg-precision — website/components/back-in-block/vdom.tsx:340
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
280. [warning] rendering-svg-precision — website/components/back-in-block/vdom.tsx:355
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
281. [warning] rendering-svg-precision — website/components/back-in-block/vdom.tsx:360
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
282. [warning] rendering-svg-precision — website/components/back-in-block/vdom.tsx:375
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
283. [warning] rendering-svg-precision — website/components/back-in-block/vdom.tsx:380
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
284. [warning] rendering-svg-precision — website/components/back-in-block/vdom.tsx:500
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
285. [warning] rendering-svg-precision — website/components/back-in-block/vdom.tsx:505
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
286. [warning] rendering-svg-precision — website/components/back-in-block/vdom.tsx:510
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
287. [warning] rendering-svg-precision — website/components/back-in-block/vdom.tsx:515
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
288. [warning] rendering-svg-precision — website/components/back-in-block/vdom.tsx:520
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
289. [warning] rendering-svg-precision — website/components/back-in-block/vdom.tsx:525
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
290. [warning] rendering-svg-precision — website/components/back-in-block/vdom.tsx:530
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
291. [warning] rendering-svg-precision — website/components/back-in-block/vdom.tsx:535
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
292. [warning] rendering-svg-precision — website/components/back-in-block/vdom.tsx:550
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
293. [warning] rendering-svg-precision — website/components/back-in-block/vdom.tsx:563
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
294. [warning] rendering-svg-precision — website/components/back-in-block/vdom.tsx:576
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
295. [warning] rendering-svg-precision — website/components/back-in-block/vdom.tsx:581
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
296. [warning] rendering-svg-precision — website/components/back-in-block/vdom.tsx:586
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
297. [warning] rendering-svg-precision — website/components/back-in-block/vdom.tsx:591
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
298. [warning] rendering-svg-precision — website/components/back-in-block/vdom.tsx:611
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
299. [warning] rendering-svg-precision — website/components/back-in-block/vdom.tsx:759
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
300. [warning] rendering-svg-precision — website/components/back-in-block/vdom.tsx:764
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
301. [warning] rendering-svg-precision — website/components/back-in-block/vdom.tsx:769
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
302. [warning] rendering-svg-precision — website/components/back-in-block/vdom.tsx:774
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
303. [warning] rendering-svg-precision — website/components/back-in-block/vdom.tsx:779
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
304. [warning] rendering-svg-precision — website/components/back-in-block/vdom.tsx:784
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
305. [warning] rendering-svg-precision — website/components/back-in-block/vdom.tsx:789
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
306. [warning] rendering-svg-precision — website/components/back-in-block/vdom.tsx:794
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
307. [warning] rendering-svg-precision — website/components/back-in-block/vdom.tsx:809
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
308. [warning] rendering-svg-precision — website/components/back-in-block/vdom.tsx:822
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
309. [warning] rendering-svg-precision — website/components/back-in-block/vdom.tsx:835
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
310. [warning] rendering-svg-precision — website/components/back-in-block/vdom.tsx:840
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
311. [warning] rendering-svg-precision — website/components/back-in-block/vdom.tsx:845
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
312. [warning] rendering-svg-precision — website/components/back-in-block/vdom.tsx:858
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
313. [warning] rendering-svg-precision — website/components/back-in-block/vdom.tsx:863
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
314. [warning] rendering-svg-precision — website/components/back-in-block/vdom.tsx:868
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
315. [warning] rendering-svg-precision — website/components/back-in-block/vdom.tsx:883
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
316. [warning] rendering-svg-precision — website/components/back-in-block/vdom.tsx:1042
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
317. [warning] rendering-svg-precision — website/components/back-in-block/vdom.tsx:1047
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
318. [warning] rendering-svg-precision — website/components/back-in-block/vdom.tsx:1052
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
319. [warning] rendering-svg-precision — website/components/back-in-block/vdom.tsx:1057
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
320. [warning] rendering-svg-precision — website/components/back-in-block/vdom.tsx:1062
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
321. [warning] rendering-svg-precision — website/components/back-in-block/vdom.tsx:1067
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
322. [warning] rendering-svg-precision — website/components/back-in-block/vdom.tsx:1072
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
323. [warning] rendering-svg-precision — website/components/back-in-block/vdom.tsx:1077
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
324. [warning] rendering-svg-precision — website/components/back-in-block/vdom.tsx:1092
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
325. [warning] rendering-svg-precision — website/components/back-in-block/vdom.tsx:1105
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
326. [warning] rendering-svg-precision — website/components/back-in-block/vdom.tsx:1118
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
327. [warning] rendering-svg-precision — website/components/back-in-block/vdom.tsx:1123
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
328. [warning] rendering-svg-precision — website/components/back-in-block/vdom.tsx:1128
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
329. [warning] rendering-svg-precision — website/components/back-in-block/vdom.tsx:1141
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
330. [warning] rendering-svg-precision — website/components/back-in-block/vdom.tsx:1146
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
331. [warning] rendering-svg-precision — website/components/back-in-block/vdom.tsx:1169
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
332. [warning] rendering-svg-precision — website/components/back-in-block/vdom.tsx:1343
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
333. [warning] rendering-svg-precision — website/components/back-in-block/vdom.tsx:1348
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
334. [warning] rendering-svg-precision — website/components/back-in-block/vdom.tsx:1353
SVG d attribute uses 4+ decimal precision — trunca
---
_Issue body truncated. See the full report at [react.review/dashboard](https://react.review/dashboard)._
Copy as prompt