aidenybai / aidenybai/million

React Review Audit

Đang mở
#1,187 0 bình luận 0 reaction 0 người được giao Xem trên GitHub
Ngôn ngữ chính
TypeScript
Star
17.7k
Fork
596
Chỉ số merge pull request
Không có pull request nào được merge trong 30 ngày

Mô tả

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)._

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Đánh giá

Issue này chưa được đánh giá.

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.