celeroncoder / celeroncoder/chucknorris-jokes

React Review Audit

Open
#4 0 comments 0 reactions 0 assignees View on GitHub
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.