celeroncoder / celeroncoder/chucknorris-jokes
React Review Audit
- Dominant language
- TypeScript
- Stars
- 0
- Forks
- 0
- PR merge metrics
- No merged PRs in 30d
Description
**Score: 96/100** · 2 errors · 100 warnings
Copy as prompt
```text
Fix the following React Review diagnostics in my codebase.
## Errors (2)
1. [error] jsx-key — src/components/Jokes.tsx:75
Missing "key" prop for element in iterator.
2. [error] jsx-key — src/components/JokeCard.tsx:59
Missing "key" prop for element in iterator.
## Warnings (100)
3. [warning] no-fetch-in-effect — src/components/Jokes.tsx:33
fetch() inside useEffect — use a data fetching library (react-query, SWR) or server component
4. [warning] no-giant-component — src/components/Logo.tsx:5
Component "Logo" is 396 lines — consider breaking it into smaller focused components
5. [warning] rendering-svg-precision — src/components/Logo.tsx:15
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
6. [warning] rendering-svg-precision — src/components/Logo.tsx:19
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
7. [warning] rendering-svg-precision — src/components/Logo.tsx:23
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
8. [warning] rendering-svg-precision — src/components/Logo.tsx:27
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
9. [warning] rendering-svg-precision — src/components/Logo.tsx:31
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
10. [warning] rendering-svg-precision — src/components/Logo.tsx:35
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
11. [warning] rendering-svg-precision — src/components/Logo.tsx:39
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
12. [warning] rendering-svg-precision — src/components/Logo.tsx:43
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
13. [warning] rendering-svg-precision — src/components/Logo.tsx:47
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
14. [warning] rendering-svg-precision — src/components/Logo.tsx:51
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
15. [warning] rendering-svg-precision — src/components/Logo.tsx:55
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
16. [warning] rendering-svg-precision — src/components/Logo.tsx:59
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
17. [warning] rendering-svg-precision — src/components/Logo.tsx:63
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
18. [warning] rendering-svg-precision — src/components/Logo.tsx:67
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
19. [warning] rendering-svg-precision — src/components/Logo.tsx:71
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
20. [warning] rendering-svg-precision — src/components/Logo.tsx:75
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
21. [warning] rendering-svg-precision — src/components/Logo.tsx:79
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
22. [warning] rendering-svg-precision — src/components/Logo.tsx:83
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
23. [warning] rendering-svg-precision — src/components/Logo.tsx:87
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
24. [warning] rendering-svg-precision — src/components/Logo.tsx:91
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
25. [warning] rendering-svg-precision — src/components/Logo.tsx:95
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
26. [warning] rendering-svg-precision — src/components/Logo.tsx:99
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
27. [warning] rendering-svg-precision — src/components/Logo.tsx:103
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
28. [warning] rendering-svg-precision — src/components/Logo.tsx:107
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
29. [warning] rendering-svg-precision — src/components/Logo.tsx:111
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
30. [warning] rendering-svg-precision — src/components/Logo.tsx:115
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
31. [warning] rendering-svg-precision — src/components/Logo.tsx:119
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
32. [warning] rendering-svg-precision — src/components/Logo.tsx:123
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
33. [warning] rendering-svg-precision — src/components/Logo.tsx:127
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
34. [warning] rendering-svg-precision — src/components/Logo.tsx:131
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
35. [warning] rendering-svg-precision — src/components/Logo.tsx:135
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
36. [warning] rendering-svg-precision — src/components/Logo.tsx:139
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
37. [warning] rendering-svg-precision — src/components/Logo.tsx:143
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
38. [warning] rendering-svg-precision — src/components/Logo.tsx:147
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
39. [warning] rendering-svg-precision — src/components/Logo.tsx:151
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
40. [warning] rendering-svg-precision — src/components/Logo.tsx:155
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
41. [warning] rendering-svg-precision — src/components/Logo.tsx:159
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
42. [warning] rendering-svg-precision — src/components/Logo.tsx:163
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
43. [warning] rendering-svg-precision — src/components/Logo.tsx:167
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
44. [warning] rendering-svg-precision — src/components/Logo.tsx:171
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
45. [warning] rendering-svg-precision — src/components/Logo.tsx:175
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
46. [warning] rendering-svg-precision — src/components/Logo.tsx:179
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
47. [warning] rendering-svg-precision — src/components/Logo.tsx:183
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
48. [warning] rendering-svg-precision — src/components/Logo.tsx:187
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
49. [warning] rendering-svg-precision — src/components/Logo.tsx:191
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
50. [warning] rendering-svg-precision — src/components/Logo.tsx:195
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
51. [warning] rendering-svg-precision — src/components/Logo.tsx:199
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
52. [warning] rendering-svg-precision — src/components/Logo.tsx:203
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
53. [warning] rendering-svg-precision — src/components/Logo.tsx:207
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
54. [warning] rendering-svg-precision — src/components/Logo.tsx:211
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
55. [warning] rendering-svg-precision — src/components/Logo.tsx:215
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
56. [warning] rendering-svg-precision — src/components/Logo.tsx:219
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
57. [warning] rendering-svg-precision — src/components/Logo.tsx:223
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
58. [warning] rendering-svg-precision — src/components/Logo.tsx:227
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
59. [warning] rendering-svg-precision — src/components/Logo.tsx:231
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
60. [warning] rendering-svg-precision — src/components/Logo.tsx:235
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
61. [warning] rendering-svg-precision — src/components/Logo.tsx:239
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
62. [warning] rendering-svg-precision — src/components/Logo.tsx:243
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
63. [warning] rendering-svg-precision — src/components/Logo.tsx:247
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
64. [warning] rendering-svg-precision — src/components/Logo.tsx:251
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
65. [warning] rendering-svg-precision — src/components/Logo.tsx:255
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
66. [warning] rendering-svg-precision — src/components/Logo.tsx:259
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
67. [warning] rendering-svg-precision — src/components/Logo.tsx:263
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
68. [warning] rendering-svg-precision — src/components/Logo.tsx:267
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
69. [warning] rendering-svg-precision — src/components/Logo.tsx:271
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
70. [warning] rendering-svg-precision — src/components/Logo.tsx:275
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
71. [warning] rendering-svg-precision — src/components/Logo.tsx:279
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
72. [warning] rendering-svg-precision — src/components/Logo.tsx:283
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
73. [warning] rendering-svg-precision — src/components/Logo.tsx:287
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
74. [warning] rendering-svg-precision — src/components/Logo.tsx:291
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
75. [warning] rendering-svg-precision — src/components/Logo.tsx:295
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
76. [warning] rendering-svg-precision — src/components/Logo.tsx:299
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
77. [warning] rendering-svg-precision — src/components/Logo.tsx:303
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
78. [warning] rendering-svg-precision — src/components/Logo.tsx:307
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
79. [warning] rendering-svg-precision — src/components/Logo.tsx:311
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
80. [warning] rendering-svg-precision — src/components/Logo.tsx:315
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
81. [warning] rendering-svg-precision — src/components/Logo.tsx:319
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
82. [warning] rendering-svg-precision — src/components/Logo.tsx:323
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
83. [warning] rendering-svg-precision — src/components/Logo.tsx:327
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
84. [warning] rendering-svg-precision — src/components/Logo.tsx:331
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
85. [warning] rendering-svg-precision — src/components/Logo.tsx:335
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
86. [warning] rendering-svg-precision — src/components/Logo.tsx:339
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
87. [warning] rendering-svg-precision — src/components/Logo.tsx:343
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
88. [warning] rendering-svg-precision — src/components/Logo.tsx:347
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
89. [warning] rendering-svg-precision — src/components/Logo.tsx:351
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
90. [warning] rendering-svg-precision — src/components/Logo.tsx:355
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
91. [warning] rendering-svg-precision — src/components/Logo.tsx:359
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
92. [warning] rendering-svg-precision — src/components/Logo.tsx:363
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
93. [warning] rendering-svg-precision — src/components/Logo.tsx:367
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
94. [warning] rendering-svg-precision — src/components/Logo.tsx:371
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
95. [warning] rendering-svg-precision — src/components/Logo.tsx:375
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
96. [warning] rendering-svg-precision — src/components/Logo.tsx:379
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
97. [warning] rendering-svg-precision — src/components/Logo.tsx:383
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
98. [warning] rendering-svg-precision — src/components/Logo.tsx:387
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
99. [warning] rendering-svg-precision — src/components/Logo.tsx:391
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
100. [warning] rendering-svg-precision — src/components/Logo.tsx:395
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
101. [warning] no-fetch-in-effect — src/components/JokeCard.tsx:89
fetch() inside useEffect — use a data fetching library (react-query, SWR) or server component
102. [warning] no-react-dom-deprecated-apis — src/main.tsx:6
ReactDOM.render is the legacy root API — switch to `import { createRoot } from 'react-dom/client'` and call `createRoot(container).render(...)` (REMOVED in React 19)
```
---
### ❌ Errors (2)
**`jsx-key`**
Missing "key" prop for element in iterator.
> Add a "key" prop to the element in the iterator (https://react.dev/learn/rendering-lists#keeping-list-items-in-order-with-key).
[`src/components/Jokes.tsx:75`](https://github.com/celeroncoder/chucknorris-jokes/blob/d461c15d39db250f1c1dea8e0c79b4853d395a7c/src/components/Jokes.tsx#L75)
[`src/components/JokeCard.tsx:59`](https://github.com/celeroncoder/chucknorris-jokes/blob/d461c15d39db250f1c1dea8e0c79b4853d395a7c/src/components/JokeCard.tsx#L59)
---
### ⚠️ Warnings (100)
**`rendering-svg-precision`**
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
> Truncate path/points/transform decimals to 1–2 digits — sub-pixel precision adds bytes with no visible difference
[`src/components/Logo.tsx:15`](https://github.com/celeroncoder/chucknorris-jokes/blob/d461c15d39db250f1c1dea8e0c79b4853d395a7c/src/components/Logo.tsx#L15)
[`src/components/Logo.tsx:19`](https://github.com/celeroncoder/chucknorris-jokes/blob/d461c15d39db250f1c1dea8e0c79b4853d395a7c/src/components/Logo.tsx#L19)
[`src/components/Logo.tsx:23`](https://github.com/celeroncoder/chucknorris-jokes/blob/d461c15d39db250f1c1dea8e0c79b4853d395a7c/src/components/Logo.tsx#L23)
[`src/components/Logo.tsx:27`](https://github.com/celeroncoder/chucknorris-jokes/blob/d461c15d39db250f1c1dea8e0c79b4853d395a7c/src/components/Logo.tsx#L27)
[`src/components/Logo.tsx:31`](https://github.com/celeroncoder/chucknorris-jokes/blob/d461c15d39db250f1c1dea8e0c79b4853d395a7c/src/components/Logo.tsx#L31)
[`src/components/Logo.tsx:35`](https://github.com/celeroncoder/chucknorris-jokes/blob/d461c15d39db250f1c1dea8e0c79b4853d395a7c/src/components/Logo.tsx#L35)
[`src/components/Logo.tsx:39`](https://github.com/celeroncoder/chucknorris-jokes/blob/d461c15d39db250f1c1dea8e0c79b4853d395a7c/src/components/Logo.tsx#L39)
[`src/components/Logo.tsx:43`](https://github.com/celeroncoder/chucknorris-jokes/blob/d461c15d39db250f1c1dea8e0c79b4853d395a7c/src/components/Logo.tsx#L43)
[`src/components/Logo.tsx:47`](https://github.com/celeroncoder/chucknorris-jokes/blob/d461c15d39db250f1c1dea8e0c79b4853d395a7c/src/components/Logo.tsx#L47)
[`src/components/Logo.tsx:51`](https://github.com/celeroncoder/chucknorris-jokes/blob/d461c15d39db250f1c1dea8e0c79b4853d395a7c/src/components/Logo.tsx#L51)
[`src/components/Logo.tsx:55`](https://github.com/celeroncoder/chucknorris-jokes/blob/d461c15d39db250f1c1dea8e0c79b4853d395a7c/src/components/Logo.tsx#L55)
[`src/components/Logo.tsx:59`](https://github.com/celeroncoder/chucknorris-jokes/blob/d461c15d39db250f1c1dea8e0c79b4853d395a7c/src/components/Logo.tsx#L59)
[`src/components/Logo.tsx:63`](https://github.com/celeroncoder/chucknorris-jokes/blob/d461c15d39db250f1c1dea8e0c79b4853d395a7c/src/components/Logo.tsx#L63)
[`src/components/Logo.tsx:67`](https://github.com/celeroncoder/chucknorris-jokes/blob/d461c15d39db250f1c1dea8e0c79b4853d395a7c/src/components/Logo.tsx#L67)
[`src/components/Logo.tsx:71`](https://github.com/celeroncoder/chucknorris-jokes/blob/d461c15d39db250f1c1dea8e0c79b4853d395a7c/src/components/Logo.tsx#L71)
[`src/components/Logo.tsx:75`](https://github.com/celeroncoder/chucknorris-jokes/blob/d461c15d39db250f1c1dea8e0c79b4853d395a7c/src/components/Logo.tsx#L75)
[`src/components/Logo.tsx:79`](https://github.com/celeroncoder/chucknorris-jokes/blob/d461c15d39db250f1c1dea8e0c79b4853d395a7c/src/components/Logo.tsx#L79)
[`src/components/Logo.tsx:83`](https://github.com/celeroncoder/chucknorris-jokes/blob/d461c15d39db250f1c1dea8e0c79b4853d395a7c/src/components/Logo.tsx#L83)
[`src/components/Logo.tsx:87`](https://github.com/celeroncoder/chucknorris-jokes/blob/d461c15d39db250f1c1dea8e0c79b4853d395a7c/src/components/Logo.tsx#L87)
[`src/components/Logo.tsx:91`](https://github.com/celeroncoder/chucknorris-jokes/blob/d461c15d39db250f1c1dea8e0c79b4853d395a7c/src/components/Logo.tsx#L91)
[`src/components/Logo.tsx:95`](https://github.com/celeroncoder/chucknorris-jokes/blob/d461c15d39db250f1c1dea8e0c79b4853d395a7c/src/components/Logo.tsx#L95)
[`src/components/Logo.tsx:99`](https://github.com/celeroncoder/chucknorris-jokes/blob/d461c15d39db250f1c1dea8e0c79b4853d395a7c/src/components/Logo.tsx#L99)
[`src/components/Logo.tsx:103`](https://github.com/celeroncoder/chucknorris-jokes/blob/d461c15d39db250f1c1dea8e0c79b4853d395a7c/src/components/Logo.tsx#L103)
[`src/components/Logo.tsx:107`](https://github.com/celeroncoder/chucknorris-jokes/blob/d461c15d39db250f1c1dea8e0c79b4853d395a7c/src/components/Logo.tsx#L107)
[`src/components/Logo.tsx:111`](https://github.com/celeroncoder/chucknorris-jokes/blob/d461c15d39db250f1c1dea8e0c79b4853d395a7c/src/components/Logo.tsx#L111)
[`src/components/Logo.tsx:115`](https://github.com/celeroncoder/chucknorris-jokes/blob/d461c15d39db250f1c1dea8e0c79b4853d395a7c/src/components/Logo.tsx#L115)
[`src/components/Logo.tsx:119`](https://github.com/celeroncoder/chucknorris-jokes/blob/d461c15d39db250f1c1dea8e0c79b4853d395a7c/src/components/Logo.tsx#L119)
[`src/components/Logo.tsx:123`](https://github.com/celeroncoder/chucknorris-jokes/blob/d461c15d39db250f1c1dea8e0c79b4853d395a7c/src/components/Logo.tsx#L123)
[`src/components/Logo.tsx:127`](https://github.com/celeroncoder/chucknorris-jokes/blob/d461c15d39db250f1c1dea8e0c79b4853d395a7c/src/components/Logo.tsx#L127)
[`src/components/Logo.tsx:131`](https://github.com/celeroncoder/chucknorris-jokes/blob/d461c15d39db250f1c1dea8e0c79b4853d395a7c/src/components/Logo.tsx#L131)
[`src/components/Logo.tsx:135`](https://github.com/celeroncoder/chucknorris-jokes/blob/d461c15d39db250f1c1dea8e0c79b4853d395a7c/src/components/Logo.tsx#L135)
[`src/components/Logo.tsx:139`](https://github.com/celeroncoder/chucknorris-jokes/blob/d461c15d39db250f1c1dea8e0c79b4853d395a7c/src/components/Logo.tsx#L139)
[`src/components/Logo.tsx:143`](https://github.com/celeroncoder/chucknorris-jokes/blob/d461c15d39db250f1c1dea8e0c79b4853d395a7c/src/components/Logo.tsx#L143)
[`src/components/Logo.tsx:147`](https://github.com/celeroncoder/chucknorris-jokes/blob/d461c15d39db250f1c1dea8e0c79b4853d395a7c/src/components/Logo.tsx#L147)
[`src/components/Logo.tsx:151`](https://github.com/celeroncoder/chucknorris-jokes/blob/d461c15d39db250f1c1dea8e0c79b4853d395a7c/src/components/Logo.tsx#L151)
[`src/components/Logo.tsx:155`](https://github.com/celeroncoder/chucknorris-jokes/blob/d461c15d39db250f1c1dea8e0c79b4853d395a7c/src/components/Logo.tsx#L155)
[`src/components/Logo.tsx:159`](https://github.com/celeroncoder/chucknorris-jokes/blob/d461c15d39db250f1c1dea8e0c79b4853d395a7c/src/components/Logo.tsx#L159)
[`src/components/Logo.tsx:163`](https://github.com/celeroncoder/chucknorris-jokes/blob/d461c15d39db250f1c1dea8e0c79b4853d395a7c/src/components/Logo.tsx#L163)
[`src/components/Logo.tsx:167`](https://github.com/celeroncoder/chucknorris-jokes/blob/d461c15d39db250f1c1dea8e0c79b4853d395a7c/src/components/Logo.tsx#L167)
[`src/components/Logo.tsx:171`](https://github.com/celeroncoder/chucknorris-jokes/blob/d461c15d39db250f1c1dea8e0c79b4853d395a7c/src/components/Logo.tsx#L171)
[`src/components/Logo.tsx:175`](https://github.com/celeroncoder/chucknorris-jokes/blob/d461c15d39db250f1c1dea8e0c79b4853d395a7c/src/components/Logo.tsx#L175)
[`src/components/Logo.tsx:179`](https://github.com/celeroncoder/chucknorris-jokes/blob/d461c15d39db250f1c1dea8e0c79b4853d395a7c/src/components/Logo.tsx#L179)
[`src/components/Logo.tsx:183`](https://github.com/celeroncoder/chucknorris-jokes/blob/d461c15d39db250f1c1dea8e0c79b4853d395a7c/src/components/Logo.tsx#L183)
[`src/components/Logo.tsx:187`](https://github.com/celeroncoder/chucknorris-jokes/blob/d461c15d39db250f1c1dea8e0c79b4853d395a7c/src/components/Logo.tsx#L187)
[`src/components/Logo.tsx:191`](https://github.com/celeroncoder/chucknorris-jokes/blob/d461c15d39db250f1c1dea8e0c79b4853d395a7c/src/components/Logo.tsx#L191)
[`src/components/Logo.tsx:195`](https://github.com/celeroncoder/chucknorris-jokes/blob/d461c15d39db250f1c1dea8e0c79b4853d395a7c/src/components/Logo.tsx#L195)
[`src/components/Logo.tsx:199`](https://github.com/celeroncoder/chucknorris-jokes/blob/d461c15d39db250f1c1dea8e0c79b4853d395a7c/src/components/Logo.tsx#L199)
[`src/components/Logo.tsx:203`](https://github.com/celeroncoder/chucknorris-jokes/blob/d461c15d39db250f1c1dea8e0c79b4853d395a7c/src/components/Logo.tsx#L203)
[`src/components/Logo.tsx:207`](https://github.com/celeroncoder/chucknorris-jokes/blob/d461c15d39db250f1c1dea8e0c79b4853d395a7c/src/components/Logo.tsx#L207)
[`src/components/Logo.tsx:211`](https://github.com/celeroncoder/chucknorris-jokes/blob/d461c15d39db250f1c1dea8e0c79b4853d395a7c/src/components/Logo.tsx#L211)
[`src/components/Logo.tsx:215`](https://github.com/celeroncoder/chucknorris-jokes/blob/d461c15d39db250f1c1dea8e0c79b4853d395a7c/src/components/Logo.tsx#L215)
[`src/components/Logo.tsx:219`](https://github.com/celeroncoder/chucknorris-jokes/blob/d461c15d39db250f1c1dea8e0c79b4853d395a7c/src/components/Logo.tsx#L219)
[`src/components/Logo.tsx:223`](https://github.com/celeroncoder/chucknorris-jokes/blob/d461c15d39db250f1c1dea8e0c79b4853d395a7c/src/components/Logo.tsx#L223)
[`src/components/Logo.tsx:227`](https://github.com/celeroncoder/chucknorris-jokes/blob/d461c15d39db250f1c1dea8e0c79b4853d395a7c/src/components/Logo.tsx#L227)
[`src/components/Logo.tsx:231`](https://github.com/celeroncoder/chucknorris-jokes/blob/d461c15d39db250f1c1dea8e0c79b4853d395a7c/src/components/Logo.tsx#L231)
[`src/components/Logo.tsx:235`](https://github.com/celeroncoder/chucknorris-jokes/blob/d461c15d39db250f1c1dea8e0c79b4853d395a7c/src/components/Logo.tsx#L235)
[`src/components/Logo.tsx:239`](https://github.com/celeroncoder/chucknorris-jokes/blob/d461c15d39db250f1c1dea8e0c79b4853d395a7c/src/components/Logo.tsx#L239)
[`src/components/Logo.tsx:243`](https://github.com/celeroncoder/chucknorris-jokes/blob/d461c15d39db250f1c1dea8e0c79b4853d395a7c/src/components/Logo.tsx#L243)
[`src/components/Logo.tsx:247`](https://github.com/celeroncoder/chucknorris-jokes/blob/d461c15d39db250f1c1dea8e0c79b4853d395a7c/src/components/Logo.tsx#L247)
[`src/components/Logo.tsx:251`](https://github.com/celeroncoder/chucknorris-jokes/blob/d461c15d39db250f1c1dea8e0c79b4853d395a7c/src/components/Logo.tsx#L251)
[`src/components/Logo.tsx:255`](https://github.com/celeroncoder/chucknorris-jokes/blob/d461c15d39db250f1c1dea8e0c79b4853d395a7c/src/components/Logo.tsx#L255)
[`src/components/Logo.tsx:259`](https://github.com/celeroncoder/chucknorris-jokes/blob/d461c15d39db250f1c1dea8e0c79b4853d395a7c/src/components/Logo.tsx#L259)
[`src/components/Logo.tsx:263`](https://github.com/celeroncoder/chucknorris-jokes/blob/d461c15d39db250f1c1dea8e0c79b4853d395a7c/src/components/Logo.tsx#L263)
[`src/components/Logo.tsx:267`](https://github.com/celeroncoder/chucknorris-jokes/blob/d461c15d39db250f1c1dea8e0c79b4853d395a7c/src/components/Logo.tsx#L267)
[`src/components/Logo.tsx:271`](https://github.com/celeroncoder/chucknorris-jokes/blob/d461c15d39db250f1c1dea8e0c79b4853d395a7c/src/components/Logo.tsx#L271)
[`src/components/Logo.tsx:275`](https://github.com/celeroncoder/chucknorris-jokes/blob/d461c15d39db250f1c1dea8e0c79b4853d395a7c/src/components/Logo.tsx#L275)
[`src/components/Logo.tsx:279`](https://github.com/celeroncoder/chucknorris-jokes/blob/d461c15d39db250f1c1dea8e0c79b4853d395a7c/src/components/Logo.tsx#L279)
[`src/components/Logo.tsx:283`](https://github.com/celeroncoder/chucknorris-jokes/blob/d461c15d39db250f1c1dea8e0c79b4853d395a7c/src/components/Logo.tsx#L283)
[`src/components/Logo.tsx:287`](https://github.com/celeroncoder/chucknorris-jokes/blob/d461c15d39db250f1c1dea8e0c79b4853d395a7c/src/components/Logo.tsx#L287)
[`src/components/Logo.tsx:291`](https://github.com/celeroncoder/chucknorris-jokes/blob/d461c15d39db250f1c1dea8e0c79b4853d395a7c/src/components/Logo.tsx#L291)
[`src/components/Logo.tsx:295`](https://github.com/celeroncoder/chucknorris-jokes/blob/d461c15d39db250f1c1dea8e0c79b4853d395a7c/src/components/Logo.tsx#L295)
[`src/components/Logo.tsx:299`](https://github.com/celeroncoder/chucknorris-jokes/blob/d461c15d39db250f1c1dea8e0c79b4853d395a7c/src/components/Logo.tsx#L299)
[`src/components/Logo.tsx:303`](https://github.com/celeroncoder/chucknorris-jokes/blob/d461c15d39db250f1c1dea8e0c79b4853d395a7c/src/components/Logo.tsx#L303)
[`src/components/Logo.tsx:307`](https://github.com/celeroncoder/chucknorris-jokes/blob/d461c15d39db250f1c1dea8e0c79b4853d395a7c/src/components/Logo.tsx#L307)
[`src/components/Logo.tsx:311`](https://github.com/celeroncoder/chucknorris-jokes/blob/d461c15d39db250f1c1dea8e0c79b4853d395a7c/src/components/Logo.tsx#L311)
[`src/components/Logo.tsx:315`](https://github.com/celeroncoder/chucknorris-jokes/blob/d461c15d39db250f1c1dea8e0c79b4853d395a7c/src/components/Logo.tsx#L315)
[`src/components/Logo.tsx:319`](https://github.com/celeroncoder/chucknorris-jokes/blob/d461c15d39db250f1c1dea8e0c79b4853d395a7c/src/components/Logo.tsx#L319)
[`src/components/Logo.tsx:323`](https://github.com/celeroncoder/chucknorris-jokes/blob/d461c15d39db250f1c1dea8e0c79b4853d395a7c/src/components/Logo.tsx#L323)
[`src/components/Logo.tsx:327`](https://github.com/celeroncoder/chucknorris-jokes/blob/d461c15d39db250f1c1dea8e0c79b4853d395a7c/src/components/Logo.tsx#L327)
[`src/components/Logo.tsx:331`](https://github.com/celeroncoder/chucknorris-jokes/blob/d461c15d39db250f1c1dea8e0c79b4853d395a7c/src/components/Logo.tsx#L331)
[`src/components/Logo.tsx:335`](https://github.com/celeroncoder/chucknorris-jokes/blob/d461c15d39db250f1c1dea8e0c79b4853d395a7c/src/components/Logo.tsx#L335)
[`src/components/Logo.tsx:339`](https://github.com/celeroncoder/chucknorris-jokes/blob/d461c15d39db250f1c1dea8e0c79b4853d395a7c/src/components/Logo.tsx#L339)
[`src/components/Logo.tsx:343`](https://github.com/celeroncoder/chucknorris-jokes/blob/d461c15d39db250f1c1dea8e0c79b4853d395a7c/src/components/Logo.tsx#L343)
[`src/components/Logo.tsx:347`](https://github.com/celeroncoder/chucknorris-jokes/blob/d461c15d39db250f1c1dea8e0c79b4853d395a7c/src/components/Logo.tsx#L347)
[`src/components/Logo.tsx:351`](https://github.com/celeroncoder/chucknorris-jokes/blob/d461c15d39db250f1c1dea8e0c79b4853d395a7c/src/components/Logo.tsx#L351)
[`src/components/Logo.tsx:355`](https://github.com/celeroncoder/chucknorris-jokes/blob/d461c15d39db250f1c1dea8e0c79b4853d395a7c/src/components/Logo.tsx#L355)
[`src/components/Logo.tsx:359`](https://github.com/celeroncoder/chucknorris-jokes/blob/d461c15d39db250f1c1dea8e0c79b4853d395a7c/src/components/Logo.tsx#L359)
[`src/components/Logo.tsx:363`](https://github.com/celeroncoder/chucknorris-jokes/blob/d461c15d39db250f1c1dea8e0c79b4853d395a7c/src/components/Logo.tsx#L363)
[`src/components/Logo.tsx:367`](https://github.com/celeroncoder/chucknorris-jokes/blob/d461c15d39db250f1c1dea8e0c79b4853d395a7c/src/components/Logo.tsx#L367)
[`src/components/Logo.tsx:371`](https://github.com/celeroncoder/chucknorris-jokes/blob/d461c15d39db250f1c1dea8e0c79b4853d395a7c/src/components/Logo.tsx#L371)
[`src/components/Logo.tsx:375`](https://github.com/celeroncoder/chucknorris-jokes/blob/d461c15d39db250f1c1dea8e0c79b4853d395a7c/src/components/Logo.tsx#L375)
[`src/components/Logo.tsx:379`](https://github.com/celeroncoder/chucknorris-jokes/blob/d461c15d39db250f1c1dea8e0c79b4853d395a7c/src/components/Logo.tsx#L379)
[`src/components/Logo.tsx:383`](https://github.com/celeroncoder/chucknorris-jokes/blob/d461c15d39db250f1c1dea8e0c79b4853d395a7c/src/components/Logo.tsx#L383)
[`src/components/Logo.tsx:387`](https://github.com/celeroncoder/chucknorris-jokes/blob/d461c15d39db250f1c1dea8e0c79b4853d395a7c/src/components/Logo.tsx#L387)
[`src/components/Logo.tsx:391`](https://github.com/celeroncoder/chucknorris-jokes/blob/d461c15d39db250f1c1dea8e0c79b4853d395a7c/src/components/Logo.tsx#L391)
[`src/components/Logo.tsx:395`](https://github.com/celeroncoder/chucknorris-jokes/blob/d461c15d39db250f1c1dea8e0c79b4853d395a7c/src/components/Logo.tsx#L395)
**`no-fetch-in-effect`**
fetch() inside useEffect — use a data fetching library (react-query, SWR) or server component
> Use `useQuery()` from @tanstack/react-query, `useSWR()`, or fetch in a Server Component instead
[`src/components/Jokes.tsx:33`](https://github.com/celeroncoder/chucknorris-jokes/blob/d461c15d39db250f1c1dea8e0c79b4853d395a7c/src/components/Jokes.tsx#L33)
[`src/components/JokeCard.tsx:89`](https://github.com/celeroncoder/chucknorris-jokes/blob/d461c15d39db250f1c1dea8e0c79b4853d395a7c/src/components/JokeCard.tsx#L89)
**`no-giant-component`**
Component "Logo" is 396 lines — consider breaking it into smaller focused components
> Extract logical sections into focused components: `<UserHeader />`, `<UserActions />`, etc.
[`src/components/Logo.tsx:5`](https://github.com/celeroncoder/chucknorris-jokes/blob/d461c15d39db250f1c1dea8e0c79b4853d395a7c/src/components/Logo.tsx#L5)
**`no-react-dom-deprecated-apis`**
ReactDOM.render is the legacy root API — switch to `import { createRoot } from 'react-dom/client'` and call `createRoot(container).render(...)` (REMOVED in React 19)
> Switch the legacy `react-dom` root API (`render` / `hydrate` / `unmountComponentAtNode`) to `createRoot` / `hydrateRoot` / `root.unmount()` from `react-dom/client`. Replace `findDOMNode` with a ref. The whole `react-dom/test-utils` entry point is removed in React 19 — use `act` from `react` and `fireEvent` / `render` from `@testing-library/react`. Only enabled on projects detected as React 18+.
[`src/main.tsx:6`](https://github.com/celeroncoder/chucknorris-jokes/blob/d461c15d39db250f1c1dea8e0c79b4853d395a7c/src/main.tsx#L6)
---
Last scored May 14, 2026 at 9:39 AM UTC. Maintained by [React Review](https://github.com/millionco/react-review).
Contributor guide
Research direction
Start with src/components/Jokes.tsx at lines 33 and 75 and src/components/JokeCard.tsx at line 59, then review the Logo warnings in src/components/Logo.tsx. Run the React Review diagnostics and confirm whether the truncated warning list is complete; done means the reported diagnostics are resolved and the audit passes.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- react, typescript
- Domain
- frontend
- Issue type
- Refactor
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100