Skip to content

React Review Audit #1187

@reactreview

Description

@reactreview
27 errors, ⚠️ 455 warnings 78 score
Copy as prompt
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)._

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions