Skip to content

React Review Audit #30

Description

@react-doctor
68 errors, ⚠️ 329 warnings 79 score
Copy as prompt
Fix the following React Review diagnostics in my codebase.

## Errors (68)

1. [error] rn-no-deprecated-modules — src/screens/category/UpdateCategory.jsx:1
   "SafeAreaView" was removed from react-native — use react-native-safe-area-context instead

2. [error] rn-no-deprecated-modules — src/screens/home/AdminHomeScreen.jsx:1
   "SafeAreaView" was removed from react-native — use react-native-safe-area-context instead

3. [error] rn-no-deprecated-modules — src/screens/document/DocumentScreen.jsx:1
   "SafeAreaView" was removed from react-native — use react-native-safe-area-context instead

4. [error] rn-no-deprecated-modules — src/screens/post/CreateReport.jsx:1
   "SafeAreaView" was removed from react-native — use react-native-safe-area-context instead

5. [error] jsx-key — src/screens/field/AdminField.jsx:72
   Missing "key" prop for element in array.

6. [error] jsx-key — src/screens/field/AdminField.jsx:74
   Missing "key" prop for element in array.

7. [error] jsx-key — src/screens/field/AdminField.jsx:76
   Missing "key" prop for element in array.

8. [error] rn-no-deprecated-modules — src/screens/field/AdminField.jsx:1
   "SafeAreaView" was removed from react-native — use react-native-safe-area-context instead

9. [error] jsx-key — src/screens/post/PostListAdmin.jsx:116
   Missing "key" prop for element in array.

10. [error] jsx-key — src/screens/post/PostListAdmin.jsx:118
   Missing "key" prop for element in array.

11. [error] jsx-key — src/screens/post/PostListAdmin.jsx:127
   Missing "key" prop for element in array.

12. [error] rn-no-deprecated-modules — src/screens/post/PostListAdmin.jsx:6
   "SafeAreaView" was removed from react-native — use react-native-safe-area-context instead

13. [error] rn-no-deprecated-modules — src/screens/profile/Profile.jsx:1
   "SafeAreaView" was removed from react-native — use react-native-safe-area-context instead

14. [error] jsx-key — src/screens/report/DocumentReported.jsx:37
   Missing "key" prop for element in array.

15. [error] jsx-key — src/screens/report/DocumentReported.jsx:40
   Missing "key" prop for element in array.

16. [error] jsx-key — src/screens/report/DocumentReported.jsx:40
   Missing "key" prop for element in array.

17. [error] jsx-key — src/screens/report/DocumentReported.jsx:41
   Missing "key" prop for element in array.

18. [error] rn-no-deprecated-modules — src/screens/report/DocumentReported.jsx:1
   "SafeAreaView" was removed from react-native — use react-native-safe-area-context instead

19. [error] rn-no-deprecated-modules — src/screens/post/UpdatePost.jsx:1
   "SafeAreaView" was removed from react-native — use react-native-safe-area-context instead

20. [error] rn-no-deprecated-modules — src/screens/tag/AddTag.jsx:1
   "SafeAreaView" was removed from react-native — use react-native-safe-area-context instead

21. [error] rn-no-deprecated-modules — src/screens/profile/UpdateProfile.jsx:1
   "SafeAreaView" was removed from react-native — use react-native-safe-area-context instead

22. [error] jsx-key — src/screens/report/PostReported.jsx:36
   Missing "key" prop for element in array.

23. [error] jsx-key — src/screens/report/PostReported.jsx:39
   Missing "key" prop for element in array.

24. [error] jsx-key — src/screens/report/PostReported.jsx:39
   Missing "key" prop for element in array.

25. [error] jsx-key — src/screens/report/PostReported.jsx:40
   Missing "key" prop for element in array.

26. [error] rn-no-deprecated-modules — src/screens/report/PostReported.jsx:1
   "SafeAreaView" was removed from react-native — use react-native-safe-area-context instead

27. [error] rn-no-deprecated-modules — src/screens/auth/Login.jsx:9
   "SafeAreaView" was removed from react-native — use react-native-safe-area-context instead

28. [error] rn-no-deprecated-modules — src/screens/tag/UpdateTag.jsx:1
   "SafeAreaView" was removed from react-native — use react-native-safe-area-context instead

29. [error] rn-no-deprecated-modules — src/navigators/ExploreNavigator.jsx:1
   "SafeAreaView" was removed from react-native — use react-native-safe-area-context instead

30. [error] rn-no-deprecated-modules — src/screens/auth/Signup.jsx:1
   "SafeAreaView" was removed from react-native — use react-native-safe-area-context instead

31. [error] rn-no-deprecated-modules — src/screens/document/CreateReport.jsx:1
   "SafeAreaView" was removed from react-native — use react-native-safe-area-context instead

32. [error] jsx-key — src/screens/document/DocumentListAdmin.jsx:118
   Missing "key" prop for element in array.

33. [error] jsx-key — src/screens/document/DocumentListAdmin.jsx:120
   Missing "key" prop for element in array.

34. [error] jsx-key — src/screens/document/DocumentListAdmin.jsx:128
   Missing "key" prop for element in array.

35. [error] jsx-key — src/screens/document/DocumentListAdmin.jsx:132
   Missing "key" prop for element in array.

36. [error] jsx-key — src/screens/document/DocumentListAdmin.jsx:140
   Missing "key" prop for element in array.

37. [error] rn-no-deprecated-modules — src/screens/document/DocumentListAdmin.jsx:5
   "SafeAreaView" was removed from react-native — use react-native-safe-area-context instead

38. [error] rn-no-deprecated-modules — src/screens/document/DocumentSearch.jsx:1
   "SafeAreaView" was removed from react-native — use react-native-safe-area-context instead

39. [error] rn-no-deprecated-modules — src/screens/field/AddField.jsx:1
   "SafeAreaView" was removed from react-native — use react-native-safe-area-context instead

40. [error] rn-no-deprecated-modules — src/screens/AddDocument.jsx:1
   "SafeAreaView" was removed from react-native — use react-native-safe-area-context instead

41. [error] rn-no-deprecated-modules — src/screens/field/UpdateField.jsx:1
   "SafeAreaView" was removed from react-native — use react-native-safe-area-context instead

42. [error] rn-no-deprecated-modules — src/screens/post/CreatePost.jsx:1
   "SafeAreaView" was removed from react-native — use react-native-safe-area-context instead

43. [error] rn-no-deprecated-modules — src/screens/category/AddCategory.jsx:1
   "SafeAreaView" was removed from react-native — use react-native-safe-area-context instead

44. [error] rn-no-deprecated-modules — src/screens/post/PostSearch.jsx:1
   "SafeAreaView" was removed from react-native — use react-native-safe-area-context instead

45. [error] rn-no-deprecated-modules — src/screens/document/DocumentDetailScreen.jsx:1
   "SafeAreaView" was removed from react-native — use react-native-safe-area-context instead

46. [error] rn-no-deprecated-modules — src/screens/profile/OtherUserProfile.jsx:1
   "SafeAreaView" was removed from react-native — use react-native-safe-area-context instead

47. [error] rn-no-deprecated-modules — src/screens/profile/UpdatePassword.jsx:1
   "SafeAreaView" was removed from react-native — use react-native-safe-area-context instead

48. [error] rn-no-deprecated-modules — src/screens/document/EditDocumentScreen.jsx:1
   "SafeAreaView" was removed from react-native — use react-native-safe-area-context instead

49. [error] jsx-key — src/screens/user/AdminUser.jsx:92
   Missing "key" prop for element in array.

50. [error] jsx-key — src/screens/user/AdminUser.jsx:96
   Missing "key" prop for element in array.

51. [error] jsx-key — src/screens/user/AdminUser.jsx:96
   Missing "key" prop for element in array.

52. [error] jsx-key — src/screens/user/AdminUser.jsx:101
   Missing "key" prop for element in array.

53. [error] jsx-key — src/screens/user/AdminUser.jsx:103
   Missing "key" prop for element in array.

54. [error] jsx-key — src/screens/user/AdminUser.jsx:105
   Missing "key" prop for element in array.

55. [error] rn-no-deprecated-modules — src/screens/user/AdminUser.jsx:1
   "SafeAreaView" was removed from react-native — use react-native-safe-area-context instead

56. [error] rn-no-deprecated-modules — src/screens/report/PostReportDetail.jsx:1
   "SafeAreaView" was removed from react-native — use react-native-safe-area-context instead

57. [error] rn-no-deprecated-modules — src/screens/report/DocumentReportDetail.jsx:1
   "SafeAreaView" was removed from react-native — use react-native-safe-area-context instead

58. [error] jsx-key — src/screens/tag/AdminTag.jsx:82
   Missing "key" prop for element in array.

59. [error] jsx-key — src/screens/tag/AdminTag.jsx:84
   Missing "key" prop for element in array.

60. [error] jsx-key — src/screens/tag/AdminTag.jsx:86
   Missing "key" prop for element in array.

61. [error] rn-no-deprecated-modules — src/screens/tag/AdminTag.jsx:4
   "SafeAreaView" was removed from react-native — use react-native-safe-area-context instead

62. [error] rn-no-deprecated-modules — src/components/AddDocumentModal.jsx:1
   "SafeAreaView" was removed from react-native — use react-native-safe-area-context instead

63. [error] rn-no-deprecated-modules — src/screens/AddPost.jsx:1
   "SafeAreaView" was removed from react-native — use react-native-safe-area-context instead

64. [error] rn-no-deprecated-modules — src/screens/auth/ForgetPassword.jsx:3
   "SafeAreaView" was removed from react-native — use react-native-safe-area-context instead

65. [error] jsx-key — src/screens/category/AdminCategory.jsx:72
   Missing "key" prop for element in array.

66. [error] jsx-key — src/screens/category/AdminCategory.jsx:74
   Missing "key" prop for element in array.

67. [error] jsx-key — src/screens/category/AdminCategory.jsx:76
   Missing "key" prop for element in array.

68. [error] rn-no-deprecated-modules — src/screens/category/AdminCategory.jsx:1
   "SafeAreaView" was removed from react-native — use react-native-safe-area-context instead

## Warnings (329)

69. [warning] rn-prefer-expo-image — src/screens/auth/Onboarding.jsx:2
   Importing Image from react-native — prefer expo-image for caching, placeholders, and progressive loading (drop-in API)

70. [warning] rn-prefer-pressable — src/screens/auth/Onboarding.jsx:2
   TouchableOpacity is legacy — use <Pressable> from react-native (or react-native-gesture-handler) for modern press handling

71. [warning] rn-no-single-element-style-array — src/screens/auth/Onboarding.jsx:12
   Single-element style array on "style" — use style={value} instead of style={[value]} to avoid unnecessary array allocation

72. [warning] rn-no-single-element-style-array — src/screens/auth/Onboarding.jsx:55
   Single-element style array on "style" — use style={value} instead of style={[value]} to avoid unnecessary array allocation

73. [warning] react-compiler-destructure-method — src/screens/auth/Onboarding.jsx:69
   Destructure for clarity: `const { navigate } = useNavigation()` then call `navigate(...)` directly — easier for React Compiler to memoize and clearer about which methods this component depends on

74. [warning] rerender-functional-setstate — src/screens/auth/Onboarding.jsx:72
   setIndex(index + ...) — use functional update to avoid stale closures

75. [warning] react-compiler-destructure-method — src/screens/auth/Onboarding.jsx:72
   Destructure for clarity: `const { navigate } = useNavigation()` then call `navigate(...)` directly — easier for React Compiler to memoize and clearer about which methods this component depends on

76. [warning] no-barrel-import — src/navigators/ProfileNavigator.jsx:6
   Import from barrel/index file — import directly from "../screens/profile/UpdatePassword" for better tree-shaking

77. [warning] rn-prefer-pressable — src/screens/category/UpdateCategory.jsx:1
   TouchableOpacity is legacy — use <Pressable> from react-native (or react-native-gesture-handler) for modern press handling

78. [warning] react-compiler-destructure-method — src/screens/category/UpdateCategory.jsx:30
   Destructure for clarity: `const { navigate } = useNavigation()` then call `navigate(...)` directly — easier for React Compiler to memoize and clearer about which methods this component depends on

79. [warning] react-compiler-destructure-method — src/screens/category/UpdateCategory.jsx:50
   Destructure for clarity: `const { navigate } = useNavigation()` then call `navigate(...)` directly — easier for React Compiler to memoize and clearer about which methods this component depends on

80. [warning] design-no-default-tailwind-palette — src/screens/category/UpdateCategory.jsx:59
   border-gray-200 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

81. [warning] rn-prefer-pressable — src/screens/home/AdminHomeScreen.jsx:1
   TouchableOpacity is legacy — use <Pressable> from react-native (or react-native-gesture-handler) for modern press handling

82. [warning] rn-prefer-content-inset-adjustment — src/screens/home/AdminHomeScreen.jsx:47
   <SafeAreaView> wrapping <ScrollView> — set `contentInsetAdjustmentBehavior="automatic"` on the ScrollView and drop the SafeAreaView wrapper for native safe-area handling

83. [warning] design-no-default-tailwind-palette — src/screens/home/AdminHomeScreen.jsx:47
   bg-gray-100 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

84. [warning] design-no-default-tailwind-palette — src/screens/home/AdminHomeScreen.jsx:80
   text-gray-500 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

85. [warning] react-compiler-destructure-method — src/screens/home/AdminHomeScreen.jsx:95
   Destructure for clarity: `const { navigate } = useNavigation()` then call `navigate(...)` directly — easier for React Compiler to memoize and clearer about which methods this component depends on

86. [warning] react-compiler-destructure-method — src/screens/home/AdminHomeScreen.jsx:107
   Destructure for clarity: `const { navigate } = useNavigation()` then call `navigate(...)` directly — easier for React Compiler to memoize and clearer about which methods this component depends on

87. [warning] react-compiler-destructure-method — src/screens/home/AdminHomeScreen.jsx:122
   Destructure for clarity: `const { navigate } = useNavigation()` then call `navigate(...)` directly — easier for React Compiler to memoize and clearer about which methods this component depends on

88. [warning] react-compiler-destructure-method — src/screens/home/AdminHomeScreen.jsx:135
   Destructure for clarity: `const { navigate } = useNavigation()` then call `navigate(...)` directly — easier for React Compiler to memoize and clearer about which methods this component depends on

89. [warning] react-compiler-destructure-method — src/screens/home/AdminHomeScreen.jsx:150
   Destructure for clarity: `const { navigate } = useNavigation()` then call `navigate(...)` directly — easier for React Compiler to memoize and clearer about which methods this component depends on

90. [warning] react-compiler-destructure-method — src/screens/home/AdminHomeScreen.jsx:162
   Destructure for clarity: `const { navigate } = useNavigation()` then call `navigate(...)` directly — easier for React Compiler to memoize and clearer about which methods this component depends on

91. [warning] react-compiler-destructure-method — src/screens/home/AdminHomeScreen.jsx:177
   Destructure for clarity: `const { navigate } = useNavigation()` then call `navigate(...)` directly — easier for React Compiler to memoize and clearer about which methods this component depends on

92. [warning] react-compiler-destructure-method — src/screens/home/AdminHomeScreen.jsx:189
   Destructure for clarity: `const { navigate } = useNavigation()` then call `navigate(...)` directly — easier for React Compiler to memoize and clearer about which methods this component depends on

93. [warning] rn-prefer-pressable — src/screens/document/DocumentScreen.jsx:1
   TouchableOpacity is legacy — use <Pressable> from react-native (or react-native-gesture-handler) for modern press handling

94. [warning] react-compiler-destructure-method — src/screens/document/DocumentScreen.jsx:62
   Destructure for clarity: `const { navigate } = useNavigation()` then call `navigate(...)` directly — easier for React Compiler to memoize and clearer about which methods this component depends on

95. [warning] rn-no-single-element-style-array — src/screens/document/DocumentScreen.jsx:66
   Single-element style array on "style" — use style={value} instead of style={[value]} to avoid unnecessary array allocation

96. [warning] react-compiler-destructure-method — src/screens/document/DocumentScreen.jsx:90
   Destructure for clarity: `const { navigate } = useNavigation()` then call `navigate(...)` directly — easier for React Compiler to memoize and clearer about which methods this component depends on

97. [warning] design-no-three-period-ellipsis — src/screens/document/DocumentScreen.jsx:91
   Three-period ellipsis ("...") in JSX text — use the actual ellipsis character "…" (or `&hellip;`)

98. [warning] rn-no-inline-flatlist-renderitem — src/screens/document/DocumentScreen.jsx:116
   Inline renderItem on <FlatList> creates a new function reference every render — extract to a named function or wrap in useCallback

99. [warning] rn-list-callback-per-row — src/screens/document/DocumentScreen.jsx:117
   Inline onPress arrow inside renderItem creates a fresh closure per row — hoist with useCallback at list scope and pass the row id as a primitive prop

100. [warning] rn-no-inline-object-in-list-item — src/screens/document/DocumentScreen.jsx:119
   Inline object literal on "style" inside renderItem — allocates a fresh reference per row and breaks memo() on the row component. Hoist outside renderItem or pass primitives

101. [warning] rn-no-inline-flatlist-renderitem — src/screens/document/DocumentScreen.jsx:142
   Inline renderItem on <FlatList> creates a new function reference every render — extract to a named function or wrap in useCallback

102. [warning] rn-prefer-pressable — src/screens/post/CreateReport.jsx:1
   TouchableOpacity is legacy — use <Pressable> from react-native (or react-native-gesture-handler) for modern press handling

103. [warning] react-compiler-destructure-method — src/screens/post/CreateReport.jsx:51
   Destructure for clarity: `const { goBack } = useNavigation()` then call `goBack(...)` directly — easier for React Compiler to memoize and clearer about which methods this component depends on

104. [warning] react-compiler-destructure-method — src/screens/post/CreateReport.jsx:59
   Destructure for clarity: `const { goBack } = useNavigation()` then call `goBack(...)` directly — easier for React Compiler to memoize and clearer about which methods this component depends on

105. [warning] rn-prefer-pressable — src/screens/field/AdminField.jsx:1
   TouchableOpacity is legacy — use <Pressable> from react-native (or react-native-gesture-handler) for modern press handling

106. [warning] react-compiler-destructure-method — src/screens/field/AdminField.jsx:55
   Destructure for clarity: `const { navigate } = useNavigation()` then call `navigate(...)` directly — easier for React Compiler to memoize and clearer about which methods this component depends on

107. [warning] rn-prefer-content-inset-adjustment — src/screens/field/AdminField.jsx:87
   <SafeAreaView> wrapping <ScrollView> — set `contentInsetAdjustmentBehavior="automatic"` on the ScrollView and drop the SafeAreaView wrapper for native safe-area handling

108. [warning] react-compiler-destructure-method — src/screens/field/AdminField.jsx:91
   Destructure for clarity: `const { navigate } = useNavigation()` then call `navigate(...)` directly — easier for React Compiler to memoize and clearer about which methods this component depends on

109. [warning] react-compiler-destructure-method — src/screens/field/AdminField.jsx:110
   Destructure for clarity: `const { navigate } = useNavigation()` then call `navigate(...)` directly — easier for React Compiler to memoize and clearer about which methods this component depends on

110. [warning] rn-prefer-expo-image — src/screens/post/PostListAdmin.jsx:5
   Importing Image from react-native — prefer expo-image for caching, placeholders, and progressive loading (drop-in API)

111. [warning] rn-prefer-pressable — src/screens/post/PostListAdmin.jsx:8
   TouchableOpacity is legacy — use <Pressable> from react-native (or react-native-gesture-handler) for modern press handling

112. [warning] rn-prefer-content-inset-adjustment — src/screens/post/PostListAdmin.jsx:135
   <SafeAreaView> wrapping <ScrollView> — set `contentInsetAdjustmentBehavior="automatic"` on the ScrollView and drop the SafeAreaView wrapper for native safe-area handling

113. [warning] react-compiler-destructure-method — src/screens/post/PostListAdmin.jsx:139
   Destructure for clarity: `const { navigate } = useNavigation()` then call `navigate(...)` directly — easier for React Compiler to memoize and clearer about which methods this component depends on

114. [warning] rn-no-dimensions-get — src/screens/post/PostListAdmin.jsx:158
   Dimensions.get() does not update on screen rotation or resize — use useWindowDimensions() for reactive layout

115. [warning] rn-prefer-expo-image — src/components/CommentRender.jsx:2
   Importing Image from react-native — prefer expo-image for caching, placeholders, and progressive loading (drop-in API)

116. [warning] rn-prefer-pressable — src/components/CommentRender.jsx:2
   TouchableOpacity is legacy — use <Pressable> from react-native (or react-native-gesture-handler) for modern press handling

117. [warning] design-no-default-tailwind-palette — src/components/CommentRender.jsx:19
   bg-slate-100 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

118. [warning] design-no-default-tailwind-palette — src/components/CommentRender.jsx:20
   border-gray-200 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

119. [warning] react-compiler-destructure-method — src/components/CommentRender.jsx:22
   Destructure for clarity: `const { navigate } = useNavigation()` then call `navigate(...)` directly — easier for React Compiler to memoize and clearer about which methods this component depends on

120. [warning] rn-prefer-expo-image — src/screens/profile/Profile.jsx:1
   Importing Image from react-native — prefer expo-image for caching, placeholders, and progressive loading (drop-in API)

