aidenybai / aidenybai/million

React Review Audit

Open
#1,187 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
TypeScript
Stars
17.7k
Forks
596
PR merge metrics
No merged PRs in 30d

Description

27 errors, ⚠️ 455 warnings
78 score

Copy as prompt

```text
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 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
for internal links — enables client-side navigation and prefetching

210. [warning] nextjs-no-font-link — website/theme.config.tsx:251
Loading Google Fonts via — 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 — 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

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

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 onSubmit — form won't work without JavaScript. Use a server action (``) 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)._

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.