121. [warning] rn-prefer-content-inset-adjustment — src/screens/profile/Profile.jsx:52
   <SafeAreaView> wrapping <ScrollView> — set `contentInsetAdjustmentBehavior="automatic"` on the ScrollView and drop the SafeAreaView wrapper for native safe-area handling

122. [warning] react-compiler-destructure-method — src/screens/profile/Profile.jsx:91
   Destructure for clarity: `const { navigate } = useNavigation()` then call `navigate(...)` directly — easier for React Compiler to memoize and clearer about which methods this component depends on

123. [warning] react-compiler-destructure-method — src/screens/profile/Profile.jsx:100
   Destructure for clarity: `const { navigate } = useNavigation()` then call `navigate(...)` directly — easier for React Compiler to memoize and clearer about which methods this component depends on

124. [warning] design-no-default-tailwind-palette — src/screens/profile/Profile.jsx:116
   text-gray-400 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

125. [warning] design-no-default-tailwind-palette — src/screens/profile/Profile.jsx:123
   text-gray-400 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

126. [warning] design-no-default-tailwind-palette — src/screens/profile/Profile.jsx:127
   text-gray-400 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

127. [warning] design-no-default-tailwind-palette — src/screens/profile/Profile.jsx:133
   text-gray-400 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

128. [warning] design-no-default-tailwind-palette — src/screens/profile/Profile.jsx:141
   text-gray-400 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

129. [warning] design-no-default-tailwind-palette — src/screens/profile/Profile.jsx:144
   text-gray-400 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

130. [warning] design-no-default-tailwind-palette — src/screens/profile/Profile.jsx:145
   text-gray-400 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

131. [warning] rn-prefer-expo-image — src/components/PostVerticalItem.jsx:1
   Importing Image from react-native — prefer expo-image for caching, placeholders, and progressive loading (drop-in API)

132. [warning] rn-prefer-pressable — src/components/PostVerticalItem.jsx:1
   TouchableOpacity is legacy — use <Pressable> from react-native (or react-native-gesture-handler) for modern press handling

133. [warning] react-compiler-destructure-method — src/components/PostVerticalItem.jsx:52
   Destructure for clarity: `const { navigate } = useNavigation()` then call `navigate(...)` directly — easier for React Compiler to memoize and clearer about which methods this component depends on

134. [warning] design-no-default-tailwind-palette — src/components/PostVerticalItem.jsx:64
   text-gray-500 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

135. [warning] react-compiler-destructure-method — src/components/PostVerticalItem.jsx:93
   Destructure for clarity: `const { navigate } = useNavigation()` then call `navigate(...)` directly — easier for React Compiler to memoize and clearer about which methods this component depends on

136. [warning] react-compiler-destructure-method — src/components/PostVerticalItem.jsx:100
   Destructure for clarity: `const { navigate } = useNavigation()` then call `navigate(...)` directly — easier for React Compiler to memoize and clearer about which methods this component depends on

137. [warning] react-compiler-destructure-method — src/components/PostVerticalItem.jsx:114
   Destructure for clarity: `const { navigate } = useNavigation()` then call `navigate(...)` directly — easier for React Compiler to memoize and clearer about which methods this component depends on

138. [warning] design-no-default-tailwind-palette — src/components/PostVerticalItem.jsx:118
   text-gray-500 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

139. [warning] rn-prefer-expo-image — src/screens/post/PostDetail.jsx:1
   Importing Image from react-native — prefer expo-image for caching, placeholders, and progressive loading (drop-in API)

140. [warning] rn-prefer-pressable — src/screens/post/PostDetail.jsx:1
   TouchableOpacity is legacy — use <Pressable> from react-native (or react-native-gesture-handler) for modern press handling

141. [warning] no-giant-component — src/screens/post/PostDetail.jsx:16
   Component "PostDetail" is 502 lines — consider breaking it into smaller focused components

142. [warning] prefer-useReducer — src/screens/post/PostDetail.jsx:16
   Component "PostDetail" has 9 useState calls — consider useReducer for related state

143. [warning] rerender-state-only-in-handlers — src/screens/post/PostDetail.jsx:25
   useState "isModalVisible" is updated but never read in the component's return — use useRef so updates don't trigger re-renders

144. [warning] query-mutation-missing-invalidation — src/screens/post/PostDetail.jsx:47
   useMutation without a cache update — stale data may remain after the mutation. Call queryClient.invalidateQueries / setQueryData / resetQueries / refetchQueries inside onSuccess (or trigger a router refresh)

145. [warning] react-compiler-destructure-method — src/screens/post/PostDetail.jsx:57
   Destructure for clarity: `const { goBack } = useNavigation()` then call `goBack(...)` directly — easier for React Compiler to memoize and clearer about which methods this component depends on

146. [warning] react-compiler-destructure-method — src/screens/post/PostDetail.jsx:204
   Destructure for clarity: `const { goBack } = useNavigation()` then call `goBack(...)` directly — easier for React Compiler to memoize and clearer about which methods this component depends on

147. [warning] design-no-default-tailwind-palette — src/screens/post/PostDetail.jsx:222
   bg-gray-100 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

148. [warning] react-compiler-destructure-method — src/screens/post/PostDetail.jsx:225
   Destructure for clarity: `const { navigate } = useNavigation()` then call `navigate(...)` directly — easier for React Compiler to memoize and clearer about which methods this component depends on

149. [warning] design-no-default-tailwind-palette — src/screens/post/PostDetail.jsx:237
   text-gray-500 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

150. [warning] react-compiler-destructure-method — src/screens/post/PostDetail.jsx:294
   Destructure for clarity: `const { navigate } = useNavigation()` then call `navigate(...)` directly — easier for React Compiler to memoize and clearer about which methods this component depends on

151. [warning] design-no-default-tailwind-palette — src/screens/post/PostDetail.jsx:311
   text-gray-500 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

152. [warning] design-no-default-tailwind-palette — src/screens/post/PostDetail.jsx:352
   border-gray-300 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

153. [warning] design-no-default-tailwind-palette — src/screens/post/PostDetail.jsx:384
   border-gray-200 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

154. [warning] design-no-default-tailwind-palette — src/screens/post/PostDetail.jsx:425
   border-gray-200 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

155. [warning] design-no-default-tailwind-palette — src/screens/post/PostDetail.jsx:460
   border-gray-200 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

156. [warning] design-no-default-tailwind-palette — src/screens/post/PostDetail.jsx:477
   border-gray-300 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

157. [warning] design-no-default-tailwind-palette — src/screens/post/PostDetail.jsx:486
   border-gray-200 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

158. [warning] rn-prefer-pressable — src/components/OptionModal.jsx:1
   TouchableOpacity is legacy — use <Pressable> from react-native (or react-native-gesture-handler) for modern press handling

159. [warning] rn-prefer-pressable — src/screens/report/DocumentReported.jsx:1
   TouchableOpacity is legacy — use <Pressable> from react-native (or react-native-gesture-handler) for modern press handling

160. [warning] react-compiler-destructure-method — src/screens/report/DocumentReported.jsx:42
   Destructure for clarity: `const { navigate } = useNavigation()` then call `navigate(...)` directly — easier for React Compiler to memoize and clearer about which methods this component depends on

161. [warning] rn-prefer-content-inset-adjustment — src/screens/report/DocumentReported.jsx:49
   <SafeAreaView> wrapping <ScrollView> — set `contentInsetAdjustmentBehavior="automatic"` on the ScrollView and drop the SafeAreaView wrapper for native safe-area handling

162. [warning] react-compiler-destructure-method — src/screens/report/DocumentReported.jsx:53
   Destructure for clarity: `const { navigate } = useNavigation()` then call `navigate(...)` directly — easier for React Compiler to memoize and clearer about which methods this component depends on

163. [warning] rn-no-dimensions-get — src/constants/appInfos.js:5
   Dimensions.get() does not update on screen rotation or resize — use useWindowDimensions() for reactive layout

164. [warning] rn-no-dimensions-get — src/constants/appInfos.js:6
   Dimensions.get() does not update on screen rotation or resize — use useWindowDimensions() for reactive layout

165. [warning] rn-prefer-expo-image — src/screens/post/UpdatePost.jsx:1
   Importing Image from react-native — prefer expo-image for caching, placeholders, and progressive loading (drop-in API)

166. [warning] rn-prefer-pressable — src/screens/post/UpdatePost.jsx:1
   TouchableOpacity is legacy — use <Pressable> from react-native (or react-native-gesture-handler) for modern press handling

167. [warning] rendering-usetransition-loading — src/screens/post/UpdatePost.jsx:24
   useState for "isLoading" — if this guards a state transition (not an async fetch), consider useTransition instead

168. [warning] react-compiler-destructure-method — src/screens/post/UpdatePost.jsx:120
   Destructure for clarity: `const { goBack } = useNavigation()` then call `goBack(...)` directly — easier for React Compiler to memoize and clearer about which methods this component depends on

169. [warning] react-compiler-destructure-method — src/screens/post/UpdatePost.jsx:157
   Destructure for clarity: `const { navigate } = useNavigation()` then call `navigate(...)` directly — easier for React Compiler to memoize and clearer about which methods this component depends on

170. [warning] rn-prefer-pressable — src/screens/tag/AddTag.jsx:1
   TouchableOpacity is legacy — use <Pressable> from react-native (or react-native-gesture-handler) for modern press handling

171. [warning] react-compiler-destructure-method — src/screens/tag/AddTag.jsx:26
   Destructure for clarity: `const { navigate } = useNavigation()` then call `navigate(...)` directly — easier for React Compiler to memoize and clearer about which methods this component depends on

172. [warning] react-compiler-destructure-method — src/screens/tag/AddTag.jsx:42
   Destructure for clarity: `const { navigate } = useNavigation()` then call `navigate(...)` directly — easier for React Compiler to memoize and clearer about which methods this component depends on

173. [warning] design-no-default-tailwind-palette — src/screens/tag/AddTag.jsx:51
   border-gray-200 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

174. [warning] rn-prefer-pressable — src/screens/profile/UpdateProfile.jsx:1
   TouchableOpacity is legacy — use <Pressable> from react-native (or react-native-gesture-handler) for modern press handling

175. [warning] rerender-state-only-in-handlers — src/screens/profile/UpdateProfile.jsx:22
   useState "gender" is updated but never read in the component's return — use useRef so updates don't trigger re-renders

176. [warning] react-compiler-destructure-method — src/screens/profile/UpdateProfile.jsx:61
   Destructure for clarity: `const { goBack } = useNavigation()` then call `goBack(...)` directly — easier for React Compiler to memoize and clearer about which methods this component depends on

177. [warning] react-compiler-destructure-method — src/screens/profile/UpdateProfile.jsx:74
   Destructure for clarity: `const { navigate } = useNavigation()` then call `navigate(...)` directly — easier for React Compiler to memoize and clearer about which methods this component depends on

178. [warning] design-no-default-tailwind-palette — src/screens/profile/UpdateProfile.jsx:86
   border-gray-200 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

179. [warning] design-no-default-tailwind-palette — src/screens/profile/UpdateProfile.jsx:97
   border-gray-200 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

180. [warning] design-no-default-tailwind-palette — src/screens/profile/UpdateProfile.jsx:108
   border-gray-200 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

181. [warning] design-no-default-tailwind-palette — src/screens/profile/UpdateProfile.jsx:120
   border-gray-200 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

182. [warning] rn-no-legacy-shadow-styles — src/styles/globalStyles.js:27
   Legacy shadow styles "shadowColor", "shadowOffset", "shadowOpacity", "shadowRadius", "elevation" — use boxShadow for cross-platform shadows on the new architecture

183. [warning] rn-style-prefer-boxshadow — src/styles/globalStyles.js:28
   shadowColor is iOS/Android-platform-specific — use the cross-platform CSS `boxShadow` string on RN v7+

184. [warning] no-barrel-import — src/navigators/CategoryNavigator.jsx:3
   Import from barrel/index file — import directly from source modules: "../screens/category/AddCategory", "../screens/category/AdminCategory", "../screens/category/UpdateCategory"

185. [warning] rn-prefer-pressable — src/screens/report/PostReported.jsx:1
   TouchableOpacity is legacy — use <Pressable> from react-native (or react-native-gesture-handler) for modern press handling

186. [warning] react-compiler-destructure-method — src/screens/report/PostReported.jsx:41
   Destructure for clarity: `const { navigate } = useNavigation()` then call `navigate(...)` directly — easier for React Compiler to memoize and clearer about which methods this component depends on

187. [warning] rn-prefer-content-inset-adjustment — src/screens/report/PostReported.jsx:48
   <SafeAreaView> wrapping <ScrollView> — set `contentInsetAdjustmentBehavior="automatic"` on the ScrollView and drop the SafeAreaView wrapper for native safe-area handling

188. [warning] react-compiler-destructure-method — src/screens/report/PostReported.jsx:52
   Destructure for clarity: `const { navigate } = useNavigation()` then call `navigate(...)` directly — easier for React Compiler to memoize and clearer about which methods this component depends on

189. [warning] no-barrel-import — src/navigators/AuthNavigator.jsx:1
   Import from barrel/index file — import directly from source modules: "../screens/auth/ForgetPassword", "../screens/auth/NewPassword", "../screens/auth/OTP", "../screens/auth/Signup"

190. [warning] rn-prefer-expo-image — src/screens/auth/Login.jsx:3
   Importing Image from react-native — prefer expo-image for caching, placeholders, and progressive loading (drop-in API)

191. [warning] rn-prefer-pressable — src/screens/auth/Login.jsx:3
   TouchableOpacity is legacy — use <Pressable> from react-native (or react-native-gesture-handler) for modern press handling

192. [warning] rendering-usetransition-loading — src/screens/auth/Login.jsx:20
   useState for "isLoading" — if this guards a state transition (not an async fetch), consider useTransition instead

193. [warning] react-compiler-destructure-method — src/screens/auth/Login.jsx:45
   Destructure for clarity: `const { navigate } = useNavigation()` then call `navigate(...)` directly — easier for React Compiler to memoize and clearer about which methods this component depends on

194. [warning] design-no-default-tailwind-palette — src/screens/auth/Login.jsx:87
   border-gray-200 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

195. [warning] design-no-default-tailwind-palette — src/screens/auth/Login.jsx:100
   border-gray-200 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

196. [warning] react-compiler-destructure-method — src/screens/auth/Login.jsx:114
   Destructure for clarity: `const { navigate } = useNavigation()` then call `navigate(...)` directly — easier for React Compiler to memoize and clearer about which methods this component depends on

197. [warning] react-compiler-destructure-method — src/screens/auth/Login.jsx:134
   Destructure for clarity: `const { navigate } = useNavigation()` then call `navigate(...)` directly — easier for React Compiler to memoize and clearer about which methods this component depends on

198. [warning] no-barrel-import — src/navigators/FieldNavigator.jsx:4
   Import from barrel/index file — import directly from source modules: "../screens/field/AddField", "../screens/field/AdminField", "../screens/field/UpdateField"

199. [warning] rn-prefer-pressable — src/screens/tag/UpdateTag.jsx:1
   TouchableOpacity is legacy — use <Pressable> from react-native (or react-native-gesture-handler) for modern press handling

200. [warning] react-compiler-destructure-method — src/screens/tag/UpdateTag.jsx:27
   Destructure for clarity: `const { navigate } = useNavigation()` then call `navigate(...)` directly — easier for React Compiler to memoize and clearer about which methods this component depends on

201. [warning] react-compiler-destructure-method — src/screens/tag/UpdateTag.jsx:44
   Destructure for clarity: `const { navigate } = useNavigation()` then call `navigate(...)` directly — easier for React Compiler to memoize and clearer about which methods this component depends on

202. [warning] design-no-default-tailwind-palette — src/screens/tag/UpdateTag.jsx:53
   border-gray-200 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

203. [warning] rn-prefer-pressable — src/navigators/ExploreNavigator.jsx:1
   TouchableOpacity is legacy — use <Pressable> from react-native (or react-native-gesture-handler) for modern press handling

204. [warning] design-no-default-tailwind-palette — src/navigators/ExploreNavigator.jsx:68
   bg-slate-100 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

205. [warning] rn-no-inline-flatlist-renderitem — src/navigators/ExploreNavigator.jsx:131
   Inline renderItem on <FlatList> creates a new function reference every render — extract to a named function or wrap in useCallback

206. [warning] rn-no-inline-flatlist-renderitem — src/navigators/ExploreNavigator.jsx:149
   Inline renderItem on <FlatList> creates a new function reference every render — extract to a named function or wrap in useCallback

207. [warning] rn-no-inline-flatlist-renderitem — src/navigators/ExploreNavigator.jsx:167
   Inline renderItem on <FlatList> creates a new function reference every render — extract to a named function or wrap in useCallback

208. [warning] rn-no-inline-flatlist-renderitem — src/navigators/ExploreNavigator.jsx:181
   Inline renderItem on <FlatList> creates a new function reference every render — extract to a named function or wrap in useCallback

209. [warning] rn-prefer-pressable — src/screens/auth/Signup.jsx:1
   TouchableOpacity is legacy — use <Pressable> from react-native (or react-native-gesture-handler) for modern press handling

210. [warning] rendering-usetransition-loading — src/screens/auth/Signup.jsx:15
   useState for "isLoading" — if this guards a state transition (not an async fetch), consider useTransition instead

211. [warning] react-compiler-destructure-method — src/screens/auth/Signup.jsx:39
   Destructure for clarity: `const { navigate } = useNavigation()` then call `navigate(...)` directly — easier for React Compiler to memoize and clearer about which methods this component depends on

212. [warning] react-compiler-destructure-method — src/screens/auth/Signup.jsx:48
   Destructure for clarity: `const { navigate } = useNavigation()` then call `navigate(...)` directly — easier for React Compiler to memoize and clearer about which methods this component depends on

213. [warning] react-compiler-destructure-method — src/screens/auth/Signup.jsx:77
   Destructure for clarity: `const { navigate } = useNavigation()` then call `navigate(...)` directly — easier for React Compiler to memoize and clearer about which methods this component depends on

214. [warning] design-no-default-tailwind-palette — src/screens/auth/Signup.jsx:92
   border-gray-200 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

215. [warning] design-no-default-tailwind-palette — src/screens/auth/Signup.jsx:104
   border-gray-200 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

216. [warning] design-no-default-tailwind-palette — src/screens/auth/Signup.jsx:116
   border-gray-200 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

217. [warning] design-no-default-tailwind-palette — src/screens/auth/Signup.jsx:128
   border-gray-200 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

218. [warning] design-no-default-tailwind-palette — src/screens/auth/Signup.jsx:142
   border-gray-200 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

219. [warning] react-compiler-destructure-method — src/screens/auth/Signup.jsx:171
   Destructure for clarity: `const { navigate } = useNavigation()` then call `navigate(...)` directly — easier for React Compiler to memoize and clearer about which methods this component depends on

220. [warning] no-barrel-import — src/navigators/TagNavigator.jsx:4
   Import from barrel/index file — import directly from source modules: "../screens/tag/AddTag", "../screens/tag/AdminTag", "../screens/tag/UpdateTag"

221. [warning] no-barrel-import — src/navigators/PostNavigator.jsx:3
   Import from barrel/index file — import directly from source modules: "../screens/post/CreateReport", "../screens/profile/OtherUserProfile", "../screens/post/PostComment", "../screens/post/PostDetail", "../screens/post/PostList", "../screens/post/PostSearch", "../screens/post/UpdatePost"

222. [warning] rn-prefer-pressable — src/screens/document/CreateReport.jsx:1
   TouchableOpacity is legacy — use <Pressable> from react-native (or react-native-gesture-handler) for modern press handling

223. [warning] react-compiler-destructure-method — src/screens/document/CreateReport.jsx:50
   Destructure for clarity: `const { goBack } = useNavigation()` then call `goBack(...)` directly — easier for React Compiler to memoize and clearer about which methods this component depends on

224. [warning] react-compiler-destructure-method — src/screens/document/CreateReport.jsx:57
   Destructure for clarity: `const { goBack } = useNavigation()` then call `goBack(...)` directly — easier for React Compiler to memoize and clearer about which methods this component depends on

225. [warning] rn-prefer-expo-image — src/screens/document/DocumentListAdmin.jsx:8
   Importing Image from react-native — prefer expo-image for caching, placeholders, and progressive loading (drop-in API)

226. [warning] rn-prefer-pressable — src/screens/document/DocumentListAdmin.jsx:7
   TouchableOpacity is legacy — use <Pressable> from react-native (or react-native-gesture-handler) for modern press handling

227. [warning] react-compiler-destructure-method — src/screens/document/DocumentListAdmin.jsx:104
   Destructure for clarity: `const { navigate } = useNavigation()` then call `navigate(...)` directly — easier for React Compiler to memoize and clearer about which methods this component depends on

228. [warning] rn-prefer-content-inset-adjustment — src/screens/document/DocumentListAdmin.jsx:147
   <SafeAreaView> wrapping <ScrollView> — set `contentInsetAdjustmentBehavior="automatic"` on the ScrollView and drop the SafeAreaView wrapper for native safe-area handling

229. [warning] react-compiler-destructure-method — src/screens/document/DocumentListAdmin.jsx:151
   Destructure for clarity: `const { navigate } = useNavigation()` then call `navigate(...)` directly — easier for React Compiler to memoize and clearer about which methods this component depends on

230. [warning] rn-prefer-pressable — src/screens/document/DocumentSearch.jsx:1
   TouchableOpacity is legacy — use <Pressable> from react-native (or react-native-gesture-handler) for modern press handling

231. [warning] prefer-useReducer — src/screens/document/DocumentSearch.jsx:14
   Component "DocumentSearch" has 6 useState calls — consider useReducer for related state

232. [warning] rn-no-single-element-style-array — src/screens/document/DocumentSearch.jsx:98
   Single-element style array on "style" — use style={value} instead of style={[value]} to avoid unnecessary array allocation

233. [warning] react-compiler-destructure-method — src/screens/document/DocumentSearch.jsx:102
   Destructure for clarity: `const { navigate } = useNavigation()` then call `navigate(...)` directly — easier for React Compiler to memoize and clearer about which methods this component depends on

234. [warning] rn-prefer-pressable — src/screens/field/AddField.jsx:1
   TouchableOpacity is legacy — use <Pressable> from react-native (or react-native-gesture-handler) for modern press handling

235. [warning] react-compiler-destructure-method — src/screens/field/AddField.jsx:27
   Destructure for clarity: `const { navigate } = useNavigation()` then call `navigate(...)` directly — easier for React Compiler to memoize and clearer about which methods this component depends on

236. [warning] react-compiler-destructure-method — src/screens/field/AddField.jsx:44
   Destructure for clarity: `const { navigate } = useNavigation()` then call `navigate(...)` directly — easier for React Compiler to memoize and clearer about which methods this component depends on

237. [warning] design-no-default-tailwind-palette — src/screens/field/AddField.jsx:53
   border-gray-200 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

238. [warning] rn-prefer-pressable — src/screens/AddDocument.jsx:1
   TouchableOpacity is legacy — use <Pressable> from react-native (or react-native-gesture-handler) for modern press handling

239. [warning] rendering-usetransition-loading — src/screens/AddDocument.jsx:24
   useState for "isLoading" — if this guards a state transition (not an async fetch), consider useTransition instead

240. [warning] react-compiler-destructure-method — src/screens/AddDocument.jsx:121
   Destructure for clarity: `const { goBack } = useNavigation()` then call `goBack(...)` directly — easier for React Compiler to memoize and clearer about which methods this component depends on

241. [warning] rn-prefer-pressable — src/screens/field/UpdateField.jsx:1
   TouchableOpacity is legacy — use <Pressable> from react-native (or react-native-gesture-handler) for modern press handling

242. [warning] react-compiler-destructure-method — src/screens/field/UpdateField.jsx:31
   Destructure for clarity: `const { navigate } = useNavigation()` then call `navigate(...)` directly — easier for React Compiler to memoize and clearer about which methods this component depends on

243. [warning] react-compiler-destructure-method — src/screens/field/UpdateField.jsx:47
   Destructure for clarity: `const { navigate } = useNavigation()` then call `navigate(...)` directly — easier for React Compiler to memoize and clearer about which methods this component depends on

244. [warning] design-no-default-tailwind-palette — src/screens/field/UpdateField.jsx:56
   border-gray-200 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

245. [warning] rn-prefer-expo-image — src/screens/home/HomeScreen.jsx:1
   Importing Image from react-native — prefer expo-image for caching, placeholders, and progressive loading (drop-in API)

246. [warning] rn-prefer-pressable — src/screens/home/HomeScreen.jsx:1
   TouchableOpacity is legacy — use <Pressable> from react-native (or react-native-gesture-handler) for modern press handling

247. [warning] rn-no-single-element-style-array — src/screens/home/HomeScreen.jsx:49
   Single-element style array on "style" — use style={value} instead of style={[value]} to avoid unnecessary array allocation

248. [warning] rn-no-inline-flatlist-renderitem — src/screens/home/HomeScreen.jsx:91
   Inline renderItem on <FlatList> creates a new function reference every render — extract to a named function or wrap in useCallback

249. [warning] rn-list-callback-per-row — src/screens/home/HomeScreen.jsx:119
   Inline onPress arrow inside renderItem creates a fresh closure per row — hoist with useCallback at list scope and pass the row id as a primitive prop

250. [warning] rn-list-callback-per-row — src/screens/home/HomeScreen.jsx:121
   Inline onPress arrow inside renderItem creates a fresh closure per row — hoist with useCallback at list scope and pass the row id as a primitive prop

251. [warning] rn-no-inline-object-in-list-item — src/screens/home/HomeScreen.jsx:97
   Inline object literal on "source" inside renderItem — allocates a fresh reference per row and breaks memo() on the row component. Hoist outside renderItem or pass primitives

252. [warning] rn-no-inline-object-in-list-item — src/screens/home/HomeScreen.jsx:97
   Inline object literal on "style" inside renderItem — allocates a fresh reference per row and breaks memo() on the row component. Hoist outside renderItem or pass primitives

253. [warning] design-no-default-tailwind-palette — src/screens/home/HomeScreen.jsx:114
   text-gray-500 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

254. [warning] rn-no-inline-object-in-list-item — src/screens/home/HomeScreen.jsx:120
   Inline object literal on "style" inside renderItem — allocates a fresh reference per row and breaks memo() on the row component. Hoist outside renderItem or pass primitives

255. [warning] rn-no-inline-object-in-list-item — src/screens/home/HomeScreen.jsx:123
   Inline object literal on "style" inside renderItem — allocates a fresh reference per row and breaks memo() on the row component. Hoist outside renderItem or pass primitives

256. [warning] rn-no-inline-object-in-list-item — src/screens/home/HomeScreen.jsx:125
   Inline object literal on "style" inside renderItem — allocates a fresh reference per row and breaks memo() on the row component. Hoist outside renderItem or pass primitives

257. [warning] rn-prefer-expo-image — src/screens/auth/NewPassword.jsx:3
   Importing Image from react-native — prefer expo-image for caching, placeholders, and progressive loading (drop-in API)

258. [warning] rn-prefer-pressable — src/screens/auth/NewPassword.jsx:3
   TouchableOpacity is legacy — use <Pressable> from react-native (or react-native-gesture-handler) for modern press handling

259. [warning] prefer-useReducer — src/screens/auth/NewPassword.jsx:10
   Component "NewPassword" has 11 useState calls — consider useReducer for related state

260. [warning] rerender-state-only-in-handlers — src/screens/auth/NewPassword.jsx:39
   useState "countdown" is updated but never read in the component's return — use useRef so updates don't trigger re-renders

261. [warning] react-compiler-destructure-method — src/screens/auth/NewPassword.jsx:77
   Destructure for clarity: `const { navigate } = useNavigation()` then call `navigate(...)` directly — easier for React Compiler to memoize and clearer about which methods this component depends on

262. [warning] react-compiler-destructure-method — src/screens/auth/NewPassword.jsx:128
   Destructure for clarity: `const { navigate } = useNavigation()` then call `navigate(...)` directly — easier for React Compiler to memoize and clearer about which methods this component depends on

263. [warning] design-no-space-on-flex-children — src/screens/auth/NewPassword.jsx:140
   space-x-2 on a flex/grid parent — use gap-x-2 instead. Per-sibling margins phantom-gap on conditional render and don't mirror in RTL

264. [warning] design-no-default-tailwind-palette — src/screens/auth/NewPassword.jsx:144
   border-gray-200 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

265. [warning] design-no-default-tailwind-palette — src/screens/auth/NewPassword.jsx:158
   border-gray-200 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

266. [warning] design-no-default-tailwind-palette — src/screens/auth/NewPassword.jsx:175
   border-gray-200 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

267. [warning] design-no-default-tailwind-palette — src/screens/auth/NewPassword.jsx:192
   border-gray-200 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

268. [warning] design-no-default-tailwind-palette — src/screens/auth/NewPassword.jsx:209
   border-gray-200 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

269. [warning] design-no-default-tailwind-palette — src/screens/auth/NewPassword.jsx:226
   border-gray-200 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

270. [warning] design-no-default-tailwind-palette — src/screens/auth/NewPassword.jsx:259
   border-gray-200 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

271. [warning] design-no-default-tailwind-palette — src/screens/auth/NewPassword.jsx:271
   border-gray-200 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

272. [warning] design-no-default-tailwind-palette — src/screens/auth/NewPassword.jsx:284
   shadow-gray-600 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

273. [warning] rn-prefer-pressable — src/screens/post/CreatePost.jsx:1
   TouchableOpacity is legacy — use <Pressable> from react-native (or react-native-gesture-handler) for modern press handling

274. [warning] react-compiler-destructure-method — src/screens/post/CreatePost.jsx:40
   Destructure for clarity: `const { navigate } = useNavigation()` then call `navigate(...)` directly — easier for React Compiler to memoize and clearer about which methods this component depends on

275. [warning] design-no-default-tailwind-palette — src/screens/post/CreatePost.jsx:48
   border-gray-200 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

276. [warning] rn-prefer-expo-image — src/components/DrawerCustom.jsx:1
   Importing Image from react-native — prefer expo-image for caching, placeholders, and progressive loading (drop-in API)

277. [warning] rn-no-single-element-style-array — src/components/DrawerCustom.jsx:24
   Single-element style array on "style" — use style={value} instead of style={[value]} to avoid unnecessary array allocation

278. [warning] react-compiler-destructure-method — src/components/DrawerCustom.jsx:31
   Destructure for clarity: `const { navigate } = useNavigation()` then call `navigate(...)` directly — easier for React Compiler to memoize and clearer about which methods this component depends on

279. [warning] react-compiler-destructure-method — src/components/DrawerCustom.jsx:36
   Destructure for clarity: `const { navigate } = useNavigation()` then call `navigate(...)` directly — easier for React Compiler to memoize and clearer about which methods this component depends on

280. [warning] react-compiler-destructure-method — src/components/DrawerCustom.jsx:40
   Destructure for clarity: `const { navigate } = useNavigation()` then call `navigate(...)` directly — easier for React Compiler to memoize and clearer about which methods this component depends on

281. [warning] rn-prefer-pressable — src/screens/category/AddCategory.jsx:1
   TouchableOpacity is legacy — use <Pressable> from react-native (or react-native-gesture-handler) for modern press handling

282. [warning] react-compiler-destructure-method — src/screens/category/AddCategory.jsx:27
   Destructure for clarity: `const { navigate } = useNavigation()` then call `navigate(...)` directly — easier for React Compiler to memoize and clearer about which methods this component depends on

283. [warning] react-compiler-destructure-method — src/screens/category/AddCategory.jsx:47
   Destructure for clarity: `const { navigate } = useNavigation()` then call `navigate(...)` directly — easier for React Compiler to memoize and clearer about which methods this component depends on

284. [warning] design-no-default-tailwind-palette — src/screens/category/AddCategory.jsx:56
   border-gray-200 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

285. [warning] rn-prefer-pressable — src/screens/post/PostList.jsx:1
   TouchableOpacity is legacy — use <Pressable> from react-native (or react-native-gesture-handler) for modern press handling

286. [warning] rerender-state-only-in-handlers — src/screens/post/PostList.jsx:19
   useState "page" is updated but never read in the component's return — use useRef so updates don't trigger re-renders

287. [warning] rerender-state-only-in-handlers — src/screens/post/PostList.jsx:20
   useState "hasMore" is updated but never read in the component's return — use useRef so updates don't trigger re-renders

288. [warning] rn-no-single-element-style-array — src/screens/post/PostList.jsx:53
   Single-element style array on "style" — use style={value} instead of style={[value]} to avoid unnecessary array allocation

289. [warning] react-compiler-destructure-method — src/screens/post/PostList.jsx:78
   Destructure for clarity: `const { navigate } = useNavigation()` then call `navigate(...)` directly — easier for React Compiler to memoize and clearer about which methods this component depends on

290. [warning] design-no-three-period-ellipsis — src/screens/post/PostList.jsx:79
   Three-period ellipsis ("...") in JSX text — use the actual ellipsis character "…" (or `&hellip;`)

291. [warning] rn-no-inline-flatlist-renderitem — src/screens/post/PostList.jsx:98
   Inline renderItem on <FlatList> creates a new function reference every render — extract to a named function or wrap in useCallback

292. [warning] rerender-functional-setstate — src/screens/post/PostList.jsx:103
   setPage(page + ...) — use functional update to avoid stale closures

293. [warning] rn-prefer-pressable — src/components/TopBackNavigate.jsx:1
   TouchableOpacity is legacy — use <Pressable> from react-native (or react-native-gesture-handler) for modern press handling

294. [warning] react-compiler-destructure-method — src/components/TopBackNavigate.jsx:8
   Destructure for clarity: `const { goBack } = useNavigation()` then call `goBack(...)` directly — easier for React Compiler to memoize and clearer about which methods this component depends on

295. [warning] rn-prefer-pressable — src/screens/post/PostSearch.jsx:1
   TouchableOpacity is legacy — use <Pressable> from react-native (or react-native-gesture-handler) for modern press handling

296. [warning] rn-no-single-element-style-array — src/screens/post/PostSearch.jsx:40
   Single-element style array on "style" — use style={value} instead of style={[value]} to avoid unnecessary array allocation

297. [warning] react-compiler-destructure-method — src/screens/post/PostSearch.jsx:44
   Destructure for clarity: `const { navigate } = useNavigation()` then call `navigate(...)` directly — easier for React Compiler to memoize and clearer about which methods this component depends on

298. [warning] rn-no-inline-flatlist-renderitem — src/screens/post/PostSearch.jsx:80
   Inline renderItem on <FlatList> creates a new function reference every render — extract to a named function or wrap in useCallback

299. [warning] rn-prefer-expo-image — src/screens/document/DocumentDetailScreen.jsx:1
   Importing Image from react-native — prefer expo-image for caching, placeholders, and progressive loading (drop-in API)

300. [warning] rn-prefer-pressable — src/screens/document/DocumentDetailScreen.jsx:1
   TouchableOpacity is legacy — use <Pressable> from react-native (or react-native-gesture-handler) for modern press handling

301. [warning] rn-prefer-content-inset-adjustment — src/screens/document/DocumentDetailScreen.jsx:36
   <SafeAreaView> wrapping <ScrollView> — set `contentInsetAdjustmentBehavior="automatic"` on the ScrollView and drop the SafeAreaView wrapper for native safe-ar

---

_Issue body truncated. See the full report at [react.review/dashboard](https://react.review/dashboard)._

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions