react-native-inapp-inspector 2.3.15 → 2.3.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (381) hide show
  1. package/README.md +1 -0
  2. package/android/src/main/java/com/inappinspector/NetworkInspectorModule.kt +438 -7
  3. package/bin/cli.js +0 -0
  4. package/dist/commonjs/capture.d.ts +26 -0
  5. package/dist/commonjs/capture.js +32 -0
  6. package/dist/commonjs/components/AnalyticsEventCard.js +11 -11
  7. package/dist/commonjs/components/AnimatedEntrance.js +6 -70
  8. package/dist/commonjs/components/DomainHeader.js +3 -48
  9. package/dist/commonjs/components/EmptyState.js +2 -2
  10. package/dist/commonjs/components/HeadersSection.js +14 -34
  11. package/dist/commonjs/components/Inspector/AnalyticsTab.js +1 -24
  12. package/dist/commonjs/components/Inspector/ConsoleTab.js +1 -23
  13. package/dist/commonjs/components/Inspector/CrashTab.js +4 -25
  14. package/dist/commonjs/components/Inspector/DebuggingTab.js +2 -2
  15. package/dist/commonjs/components/Inspector/FeedbackModal.d.ts +7 -0
  16. package/dist/commonjs/components/Inspector/FeedbackModal.js +552 -0
  17. package/dist/commonjs/components/Inspector/InspectorHeader.js +675 -285
  18. package/dist/commonjs/components/Inspector/MainScreen.js +66 -69
  19. package/dist/commonjs/components/Inspector/MediaGalleryTab.d.ts +2 -0
  20. package/dist/commonjs/components/Inspector/MediaGalleryTab.js +307 -0
  21. package/dist/commonjs/components/Inspector/MediaPreviewModal.d.ts +11 -0
  22. package/dist/commonjs/components/Inspector/MediaPreviewModal.js +393 -0
  23. package/dist/commonjs/components/Inspector/NetworkTab.js +196 -206
  24. package/dist/commonjs/components/Inspector/NpmStarPrompt.d.ts +3 -0
  25. package/dist/commonjs/components/Inspector/NpmStarPrompt.js +494 -0
  26. package/dist/commonjs/components/Inspector/NpmUpdateToast.js +4 -9
  27. package/dist/commonjs/components/Inspector/PerformanceTab.js +8 -1
  28. package/dist/commonjs/components/Inspector/ReduxTab.js +4 -24
  29. package/dist/commonjs/components/Inspector/SettingsPanel.js +1280 -173
  30. package/dist/commonjs/components/Inspector/SkeletonPlaceholder.js +2 -2
  31. package/dist/commonjs/components/Inspector/StorageTab.js +3 -26
  32. package/dist/commonjs/components/Inspector/TabBar.js +55 -25
  33. package/dist/commonjs/components/Inspector/UpdateAvailableModal.js +5 -10
  34. package/dist/commonjs/components/JsonViewer.js +43 -20
  35. package/dist/commonjs/components/LogCard.js +5 -5
  36. package/dist/commonjs/components/MetaAccordion.js +78 -80
  37. package/dist/commonjs/components/NetworkIcons.d.ts +13 -0
  38. package/dist/commonjs/components/NetworkIcons.js +83 -2
  39. package/dist/commonjs/components/SectionHeader.js +3 -48
  40. package/dist/commonjs/components/SkeletonPlaceholder.js +2 -2
  41. package/dist/commonjs/components/SourcePageCard.js +43 -45
  42. package/dist/commonjs/components/Toast.js +4 -4
  43. package/dist/commonjs/components/TouchableScale.js +9 -65
  44. package/dist/commonjs/components/TreeNode.js +2 -14
  45. package/dist/commonjs/constants/telemetryConfig.d.ts +3 -3
  46. package/dist/commonjs/constants/telemetryConfig.js +3 -3
  47. package/dist/commonjs/constants/version.d.ts +1 -1
  48. package/dist/commonjs/constants/version.js +1 -1
  49. package/dist/commonjs/customHooks/useAccordion.d.ts +3 -8
  50. package/dist/commonjs/customHooks/useAccordion.js +6 -36
  51. package/dist/commonjs/helpers/index.d.ts +3 -1
  52. package/dist/commonjs/helpers/index.js +11 -1
  53. package/dist/commonjs/helpers/remoteConfig.d.ts +4 -0
  54. package/dist/commonjs/helpers/remoteConfig.js +165 -0
  55. package/dist/commonjs/helpers/searchQueryParser.js +2 -0
  56. package/dist/commonjs/helpers/telemetry.d.ts +5 -0
  57. package/dist/commonjs/helpers/telemetry.js +339 -8
  58. package/dist/commonjs/i18n/locales/en.json +66 -2
  59. package/dist/commonjs/index.d.ts +2 -0
  60. package/dist/commonjs/index.js +70 -23
  61. package/dist/commonjs/native/NativeInspector.d.ts +60 -0
  62. package/dist/commonjs/native/NativeInspector.js +109 -2
  63. package/dist/commonjs/native/NativeNetworkInspector.d.ts +8 -0
  64. package/dist/commonjs/styles/AppColors.d.ts +36 -0
  65. package/dist/commonjs/styles/AppColors.js +36 -0
  66. package/dist/commonjs/styles/AppFonts.d.ts +2 -0
  67. package/dist/commonjs/styles/AppFonts.js +1 -0
  68. package/dist/commonjs/styles/index.d.ts +25 -1
  69. package/dist/commonjs/styles/index.js +22 -1
  70. package/dist/commonjs/types/enums.d.ts +2 -0
  71. package/dist/commonjs/types/enums.js +2 -0
  72. package/dist/commonjs/types/index.d.ts +2 -2
  73. package/dist/commonjs/types/interfaces.d.ts +12 -0
  74. package/dist/esm/capture.d.ts +26 -0
  75. package/dist/esm/capture.js +29 -0
  76. package/dist/esm/components/AnalyticsEventCard.js +11 -11
  77. package/dist/esm/components/AnimatedEntrance.js +4 -38
  78. package/dist/esm/components/DomainHeader.js +4 -16
  79. package/dist/esm/components/EmptyState.js +2 -2
  80. package/dist/esm/components/HeadersSection.js +16 -36
  81. package/dist/esm/components/Inspector/AnalyticsTab.js +3 -26
  82. package/dist/esm/components/Inspector/ConsoleTab.js +3 -25
  83. package/dist/esm/components/Inspector/CrashTab.js +6 -27
  84. package/dist/esm/components/Inspector/DebuggingTab.js +3 -3
  85. package/dist/esm/components/Inspector/FeedbackModal.d.ts +7 -0
  86. package/dist/esm/components/Inspector/FeedbackModal.js +515 -0
  87. package/dist/esm/components/Inspector/InspectorHeader.js +678 -288
  88. package/dist/esm/components/Inspector/MainScreen.js +67 -70
  89. package/dist/esm/components/Inspector/MediaGalleryTab.d.ts +2 -0
  90. package/dist/esm/components/Inspector/MediaGalleryTab.js +267 -0
  91. package/dist/esm/components/Inspector/MediaPreviewModal.d.ts +11 -0
  92. package/dist/esm/components/Inspector/MediaPreviewModal.js +353 -0
  93. package/dist/esm/components/Inspector/NetworkTab.js +199 -209
  94. package/dist/esm/components/Inspector/NpmStarPrompt.d.ts +3 -0
  95. package/dist/esm/components/Inspector/NpmStarPrompt.js +454 -0
  96. package/dist/esm/components/Inspector/NpmUpdateToast.js +5 -10
  97. package/dist/esm/components/Inspector/PerformanceTab.js +8 -1
  98. package/dist/esm/components/Inspector/ReduxTab.js +6 -26
  99. package/dist/esm/components/Inspector/SettingsPanel.js +1283 -176
  100. package/dist/esm/components/Inspector/SkeletonPlaceholder.js +2 -2
  101. package/dist/esm/components/Inspector/StorageTab.js +3 -26
  102. package/dist/esm/components/Inspector/TabBar.js +56 -26
  103. package/dist/esm/components/Inspector/UpdateAvailableModal.js +6 -11
  104. package/dist/esm/components/JsonViewer.js +43 -20
  105. package/dist/esm/components/LogCard.js +5 -5
  106. package/dist/esm/components/MetaAccordion.js +79 -81
  107. package/dist/esm/components/NetworkIcons.d.ts +13 -0
  108. package/dist/esm/components/NetworkIcons.js +68 -0
  109. package/dist/esm/components/SectionHeader.js +4 -16
  110. package/dist/esm/components/SkeletonPlaceholder.js +2 -2
  111. package/dist/esm/components/SourcePageCard.js +44 -46
  112. package/dist/esm/components/Toast.js +4 -4
  113. package/dist/esm/components/TouchableScale.js +7 -33
  114. package/dist/esm/components/TreeNode.js +4 -16
  115. package/dist/esm/constants/telemetryConfig.d.ts +3 -3
  116. package/dist/esm/constants/telemetryConfig.js +3 -3
  117. package/dist/esm/constants/version.d.ts +1 -1
  118. package/dist/esm/constants/version.js +1 -1
  119. package/dist/esm/customHooks/useAccordion.d.ts +3 -8
  120. package/dist/esm/customHooks/useAccordion.js +7 -37
  121. package/dist/esm/helpers/index.d.ts +3 -1
  122. package/dist/esm/helpers/index.js +9 -0
  123. package/dist/esm/helpers/remoteConfig.d.ts +4 -0
  124. package/dist/esm/helpers/remoteConfig.js +160 -0
  125. package/dist/esm/helpers/searchQueryParser.js +2 -0
  126. package/dist/esm/helpers/telemetry.d.ts +5 -0
  127. package/dist/esm/helpers/telemetry.js +332 -9
  128. package/dist/esm/i18n/locales/en.json +66 -2
  129. package/dist/esm/index.d.ts +2 -0
  130. package/dist/esm/index.js +66 -23
  131. package/dist/esm/native/NativeInspector.d.ts +60 -0
  132. package/dist/esm/native/NativeInspector.js +100 -1
  133. package/dist/esm/native/NativeNetworkInspector.d.ts +8 -0
  134. package/dist/esm/styles/AppColors.d.ts +36 -0
  135. package/dist/esm/styles/AppColors.js +36 -0
  136. package/dist/esm/styles/AppFonts.d.ts +2 -0
  137. package/dist/esm/styles/AppFonts.js +1 -0
  138. package/dist/esm/styles/index.d.ts +25 -1
  139. package/dist/esm/styles/index.js +22 -1
  140. package/dist/esm/types/enums.d.ts +2 -0
  141. package/dist/esm/types/enums.js +2 -0
  142. package/dist/esm/types/index.d.ts +2 -2
  143. package/dist/esm/types/interfaces.d.ts +12 -0
  144. package/ios/NetworkInspectorModule.h +1 -0
  145. package/ios/NetworkInspectorModule.mm +736 -7
  146. package/package.json +10 -2
  147. package/react-native-inapp-inspector.podspec +1 -0
  148. package/src/capture.ts +101 -0
  149. package/src/components/AnalyticsEventCard.tsx +15 -13
  150. package/src/components/AnimatedEntrance.tsx +3 -47
  151. package/src/components/DomainHeader.tsx +4 -17
  152. package/src/components/EmptyState.tsx +2 -2
  153. package/src/components/HeadersSection.tsx +31 -56
  154. package/src/components/Inspector/AnalyticsTab.tsx +2 -25
  155. package/src/components/Inspector/ConsoleTab.tsx +2 -24
  156. package/src/components/Inspector/CrashTab.tsx +4 -25
  157. package/src/components/Inspector/DebuggingTab.tsx +2 -2
  158. package/src/components/Inspector/FeedbackModal.tsx +626 -0
  159. package/src/components/Inspector/InspectorHeader.tsx +1230 -728
  160. package/src/components/Inspector/MainScreen.tsx +97 -82
  161. package/src/components/Inspector/MediaGalleryTab.tsx +355 -0
  162. package/src/components/Inspector/MediaPreviewModal.tsx +435 -0
  163. package/src/components/Inspector/NetworkTab.tsx +83 -93
  164. package/src/components/Inspector/NpmStarPrompt.tsx +532 -0
  165. package/src/components/Inspector/NpmUpdateToast.tsx +4 -9
  166. package/src/components/Inspector/PerformanceTab.tsx +8 -1
  167. package/src/components/Inspector/ReduxTab.tsx +5 -25
  168. package/src/components/Inspector/SettingsPanel.tsx +1493 -225
  169. package/src/components/Inspector/SkeletonPlaceholder.tsx +2 -2
  170. package/src/components/Inspector/StorageTab.tsx +3 -26
  171. package/src/components/Inspector/TabBar.tsx +63 -32
  172. package/src/components/Inspector/UpdateAvailableModal.tsx +6 -10
  173. package/src/components/JsonViewer.tsx +101 -60
  174. package/src/components/LogCard.tsx +10 -8
  175. package/src/components/MetaAccordion.tsx +6 -6
  176. package/src/components/NetworkIcons.tsx +242 -0
  177. package/src/components/SectionHeader.tsx +4 -16
  178. package/src/components/SkeletonPlaceholder.tsx +2 -2
  179. package/src/components/SourcePageCard.tsx +57 -55
  180. package/src/components/Toast.tsx +4 -4
  181. package/src/components/TouchableScale.tsx +8 -38
  182. package/src/components/TreeNode.tsx +5 -20
  183. package/src/constants/telemetryConfig.ts +3 -5
  184. package/src/constants/version.ts +1 -1
  185. package/src/customHooks/useAccordion.tsx +10 -43
  186. package/src/helpers/index.ts +11 -1
  187. package/src/helpers/remoteConfig.ts +212 -0
  188. package/src/helpers/searchQueryParser.ts +3 -0
  189. package/src/helpers/telemetry.ts +381 -10
  190. package/src/i18n/locales/en.json +69 -2
  191. package/src/index.tsx +93 -23
  192. package/src/native/NativeInspector.ts +186 -1
  193. package/src/native/NativeNetworkInspector.ts +9 -0
  194. package/src/styles/AppColors.ts +38 -0
  195. package/src/styles/AppFonts.ts +2 -0
  196. package/src/styles/index.ts +23 -2
  197. package/src/types/enums.ts +4 -0
  198. package/src/types/index.ts +2 -2
  199. package/src/types/interfaces.ts +12 -0
  200. package/android/.gradle/8.9/checksums/checksums.lock +0 -0
  201. package/android/.gradle/8.9/checksums/md5-checksums.bin +0 -0
  202. package/android/.gradle/8.9/checksums/sha1-checksums.bin +0 -0
  203. package/android/.gradle/8.9/dependencies-accessors/gc.properties +0 -0
  204. package/android/.gradle/8.9/executionHistory/executionHistory.lock +0 -0
  205. package/android/.gradle/8.9/fileChanges/last-build.bin +0 -0
  206. package/android/.gradle/8.9/fileHashes/fileHashes.lock +0 -0
  207. package/android/.gradle/8.9/gc.properties +0 -0
  208. package/android/.gradle/9.2.0/checksums/checksums.lock +0 -0
  209. package/android/.gradle/9.2.0/fileChanges/last-build.bin +0 -0
  210. package/android/.gradle/9.2.0/fileHashes/fileHashes.bin +0 -0
  211. package/android/.gradle/9.2.0/fileHashes/fileHashes.lock +0 -0
  212. package/android/.gradle/9.2.0/gc.properties +0 -0
  213. package/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
  214. package/android/.gradle/buildOutputCleanup/cache.properties +0 -2
  215. package/android/.gradle/vcs-1/gc.properties +0 -0
  216. package/android/build/.transforms/6683d6eeaa3e1dfa689c3385111a0386/results.bin +0 -1
  217. package/android/build/.transforms/6683d6eeaa3e1dfa689c3385111a0386/transformed/classes/classes_dex/classes.dex +0 -0
  218. package/android/build/.transforms/9d2a3e5e0f0ea07cafb0c0bf290630ee/results.bin +0 -1
  219. package/android/build/.transforms/9d2a3e5e0f0ea07cafb0c0bf290630ee/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/inappinspector/BuildConfig.dex +0 -0
  220. package/android/build/.transforms/9d2a3e5e0f0ea07cafb0c0bf290630ee/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/inappinspector/InAppInspectorFloatingView$iconView$1.dex +0 -0
  221. package/android/build/.transforms/9d2a3e5e0f0ea07cafb0c0bf290630ee/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/inappinspector/InAppInspectorFloatingView.dex +0 -0
  222. package/android/build/.transforms/9d2a3e5e0f0ea07cafb0c0bf290630ee/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/inappinspector/NativeNetworkInspectorSpec.dex +0 -0
  223. package/android/build/.transforms/9d2a3e5e0f0ea07cafb0c0bf290630ee/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/inappinspector/NetworkInspectorModule$Companion.dex +0 -0
  224. package/android/build/.transforms/9d2a3e5e0f0ea07cafb0c0bf290630ee/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/inappinspector/NetworkInspectorModule$frameCallback$1.dex +0 -0
  225. package/android/build/.transforms/9d2a3e5e0f0ea07cafb0c0bf290630ee/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/inappinspector/NetworkInspectorModule$shakeListener$1.dex +0 -0
  226. package/android/build/.transforms/9d2a3e5e0f0ea07cafb0c0bf290630ee/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/inappinspector/NetworkInspectorModule.dex +0 -0
  227. package/android/build/.transforms/9d2a3e5e0f0ea07cafb0c0bf290630ee/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/inappinspector/NetworkInspectorPackage.dex +0 -0
  228. package/android/build/.transforms/9d2a3e5e0f0ea07cafb0c0bf290630ee/transformed/bundleLibRuntimeToDirDebug/desugar_graph.bin +0 -0
  229. package/android/build/generated/source/buildConfig/debug/com/inappinspector/BuildConfig.java +0 -10
  230. package/android/build/generated/source/codegen/java/com/inappinspector/NativeNetworkInspectorSpec.java +0 -104
  231. package/android/build/generated/source/codegen/jni/CMakeLists.txt +0 -28
  232. package/android/build/generated/source/codegen/jni/RNInAppInspectorSpec-generated.cpp +0 -128
  233. package/android/build/generated/source/codegen/jni/RNInAppInspectorSpec.h +0 -31
  234. package/android/build/generated/source/codegen/jni/react/renderer/components/RNInAppInspectorSpec/ComponentDescriptors.cpp +0 -22
  235. package/android/build/generated/source/codegen/jni/react/renderer/components/RNInAppInspectorSpec/ComponentDescriptors.h +0 -24
  236. package/android/build/generated/source/codegen/jni/react/renderer/components/RNInAppInspectorSpec/EventEmitters.cpp +0 -16
  237. package/android/build/generated/source/codegen/jni/react/renderer/components/RNInAppInspectorSpec/EventEmitters.h +0 -17
  238. package/android/build/generated/source/codegen/jni/react/renderer/components/RNInAppInspectorSpec/Props.cpp +0 -19
  239. package/android/build/generated/source/codegen/jni/react/renderer/components/RNInAppInspectorSpec/Props.h +0 -18
  240. package/android/build/generated/source/codegen/jni/react/renderer/components/RNInAppInspectorSpec/RNInAppInspectorSpecJSI.h +0 -177
  241. package/android/build/generated/source/codegen/jni/react/renderer/components/RNInAppInspectorSpec/ShadowNodes.cpp +0 -17
  242. package/android/build/generated/source/codegen/jni/react/renderer/components/RNInAppInspectorSpec/ShadowNodes.h +0 -23
  243. package/android/build/generated/source/codegen/jni/react/renderer/components/RNInAppInspectorSpec/States.cpp +0 -16
  244. package/android/build/generated/source/codegen/jni/react/renderer/components/RNInAppInspectorSpec/States.h +0 -20
  245. package/android/build/generated/source/codegen/schema.json +0 -1
  246. package/android/build/intermediates/aapt_friendly_merged_manifests/debug/processDebugManifest/aapt/AndroidManifest.xml +0 -7
  247. package/android/build/intermediates/aapt_friendly_merged_manifests/debug/processDebugManifest/aapt/output-metadata.json +0 -18
  248. package/android/build/intermediates/aar_main_jar/debug/syncDebugLibJars/classes.jar +0 -0
  249. package/android/build/intermediates/aar_metadata/debug/writeDebugAarMetadata/aar-metadata.properties +0 -6
  250. package/android/build/intermediates/annotation_processor_list/debug/javaPreCompileDebug/annotationProcessors.json +0 -1
  251. package/android/build/intermediates/annotations_typedef_file/debug/extractDebugAnnotations/typedefs.txt +0 -0
  252. package/android/build/intermediates/compile_library_classes_jar/debug/bundleLibCompileToJarDebug/classes.jar +0 -0
  253. package/android/build/intermediates/compile_r_class_jar/debug/generateDebugRFile/R.jar +0 -0
  254. package/android/build/intermediates/compile_symbol_list/debug/generateDebugRFile/R.txt +0 -0
  255. package/android/build/intermediates/incremental/debug/packageDebugResources/compile-file-map.properties +0 -1
  256. package/android/build/intermediates/incremental/debug/packageDebugResources/merger.xml +0 -2
  257. package/android/build/intermediates/incremental/debug-mergeJavaRes/merge-state +0 -0
  258. package/android/build/intermediates/incremental/mergeDebugJniLibFolders/merger.xml +0 -2
  259. package/android/build/intermediates/incremental/mergeDebugShaders/merger.xml +0 -2
  260. package/android/build/intermediates/incremental/packageDebugAssets/merger.xml +0 -2
  261. package/android/build/intermediates/java_res/debug/processDebugJavaRes/out/META-INF/react-native-inapp-inspector_debug.kotlin_module +0 -0
  262. package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/inappinspector/BuildConfig.class +0 -0
  263. package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/inappinspector/NativeNetworkInspectorSpec.class +0 -0
  264. package/android/build/intermediates/local_only_symbol_list/debug/parseDebugLocalResources/R-def.txt +0 -2
  265. package/android/build/intermediates/manifest_merge_blame_file/debug/processDebugManifest/manifest-merger-blame-debug-report.txt +0 -7
  266. package/android/build/intermediates/merged_java_res/debug/mergeDebugJavaResource/feature-react-native-inapp-inspector.jar +0 -0
  267. package/android/build/intermediates/merged_manifest/debug/processDebugManifest/AndroidManifest.xml +0 -7
  268. package/android/build/intermediates/navigation_json/debug/extractDeepLinksDebug/navigation.json +0 -1
  269. package/android/build/intermediates/nested_resources_validation_report/debug/generateDebugResources/nestedResourcesValidationReport.txt +0 -1
  270. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/META-INF/react-native-inapp-inspector_debug.kotlin_module +0 -0
  271. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/inappinspector/BuildConfig.class +0 -0
  272. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/inappinspector/InAppInspectorFloatingView$iconView$1.class +0 -0
  273. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/inappinspector/InAppInspectorFloatingView.class +0 -0
  274. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/inappinspector/NativeNetworkInspectorSpec.class +0 -0
  275. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/inappinspector/NetworkInspectorModule$Companion.class +0 -0
  276. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/inappinspector/NetworkInspectorModule$frameCallback$1.class +0 -0
  277. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/inappinspector/NetworkInspectorModule$shakeListener$1.class +0 -0
  278. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/inappinspector/NetworkInspectorModule.class +0 -0
  279. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/inappinspector/NetworkInspectorPackage.class +0 -0
  280. package/android/build/intermediates/runtime_library_classes_jar/debug/bundleLibRuntimeToJarDebug/classes.jar +0 -0
  281. package/android/build/intermediates/symbol_list_with_package_name/debug/generateDebugRFile/package-aware-r.txt +0 -1
  282. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab +0 -0
  283. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream +0 -0
  284. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream.len +0 -0
  285. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.len +0 -0
  286. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.values.at +0 -0
  287. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab_i +0 -0
  288. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab_i.len +0 -0
  289. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab +0 -0
  290. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream +0 -0
  291. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream.len +0 -0
  292. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.len +0 -0
  293. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.values.at +0 -0
  294. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i +0 -0
  295. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i.len +0 -0
  296. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab +0 -0
  297. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream +0 -0
  298. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream.len +0 -0
  299. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.len +0 -0
  300. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.values.at +0 -0
  301. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i +0 -0
  302. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i.len +0 -0
  303. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab +0 -0
  304. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.keystream +0 -0
  305. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.keystream.len +0 -0
  306. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.len +0 -0
  307. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.values.at +0 -0
  308. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab_i +0 -0
  309. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab_i.len +0 -0
  310. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab +0 -0
  311. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream +0 -0
  312. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream.len +0 -0
  313. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.len +0 -0
  314. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.values.at +0 -0
  315. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i +0 -0
  316. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i.len +0 -0
  317. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab +0 -0
  318. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream +0 -0
  319. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream.len +0 -0
  320. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.len +0 -0
  321. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.values.at +0 -0
  322. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i +0 -0
  323. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i.len +0 -0
  324. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab +0 -0
  325. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream +0 -0
  326. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream.len +0 -0
  327. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.len +0 -0
  328. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.values.at +0 -0
  329. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i +0 -0
  330. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i.len +0 -0
  331. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab +0 -0
  332. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.keystream +0 -0
  333. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.keystream.len +0 -0
  334. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.len +0 -0
  335. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.values.at +0 -0
  336. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab_i +0 -0
  337. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab_i.len +0 -0
  338. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab +0 -0
  339. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.keystream +0 -0
  340. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.keystream.len +0 -0
  341. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.len +0 -0
  342. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.values.at +0 -0
  343. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab_i +0 -0
  344. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab_i.len +0 -0
  345. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/counters.tab +0 -2
  346. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab +0 -0
  347. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream +0 -0
  348. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream.len +0 -0
  349. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.len +0 -0
  350. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.values.at +0 -0
  351. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i +0 -0
  352. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i.len +0 -0
  353. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab +0 -0
  354. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream +0 -0
  355. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream.len +0 -0
  356. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.len +0 -0
  357. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.values.at +0 -0
  358. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i +0 -0
  359. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i.len +0 -0
  360. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab +0 -0
  361. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream +0 -0
  362. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream.len +0 -0
  363. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.len +0 -0
  364. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.values.at +0 -0
  365. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab_i +0 -0
  366. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab_i.len +0 -0
  367. package/android/build/kotlin/compileDebugKotlin/cacheable/last-build.bin +0 -0
  368. package/android/build/kotlin/compileDebugKotlin/classpath-snapshot/shrunk-classpath-snapshot.bin +0 -0
  369. package/android/build/kotlin/compileDebugKotlin/local-state/build-history.bin +0 -0
  370. package/android/build/outputs/aar/react-native-inapp-inspector-debug.aar +0 -0
  371. package/android/build/outputs/logs/manifest-merger-debug-report.txt +0 -17
  372. package/android/build/reports/problems/problems-report.html +0 -659
  373. package/android/build/tmp/compileDebugJavaWithJavac/previous-compilation-data.bin +0 -0
  374. package/android/build/tmp/kotlin-classes/debug/META-INF/react-native-inapp-inspector_debug.kotlin_module +0 -0
  375. package/android/build/tmp/kotlin-classes/debug/com/inappinspector/InAppInspectorFloatingView$iconView$1.class +0 -0
  376. package/android/build/tmp/kotlin-classes/debug/com/inappinspector/InAppInspectorFloatingView.class +0 -0
  377. package/android/build/tmp/kotlin-classes/debug/com/inappinspector/NetworkInspectorModule$Companion.class +0 -0
  378. package/android/build/tmp/kotlin-classes/debug/com/inappinspector/NetworkInspectorModule$frameCallback$1.class +0 -0
  379. package/android/build/tmp/kotlin-classes/debug/com/inappinspector/NetworkInspectorModule$shakeListener$1.class +0 -0
  380. package/android/build/tmp/kotlin-classes/debug/com/inappinspector/NetworkInspectorModule.class +0 -0
  381. package/android/build/tmp/kotlin-classes/debug/com/inappinspector/NetworkInspectorPackage.class +0 -0
@@ -1,5 +1,5 @@
1
1
  import React, { useMemo, useState, useEffect, useRef } from 'react';
2
- import { Alert, Animated, Platform, ScrollView, StatusBar, StyleSheet, Text, TextInput, View, } from 'react-native';
2
+ import { Alert, Animated, DevSettings, Dimensions, Linking, PixelRatio, Platform, ScrollView, StatusBar, StyleSheet, Text, TextInput, View, } from 'react-native';
3
3
  import Svg, { Path } from 'react-native-svg';
4
4
  import { animateNextLayout, useInspector } from './InspectorContext';
5
5
  import TouchableScale from '../TouchableScale';
@@ -17,14 +17,15 @@ import { clearPerformanceEvents } from '../../customHooks/performanceTracker';
17
17
  import { isReduxConnected } from '../../customHooks/reduxLogger';
18
18
  import { isAnalyticsConnected } from '../../customHooks/analyticsLogger';
19
19
  import { useTranslation } from '../../i18n';
20
- import { SignalIcon, TerminalIcon, AnalyticsIcon, SettingsIcon, SunIcon, MoonIcon, ScreenIcon, MotionIcon, LayersIcon, EyeIcon, CheckIcon, TrashIcon, PackageIcon, ReduxIcon, PerformanceIcon, CrashIcon, ShieldAlertIcon, ForwardChevronIcon, ChevronDownIcon, NpmIcon, BoltIcon, BrainIcon, SmartphoneIcon, DatabaseIcon, QrCodeIcon, } from '../NetworkIcons';
20
+ import { SignalIcon, TerminalIcon, AnalyticsIcon, SettingsIcon, SunIcon, MoonIcon, ScreenIcon, MotionIcon, LayersIcon, EyeIcon, CheckIcon, TrashIcon, PackageIcon, ReduxIcon, PerformanceIcon, CrashIcon, ShieldAlertIcon, ForwardChevronIcon, ChevronDownIcon, NpmIcon, BoltIcon, BrainIcon, SmartphoneIcon, DatabaseIcon, QrCodeIcon, GitHubIcon, InfoCircleIcon, CopyIcon, FilmIcon, CameraIcon, VideoCameraIcon, MicrophoneIcon, GifIcon, ImageIcon, } from '../NetworkIcons';
21
+ import { ScreenCapture } from '../../capture';
21
22
  import { LIB_VERSION } from '../../constants';
22
- import { copyToClipboard, isLocalDebugEnvironment } from '../../helpers';
23
+ import { copyToClipboard, isLocalDebugEnvironment, getAppName, getBundleIdentifier, getAppVersionAndBuild, } from '../../helpers';
23
24
  import { showToast } from '../../helpers/toast';
24
25
  import { pruneAllLogs } from '../../helpers/memoryManager';
25
26
  const SettingsPanel = () => {
26
27
  const { t } = useTranslation();
27
- const { settingsPage, setSettingsPage, settingsActiveSubTab, setSettingsActiveSubTab, tabVisibility, toggleTabVisibility, defaultTab, setDefaultTab, isDark, setIsDark, modalHeightPercent, setModalHeightPercent, modalAnimationType, setModalAnimationType, showDuplicateLogs, setShowDuplicateLogs, showUpdateToast, setShowUpdateToast, showConsoleLevels, setShowConsoleLevels, resetToDefaults, storage, logs, consoleLogs, analyticsEvents, reduxState, maxNetworkLogs, setMaxNetworkLogs, maxConsoleLogs, setMaxConsoleLogs, maxAnalyticsEventsLimit, setMaxAnalyticsEventsLimit, isAutoRamLimitEnabled, setIsAutoRamLimitEnabled, deviceFreeRamMb, reduxAutoRefresh, setReduxAutoRefreshState, reduxExpandDepth, setReduxExpandDepth, switchActiveTab, setSelected, setSelectedEvent, setReduxState, crashRecords, maxCrashLogs, setMaxCrashLogs, updateAvailable, latestNpmVersion, } = useInspector();
28
+ const { settingsPage, setSettingsPage, settingsActiveSubTab, setSettingsActiveSubTab, tabVisibility, toggleTabVisibility, defaultTab, setDefaultTab, isDark, setIsDark, modalHeightPercent, setModalHeightPercent, modalAnimationType, setModalAnimationType, showDuplicateLogs, setShowDuplicateLogs, showUpdateToast, setShowUpdateToast, showConsoleLevels, setShowConsoleLevels, resetToDefaults, closeModal, storage, logs, consoleLogs, analyticsEvents, reduxState, maxNetworkLogs, setMaxNetworkLogs, maxConsoleLogs, setMaxConsoleLogs, maxAnalyticsEventsLimit, setMaxAnalyticsEventsLimit, isAutoRamLimitEnabled, setIsAutoRamLimitEnabled, deviceFreeRamMb, reduxAutoRefresh, setReduxAutoRefreshState, reduxExpandDepth, setReduxExpandDepth, switchActiveTab, setSelected, setSelectedEvent, setReduxState, crashRecords, maxCrashLogs, setMaxCrashLogs, updateAvailable, latestNpmVersion, } = useInspector();
28
29
  const [stagedHeight, setStagedHeight] = useState(modalHeightPercent);
29
30
  useEffect(() => {
30
31
  setStagedHeight(modalHeightPercent);
@@ -35,6 +36,7 @@ const SettingsPanel = () => {
35
36
  const headerTopPadding = modalHeightPercent >= 95 ? statusBarHeight : 0;
36
37
  const allModules = useMemo(() => [
37
38
  {
39
+ id: 1,
38
40
  key: 'apis',
39
41
  label: 'APIs (Network)',
40
42
  category: 'core',
@@ -42,6 +44,7 @@ const SettingsPanel = () => {
42
44
  desc: 'HTTP/HTTPS requests, GraphQL, Axios & WebSocket inspector',
43
45
  },
44
46
  {
47
+ id: 2,
45
48
  key: 'logs',
46
49
  label: 'Console Logs',
47
50
  category: 'core',
@@ -49,27 +52,7 @@ const SettingsPanel = () => {
49
52
  desc: 'Terminal console logs, warnings, errors & stack traces',
50
53
  },
51
54
  {
52
- key: 'performance',
53
- label: 'Performance Tracker',
54
- category: 'diagnostic',
55
- icon: 'performance',
56
- desc: '60 FPS monitor, Hermes memory telemetry & re-render profiler',
57
- },
58
- {
59
- key: 'bundle',
60
- label: 'Bundle Analyzer',
61
- category: 'diagnostic',
62
- icon: 'bundle',
63
- desc: 'Metro packager dependencies, source maps & asset breakdown',
64
- },
65
- {
66
- key: 'crash',
67
- label: 'Crash Protection',
68
- category: 'diagnostic',
69
- icon: 'crash',
70
- desc: 'Runtime exception guard, breadcrumbs & memory snapshot',
71
- },
72
- {
55
+ id: 3,
73
56
  key: 'analytics',
74
57
  label: 'Analytics Logger',
75
58
  category: 'telemetry',
@@ -77,6 +60,7 @@ const SettingsPanel = () => {
77
60
  desc: 'Firebase & custom analytics events, user properties & params',
78
61
  },
79
62
  {
63
+ id: 4,
80
64
  key: 'redux',
81
65
  label: 'Redux Inspector',
82
66
  category: 'telemetry',
@@ -84,6 +68,15 @@ const SettingsPanel = () => {
84
68
  desc: 'Store state diffing, action history & reducer timeline',
85
69
  },
86
70
  {
71
+ id: 5,
72
+ key: 'storage',
73
+ label: 'Storage Inspector',
74
+ category: 'telemetry',
75
+ icon: 'storage',
76
+ desc: 'AsyncStorage & MMKV key-value store viewer with full CRUD support',
77
+ },
78
+ {
79
+ id: 6,
87
80
  key: 'device',
88
81
  label: 'Device Info',
89
82
  category: 'diagnostic',
@@ -91,13 +84,31 @@ const SettingsPanel = () => {
91
84
  desc: 'Hardware specs, IP address, screen metrics, UDID & runtime stats',
92
85
  },
93
86
  {
94
- key: 'storage',
95
- label: 'Storage Inspector',
96
- category: 'telemetry',
97
- icon: 'storage',
98
- desc: 'AsyncStorage & MMKV key-value store viewer with full CRUD support',
87
+ id: 7,
88
+ key: 'crash',
89
+ label: 'Crash Protection',
90
+ category: 'diagnostic',
91
+ icon: 'crash',
92
+ desc: 'Runtime exception guard, breadcrumbs & memory snapshot',
93
+ },
94
+ {
95
+ id: 8,
96
+ key: 'bundle',
97
+ label: 'Bundle Analyzer',
98
+ category: 'diagnostic',
99
+ icon: 'bundle',
100
+ desc: 'Metro packager dependencies, source maps & asset breakdown',
101
+ },
102
+ {
103
+ id: 9,
104
+ key: 'performance',
105
+ label: 'Performance & Tracker',
106
+ category: 'diagnostic',
107
+ icon: 'performance',
108
+ desc: '60 FPS monitor, Hermes memory telemetry & re-render profiler',
99
109
  },
100
110
  {
111
+ id: 10,
101
112
  key: 'debugging',
102
113
  label: 'Multi-Device Debugging',
103
114
  category: 'diagnostic',
@@ -112,11 +123,11 @@ const SettingsPanel = () => {
112
123
  logs: Boolean(tabVisibility?.logs),
113
124
  analytics: Boolean(tabVisibility?.analytics),
114
125
  redux: Boolean(tabVisibility?.redux),
126
+ storage: Boolean(tabVisibility?.storage),
127
+ device: Boolean(tabVisibility?.device),
128
+ crash: Boolean(tabVisibility?.crash),
115
129
  bundle: Boolean(tabVisibility?.bundle),
116
130
  performance: Boolean(tabVisibility?.performance),
117
- crash: Boolean(tabVisibility?.crash),
118
- device: Boolean(tabVisibility?.device),
119
- storage: Boolean(tabVisibility?.storage),
120
131
  debugging: Boolean(tabVisibility?.debugging),
121
132
  }));
122
133
  useEffect(() => {
@@ -125,11 +136,11 @@ const SettingsPanel = () => {
125
136
  logs: Boolean(tabVisibility?.logs),
126
137
  analytics: Boolean(tabVisibility?.analytics),
127
138
  redux: Boolean(tabVisibility?.redux),
139
+ storage: Boolean(tabVisibility?.storage),
140
+ device: Boolean(tabVisibility?.device),
141
+ crash: Boolean(tabVisibility?.crash),
128
142
  bundle: Boolean(tabVisibility?.bundle),
129
143
  performance: Boolean(tabVisibility?.performance),
130
- crash: Boolean(tabVisibility?.crash),
131
- device: Boolean(tabVisibility?.device),
132
- storage: Boolean(tabVisibility?.storage),
133
144
  debugging: Boolean(tabVisibility?.debugging),
134
145
  });
135
146
  }, [tabVisibility]);
@@ -139,17 +150,50 @@ const SettingsPanel = () => {
139
150
  }, [stagedTabVisibility, tabVisibility, allModules]);
140
151
  const stagedActiveCount = allModules.filter(m => m.key === 'apis' || Boolean(stagedTabVisibility[m.key])).length;
141
152
  const handleSaveChanges = () => {
142
- animateNextLayout();
143
- allModules.forEach(m => {
144
- if (m.key !== 'apis') {
145
- const isStagedOn = Boolean(stagedTabVisibility[m.key]);
146
- const isCurrentOn = Boolean(tabVisibility?.[m.key]);
147
- if (isStagedOn !== isCurrentOn) {
148
- toggleTabVisibility(m.key);
149
- }
150
- }
151
- });
152
- Alert.alert(t('settings.settingsSaved'), t('settings.settingsSavedDesc'));
153
+ if (!hasUnsavedChanges)
154
+ return;
155
+ Alert.alert('Apply Changes & Reload', 'Are you sure you want to save module changes? The inspector will close and reload the app to apply the new configuration.', [
156
+ {
157
+ text: 'Cancel',
158
+ style: 'cancel',
159
+ onPress: () => {
160
+ setStagedTabVisibility({
161
+ apis: true,
162
+ logs: Boolean(tabVisibility?.logs),
163
+ analytics: Boolean(tabVisibility?.analytics),
164
+ redux: Boolean(tabVisibility?.redux),
165
+ storage: Boolean(tabVisibility?.storage),
166
+ device: Boolean(tabVisibility?.device),
167
+ crash: Boolean(tabVisibility?.crash),
168
+ bundle: Boolean(tabVisibility?.bundle),
169
+ performance: Boolean(tabVisibility?.performance),
170
+ debugging: Boolean(tabVisibility?.debugging),
171
+ });
172
+ },
173
+ },
174
+ {
175
+ text: 'Save & Reload',
176
+ style: 'default',
177
+ onPress: () => {
178
+ animateNextLayout();
179
+ allModules.forEach(m => {
180
+ if (m.key !== 'apis') {
181
+ const isStagedOn = Boolean(stagedTabVisibility[m.key]);
182
+ const isCurrentOn = Boolean(tabVisibility?.[m.key]);
183
+ if (isStagedOn !== isCurrentOn) {
184
+ toggleTabVisibility(m.key);
185
+ }
186
+ }
187
+ });
188
+ closeModal();
189
+ setTimeout(() => {
190
+ if (__DEV__ && DevSettings && DevSettings.reload) {
191
+ DevSettings.reload();
192
+ }
193
+ }, 350);
194
+ },
195
+ },
196
+ ]);
153
197
  };
154
198
  const [isDefaultTabDropdownOpen, setIsDefaultTabDropdownOpen] = useState(false);
155
199
  const goBackToMain = () => {
@@ -322,6 +366,16 @@ const SettingsPanel = () => {
322
366
  label: t('settings.ramLimits', 'RAM & Limits'),
323
367
  Icon: BrainIcon,
324
368
  },
369
+ {
370
+ key: 'capture',
371
+ label: t('settings.screenVideoCapture', 'Screen & Video Capture'),
372
+ Icon: CameraIcon,
373
+ },
374
+ {
375
+ key: 'about',
376
+ label: t('settings.aboutAndSpecs', 'About & Specs'),
377
+ Icon: InfoCircleIcon,
378
+ },
325
379
  ].map(tab => {
326
380
  const isActive = settingsActiveSubTab === tab.key;
327
381
  const IconComp = tab.Icon;
@@ -531,6 +585,32 @@ const SettingsPanel = () => {
531
585
  gap: 6,
532
586
  flexWrap: 'wrap',
533
587
  }}>
588
+ <View style={{
589
+ minWidth: 22,
590
+ height: 22,
591
+ paddingHorizontal: 5,
592
+ borderRadius: 11,
593
+ backgroundColor: isChecked
594
+ ? `${AppColors.purple}1C`
595
+ : `${AppColors.grayBorderSecondary}80`,
596
+ borderWidth: 1,
597
+ borderColor: isChecked
598
+ ? `${AppColors.purple}44`
599
+ : AppColors.grayBorderSecondary,
600
+ alignItems: 'center',
601
+ justifyContent: 'center',
602
+ }}>
603
+ <Text style={{
604
+ fontFamily: AppFonts.interBold,
605
+ fontSize: 10,
606
+ lineHeight: 13,
607
+ color: isChecked
608
+ ? AppColors.purple
609
+ : AppColors.grayText,
610
+ }}>
611
+ #{moduleItem.id}
612
+ </Text>
613
+ </View>
534
614
  <Text style={{
535
615
  fontFamily: AppFonts.interBold,
536
616
  fontSize: 14,
@@ -1082,8 +1162,9 @@ const SettingsPanel = () => {
1082
1162
  lineHeight: 18,
1083
1163
  color: AppColors.primaryBlack,
1084
1164
  }}>
1085
- {allModules.find(m => m.key === defaultTab)?.label ||
1086
- 'APIs (Network)'}
1165
+ {allModules.find(m => m.key === defaultTab)
1166
+ ? `#${allModules.find(m => m.key === defaultTab)?.id} ${allModules.find(m => m.key === defaultTab)?.label}`
1167
+ : '#1 APIs (Network)'}
1087
1168
  </Text>
1088
1169
  <View style={{
1089
1170
  backgroundColor: `${AppColors.purple}14`,
@@ -1167,7 +1248,7 @@ const SettingsPanel = () => {
1167
1248
  ? AppColors.purple
1168
1249
  : AppColors.primaryBlack,
1169
1250
  }}>
1170
- {tab.label}
1251
+ #{tab.id} {tab.label}
1171
1252
  </Text>
1172
1253
  </View>
1173
1254
  {isActive && (<CheckIcon size={14} color={AppColors.purple}/>)}
@@ -1265,132 +1346,6 @@ const SettingsPanel = () => {
1265
1346
  </TouchableScale>
1266
1347
  </View>
1267
1348
  </View>
1268
-
1269
-
1270
- <View style={{
1271
- backgroundColor: AppColors.primaryLight,
1272
- borderRadius: 14,
1273
- borderWidth: 1,
1274
- borderColor: AppColors.grayBorderSecondary,
1275
- overflow: 'hidden',
1276
- padding: 14,
1277
- gap: 12,
1278
- }}>
1279
- <Text style={{
1280
- fontFamily: AppFonts.interBold,
1281
- fontSize: 11,
1282
- lineHeight: 14,
1283
- color: AppColors.grayTextWeak,
1284
- letterSpacing: 0.8,
1285
- }}>
1286
- PACKAGE VERSION & UPDATES
1287
- </Text>
1288
-
1289
- <View style={{
1290
- flexDirection: 'row',
1291
- alignItems: 'center',
1292
- justifyContent: 'space-between',
1293
- }}>
1294
- <View style={{
1295
- flexDirection: 'row',
1296
- alignItems: 'center',
1297
- gap: 10,
1298
- flex: 1,
1299
- marginRight: 8,
1300
- }}>
1301
- <View style={{
1302
- width: 32,
1303
- height: 32,
1304
- borderRadius: 8,
1305
- backgroundColor: '#CB383715',
1306
- alignItems: 'center',
1307
- justifyContent: 'center',
1308
- }}>
1309
- <NpmIcon color="#CB3837" size={16}/>
1310
- </View>
1311
- <View style={{ flex: 1 }}>
1312
- <View style={{
1313
- flexDirection: 'row',
1314
- alignItems: 'center',
1315
- gap: 6,
1316
- }}>
1317
- <Text style={{
1318
- fontFamily: AppFonts.interBold,
1319
- fontSize: 13.5,
1320
- lineHeight: 18,
1321
- color: AppColors.primaryBlack,
1322
- }}>
1323
- v{LIB_VERSION}
1324
- </Text>
1325
- {updateAvailable ? (<View style={{
1326
- flexDirection: 'row',
1327
- alignItems: 'center',
1328
- gap: 3,
1329
- backgroundColor: '#F59E0B20',
1330
- paddingHorizontal: 6,
1331
- paddingVertical: 1.5,
1332
- borderRadius: 5,
1333
- borderWidth: 1,
1334
- borderColor: '#F59E0B60',
1335
- }}>
1336
- <Text style={{
1337
- fontFamily: AppFonts.interBold,
1338
- fontSize: 9.5,
1339
- color: '#D97706',
1340
- }}>
1341
- v{latestNpmVersion} Available
1342
- </Text>
1343
- <BoltIcon size={9} color="#D97706"/>
1344
- </View>) : (<View style={{
1345
- backgroundColor: `${AppColors.emerald500}20`,
1346
- paddingHorizontal: 6,
1347
- paddingVertical: 1.5,
1348
- borderRadius: 5,
1349
- borderWidth: 1,
1350
- borderColor: `${AppColors.emerald500}50`,
1351
- }}>
1352
- <Text style={{
1353
- fontFamily: AppFonts.interBold,
1354
- fontSize: 9.5,
1355
- color: AppColors.emerald600,
1356
- }}>
1357
- Up to date
1358
- </Text>
1359
- </View>)}
1360
- </View>
1361
- <Text style={{
1362
- fontFamily: AppFonts.interRegular,
1363
- fontSize: 11,
1364
- lineHeight: 15,
1365
- color: AppColors.grayText,
1366
- marginTop: 1,
1367
- }}>
1368
- {updateAvailable
1369
- ? `A newer version (v${latestNpmVersion}) is available on npm registry.`
1370
- : 'You are running the latest version from npm registry.'}
1371
- </Text>
1372
- </View>
1373
- </View>
1374
-
1375
- {updateAvailable && (<TouchableScale onPress={() => {
1376
- copyToClipboard('npm install react-native-inapp-inspector@latest', 'Install Command');
1377
- showToast('Copied npm install command!');
1378
- }} style={{
1379
- backgroundColor: AppColors.purple,
1380
- paddingVertical: 6,
1381
- paddingHorizontal: 10,
1382
- borderRadius: 8,
1383
- }}>
1384
- <Text style={{
1385
- fontFamily: AppFonts.interBold,
1386
- fontSize: 11,
1387
- color: AppColors.white,
1388
- }}>
1389
- Copy Upgrade
1390
- </Text>
1391
- </TouchableScale>)}
1392
- </View>
1393
- </View>
1394
1349
  </View>)}
1395
1350
 
1396
1351
  {settingsActiveSubTab === 'limits' && (<View style={{ gap: 14 }}>
@@ -1766,6 +1721,1158 @@ const SettingsPanel = () => {
1766
1721
  </View>
1767
1722
  </View>
1768
1723
  </View>)}
1724
+ {settingsActiveSubTab === 'capture' && (<View style={{ gap: 12 }}>
1725
+
1726
+ <View style={{
1727
+ backgroundColor: AppColors.primaryLight,
1728
+ padding: 16,
1729
+ borderRadius: 14,
1730
+ borderWidth: 1,
1731
+ borderColor: AppColors.grayBorderSecondary,
1732
+ gap: 12,
1733
+ }}>
1734
+ <View style={{ flexDirection: 'row', alignItems: 'center', gap: 10 }}>
1735
+ <View style={{
1736
+ width: 36,
1737
+ height: 36,
1738
+ borderRadius: 10,
1739
+ backgroundColor: AppColors.purpleShade50,
1740
+ alignItems: 'center',
1741
+ justifyContent: 'center',
1742
+ }}>
1743
+ <CameraIcon color={AppColors.purple} size={16}/>
1744
+ </View>
1745
+ <View style={{ flex: 1 }}>
1746
+ <Text style={{
1747
+ fontFamily: AppFonts.interBold,
1748
+ fontSize: 14,
1749
+ lineHeight: 18,
1750
+ color: AppColors.primaryBlack,
1751
+ }}>
1752
+ {t('settings.media.screenshotCardTitle', 'Screenshot Capture Settings')}
1753
+ </Text>
1754
+ <Text style={{
1755
+ fontFamily: AppFonts.interRegular,
1756
+ fontSize: 11,
1757
+ lineHeight: 15,
1758
+ color: AppColors.grayText,
1759
+ marginTop: 1,
1760
+ }}>
1761
+ {t('settings.media.screenshotCardDesc', 'Image encoding format, compression quality and overlay auto-hide')}
1762
+ </Text>
1763
+ </View>
1764
+ </View>
1765
+
1766
+ {renderSettingRow({
1767
+ icon: <ImageIcon color={AppColors.purple} size={16}/>,
1768
+ label: t('settings.media.imageFormat', 'Image Format'),
1769
+ description: t('settings.media.imageFormatDesc', 'Export formats (PNG lossless, JPEG lossy, WebP)'),
1770
+ right: (<View style={{ flexDirection: 'row', gap: 4 }}>
1771
+ {['PNG', 'JPEG', 'WEBP'].map(fmt => (<View key={fmt} style={{
1772
+ paddingHorizontal: 8,
1773
+ paddingVertical: 4,
1774
+ borderRadius: 6,
1775
+ backgroundColor: fmt === 'PNG' ? AppColors.purple : `${AppColors.purple}1A`,
1776
+ }}>
1777
+ <Text style={{
1778
+ fontFamily: AppFonts.interBold,
1779
+ fontSize: 10,
1780
+ color: fmt === 'PNG' ? AppColors.white : AppColors.purple,
1781
+ }}>
1782
+ {fmt}
1783
+ </Text>
1784
+ </View>))}
1785
+ </View>),
1786
+ })}
1787
+
1788
+ {renderSettingRow({
1789
+ icon: <EyeIcon color={AppColors.purple} size={16}/>,
1790
+ label: t('settings.media.autoHide', 'Auto-Hide Inspector During Capture'),
1791
+ description: t('settings.media.autoHideDesc', 'Temporarily hides the inspector overlay during screen capture'),
1792
+ isLast: true,
1793
+ right: (<View style={{
1794
+ paddingHorizontal: 8,
1795
+ paddingVertical: 4,
1796
+ borderRadius: 6,
1797
+ backgroundColor: `${AppColors.emerald500}26`,
1798
+ }}>
1799
+ <Text style={{
1800
+ fontFamily: AppFonts.interBold,
1801
+ fontSize: 10,
1802
+ color: AppColors.emerald500,
1803
+ }}>
1804
+ {t('settings.media.enabled', 'ON')}
1805
+ </Text>
1806
+ </View>),
1807
+ })}
1808
+ </View>
1809
+
1810
+
1811
+ <View style={{
1812
+ backgroundColor: AppColors.primaryLight,
1813
+ padding: 16,
1814
+ borderRadius: 14,
1815
+ borderWidth: 1,
1816
+ borderColor: AppColors.grayBorderSecondary,
1817
+ gap: 12,
1818
+ }}>
1819
+ <View style={{ flexDirection: 'row', alignItems: 'center', gap: 10 }}>
1820
+ <View style={{
1821
+ width: 36,
1822
+ height: 36,
1823
+ borderRadius: 10,
1824
+ backgroundColor: AppColors.purpleShade50,
1825
+ alignItems: 'center',
1826
+ justifyContent: 'center',
1827
+ }}>
1828
+ <VideoCameraIcon color={AppColors.purple} size={16}/>
1829
+ </View>
1830
+ <View style={{ flex: 1 }}>
1831
+ <Text style={{
1832
+ fontFamily: AppFonts.interBold,
1833
+ fontSize: 14,
1834
+ lineHeight: 18,
1835
+ color: AppColors.primaryBlack,
1836
+ }}>
1837
+ {t('settings.media.videoCardTitle', 'Video Recording & GIF Conversion')}
1838
+ </Text>
1839
+ <Text style={{
1840
+ fontFamily: AppFonts.interRegular,
1841
+ fontSize: 11,
1842
+ lineHeight: 15,
1843
+ color: AppColors.grayText,
1844
+ marginTop: 1,
1845
+ }}>
1846
+ {t('settings.media.videoCardDesc', 'ReplayKit hardware encoding, frame capture fallback and GIF generation')}
1847
+ </Text>
1848
+ </View>
1849
+ </View>
1850
+
1851
+ {renderSettingRow({
1852
+ icon: <MicrophoneIcon color={AppColors.purple} size={16}/>,
1853
+ label: t('settings.media.audioMode', 'Audio Source'),
1854
+ description: t('settings.media.audioModeDesc', 'Record video with muted, app audio, or microphone commentary'),
1855
+ right: (<View style={{ flexDirection: 'row', gap: 4 }}>
1856
+ {['Muted', 'App', 'Mic'].map((aud, i) => (<View key={aud} style={{
1857
+ paddingHorizontal: 7,
1858
+ paddingVertical: 4,
1859
+ borderRadius: 6,
1860
+ backgroundColor: i === 0 ? AppColors.purple : `${AppColors.purple}1A`,
1861
+ }}>
1862
+ <Text style={{
1863
+ fontFamily: AppFonts.interBold,
1864
+ fontSize: 10,
1865
+ color: i === 0 ? AppColors.white : AppColors.purple,
1866
+ }}>
1867
+ {aud}
1868
+ </Text>
1869
+ </View>))}
1870
+ </View>),
1871
+ })}
1872
+
1873
+ {renderSettingRow({
1874
+ icon: <FilmIcon color={AppColors.purple} size={16}/>,
1875
+ label: t('settings.media.frameRate', 'Recording Frame Rate (FPS)'),
1876
+ description: t('settings.media.frameRateDesc', 'Target video smoothness: 15, 24, 30, or 60 FPS'),
1877
+ right: (<View style={{ flexDirection: 'row', gap: 4 }}>
1878
+ {['15', '24', '30', '60'].map(fps => (<View key={fps} style={{
1879
+ paddingHorizontal: 6,
1880
+ paddingVertical: 4,
1881
+ borderRadius: 6,
1882
+ backgroundColor: fps === '24' ? AppColors.purple : `${AppColors.purple}1A`,
1883
+ }}>
1884
+ <Text style={{
1885
+ fontFamily: AppFonts.interBold,
1886
+ fontSize: 10,
1887
+ color: fps === '24' ? AppColors.white : AppColors.purple,
1888
+ }}>
1889
+ {fps}fps
1890
+ </Text>
1891
+ </View>))}
1892
+ </View>),
1893
+ })}
1894
+
1895
+ {renderSettingRow({
1896
+ icon: <GifIcon color={AppColors.purple} size={16}/>,
1897
+ label: t('settings.media.gifAutoOpt', 'Auto GIF Optimization'),
1898
+ description: t('settings.media.gifAutoOptDesc', 'Automatic palette reduction and frame skip for lightweight animated GIFs'),
1899
+ isLast: true,
1900
+ right: (<View style={{
1901
+ paddingHorizontal: 8,
1902
+ paddingVertical: 4,
1903
+ borderRadius: 6,
1904
+ backgroundColor: `${AppColors.emerald500}26`,
1905
+ }}>
1906
+ <Text style={{
1907
+ fontFamily: AppFonts.interBold,
1908
+ fontSize: 10,
1909
+ color: AppColors.emerald500,
1910
+ }}>
1911
+ ON
1912
+ </Text>
1913
+ </View>),
1914
+ })}
1915
+ </View>
1916
+
1917
+
1918
+ <View style={{
1919
+ backgroundColor: AppColors.primaryLight,
1920
+ borderRadius: 14,
1921
+ borderWidth: 1,
1922
+ borderColor: AppColors.grayBorderSecondary,
1923
+ padding: 16,
1924
+ }}>
1925
+ {renderSettingRow({
1926
+ icon: <TrashIcon color={AppColors.errorColor} size={16}/>,
1927
+ label: t('settings.media.purgeAll', 'Purge Captured Media Cache'),
1928
+ description: t('settings.media.purgeAllDesc', 'Delete all local screenshots, screen recordings and converted GIFs'),
1929
+ isLast: true,
1930
+ onPress: () => {
1931
+ Alert.alert(t('settings.media.purgeConfirmTitle', 'Purge Media Storage?'), t('settings.media.purgeConfirmMessage', 'This will permanently delete all captured screenshots and videos from disk.'), [
1932
+ { text: t('common.cancel', 'Cancel'), style: 'cancel' },
1933
+ {
1934
+ text: t('settings.media.purgeCacheBtn', 'Purge All'),
1935
+ style: 'destructive',
1936
+ onPress: async () => {
1937
+ await ScreenCapture.clearAllMedia();
1938
+ showToast(t('settings.media.purgedSuccess', 'Media cache cleared successfully'));
1939
+ },
1940
+ },
1941
+ ]);
1942
+ },
1943
+ right: (<View style={{
1944
+ paddingHorizontal: 12,
1945
+ paddingVertical: 6,
1946
+ borderRadius: 8,
1947
+ backgroundColor: `${AppColors.errorColor}14`,
1948
+ borderWidth: 1,
1949
+ borderColor: `${AppColors.errorColor}33`,
1950
+ }}>
1951
+ <Text style={{
1952
+ fontFamily: AppFonts.interBold,
1953
+ fontSize: 11,
1954
+ lineHeight: 14,
1955
+ color: AppColors.errorColor,
1956
+ }}>
1957
+ {t('settings.media.purgeCacheBtn', 'Purge All')}
1958
+ </Text>
1959
+ </View>),
1960
+ })}
1961
+ </View>
1962
+ </View>)}
1963
+ {settingsActiveSubTab === 'about' && (<View style={{ gap: 14 }}>
1964
+
1965
+ <View style={{
1966
+ backgroundColor: AppColors.primaryLight,
1967
+ borderRadius: 14,
1968
+ borderWidth: 1,
1969
+ borderColor: AppColors.grayBorderSecondary,
1970
+ padding: 16,
1971
+ gap: 12,
1972
+ }}>
1973
+ <View style={{
1974
+ flexDirection: 'row',
1975
+ alignItems: 'center',
1976
+ justifyContent: 'space-between',
1977
+ }}>
1978
+ <View style={{
1979
+ flexDirection: 'row',
1980
+ alignItems: 'center',
1981
+ gap: 12,
1982
+ flex: 1,
1983
+ }}>
1984
+ <View style={{
1985
+ width: 44,
1986
+ height: 44,
1987
+ borderRadius: 12,
1988
+ backgroundColor: `${AppColors.purple}1A`,
1989
+ alignItems: 'center',
1990
+ justifyContent: 'center',
1991
+ borderWidth: 1,
1992
+ borderColor: `${AppColors.purple}33`,
1993
+ }}>
1994
+ <PackageIcon color={AppColors.purple} size={22}/>
1995
+ </View>
1996
+ <View style={{ flex: 1 }}>
1997
+ <View style={{
1998
+ flexDirection: 'row',
1999
+ alignItems: 'center',
2000
+ gap: 8,
2001
+ flexWrap: 'wrap',
2002
+ }}>
2003
+ <Text style={{
2004
+ fontFamily: AppFonts.interBold,
2005
+ fontSize: 15,
2006
+ lineHeight: 20,
2007
+ color: AppColors.primaryBlack,
2008
+ }}>
2009
+ In-App Inspector
2010
+ </Text>
2011
+ <View style={{
2012
+ backgroundColor: `${AppColors.purple}18`,
2013
+ paddingHorizontal: 7,
2014
+ paddingVertical: 2,
2015
+ borderRadius: 6,
2016
+ borderWidth: 1,
2017
+ borderColor: `${AppColors.purple}33`,
2018
+ }}>
2019
+ <Text style={{
2020
+ fontFamily: AppFonts.interBold,
2021
+ fontSize: 10,
2022
+ color: AppColors.purple,
2023
+ }}>
2024
+ v{LIB_VERSION}
2025
+ </Text>
2026
+ </View>
2027
+ {updateAvailable ? (<View style={{
2028
+ flexDirection: 'row',
2029
+ alignItems: 'center',
2030
+ gap: 3,
2031
+ backgroundColor: '#F59E0B20',
2032
+ paddingHorizontal: 6,
2033
+ paddingVertical: 2,
2034
+ borderRadius: 6,
2035
+ borderWidth: 1,
2036
+ borderColor: '#F59E0B60',
2037
+ }}>
2038
+ <Text style={{
2039
+ fontFamily: AppFonts.interBold,
2040
+ fontSize: 9.5,
2041
+ color: '#D97706',
2042
+ }}>
2043
+ v{latestNpmVersion} Available
2044
+ </Text>
2045
+ <BoltIcon size={9} color="#D97706"/>
2046
+ </View>) : (<View style={{
2047
+ backgroundColor: `${AppColors.emerald500}20`,
2048
+ paddingHorizontal: 6,
2049
+ paddingVertical: 2,
2050
+ borderRadius: 6,
2051
+ borderWidth: 1,
2052
+ borderColor: `${AppColors.emerald500}50`,
2053
+ }}>
2054
+ <Text style={{
2055
+ fontFamily: AppFonts.interBold,
2056
+ fontSize: 9.5,
2057
+ color: AppColors.emerald600,
2058
+ }}>
2059
+ Up to date
2060
+ </Text>
2061
+ </View>)}
2062
+ </View>
2063
+ <Text style={{
2064
+ fontFamily: AppFonts.interRegular,
2065
+ fontSize: 11,
2066
+ lineHeight: 15,
2067
+ color: AppColors.grayText,
2068
+ marginTop: 2,
2069
+ }}>
2070
+ react-native-inapp-inspector
2071
+ </Text>
2072
+ </View>
2073
+ </View>
2074
+ </View>
2075
+
2076
+ <Text style={{
2077
+ fontFamily: AppFonts.interRegular,
2078
+ fontSize: 11.5,
2079
+ lineHeight: 16,
2080
+ color: AppColors.grayText,
2081
+ }}>
2082
+ High-performance in-app debugging, network logging, console inspection, performance profiling, storage viewer & telemetry diagnostics for React Native.
2083
+ </Text>
2084
+
2085
+ {updateAvailable && (<TouchableScale onPress={() => {
2086
+ copyToClipboard('npm install react-native-inapp-inspector@latest', 'Install Command');
2087
+ showToast('Copied npm upgrade command!');
2088
+ }} style={{
2089
+ backgroundColor: AppColors.purple,
2090
+ paddingVertical: 8,
2091
+ paddingHorizontal: 12,
2092
+ borderRadius: 8,
2093
+ flexDirection: 'row',
2094
+ alignItems: 'center',
2095
+ justifyContent: 'center',
2096
+ gap: 6,
2097
+ }}>
2098
+ <BoltIcon size={12} color={AppColors.white}/>
2099
+ <Text style={{
2100
+ fontFamily: AppFonts.interBold,
2101
+ fontSize: 12,
2102
+ color: AppColors.white,
2103
+ }}>
2104
+ Copy Upgrade Command (v{latestNpmVersion})
2105
+ </Text>
2106
+ </TouchableScale>)}
2107
+ </View>
2108
+
2109
+
2110
+ <View style={{
2111
+ flexDirection: 'row',
2112
+ flexWrap: 'wrap',
2113
+ gap: 8,
2114
+ }}>
2115
+ <TouchableScale onPress={() => {
2116
+ Linking.openURL('https://github.com/vengatmacuser/react-native-inapp-inspector').catch(() => { });
2117
+ }} style={{
2118
+ flex: 1,
2119
+ minWidth: '47%',
2120
+ backgroundColor: `${AppColors.purple}0F`,
2121
+ borderRadius: 12,
2122
+ borderWidth: 1,
2123
+ borderColor: `${AppColors.purple}30`,
2124
+ paddingVertical: 10,
2125
+ paddingHorizontal: 12,
2126
+ flexDirection: 'row',
2127
+ alignItems: 'center',
2128
+ gap: 8,
2129
+ }}>
2130
+ <GitHubIcon color={AppColors.purple} size={18}/>
2131
+ <View style={{ flex: 1 }}>
2132
+ <Text style={{
2133
+ fontFamily: AppFonts.interBold,
2134
+ fontSize: 11.5,
2135
+ color: AppColors.primaryBlack,
2136
+ }}>
2137
+ ⭐ Star on GitHub
2138
+ </Text>
2139
+ <Text style={{
2140
+ fontFamily: AppFonts.interRegular,
2141
+ fontSize: 9.5,
2142
+ color: AppColors.grayText,
2143
+ }}>
2144
+ Support open source
2145
+ </Text>
2146
+ </View>
2147
+ </TouchableScale>
2148
+
2149
+ <TouchableScale onPress={() => {
2150
+ Linking.openURL('https://www.npmjs.com/package/react-native-inapp-inspector').catch(() => { });
2151
+ }} style={{
2152
+ flex: 1,
2153
+ minWidth: '47%',
2154
+ backgroundColor: AppColors.primaryLight,
2155
+ borderRadius: 12,
2156
+ borderWidth: 1,
2157
+ borderColor: AppColors.grayBorderSecondary,
2158
+ paddingVertical: 10,
2159
+ paddingHorizontal: 12,
2160
+ flexDirection: 'row',
2161
+ alignItems: 'center',
2162
+ gap: 8,
2163
+ }}>
2164
+ <NpmIcon color="#CB3837" size={18}/>
2165
+ <View style={{ flex: 1 }}>
2166
+ <Text style={{
2167
+ fontFamily: AppFonts.interBold,
2168
+ fontSize: 11.5,
2169
+ color: AppColors.primaryBlack,
2170
+ }}>
2171
+ NPM Registry
2172
+ </Text>
2173
+ <Text style={{
2174
+ fontFamily: AppFonts.interRegular,
2175
+ fontSize: 9.5,
2176
+ color: AppColors.grayText,
2177
+ }}>
2178
+ Package repository
2179
+ </Text>
2180
+ </View>
2181
+ </TouchableScale>
2182
+
2183
+ <TouchableScale onPress={() => {
2184
+ Linking.openURL('https://github.com/vengatmacuser/react-native-inapp-inspector#readme').catch(() => { });
2185
+ }} style={{
2186
+ flex: 1,
2187
+ minWidth: '47%',
2188
+ backgroundColor: AppColors.primaryLight,
2189
+ borderRadius: 12,
2190
+ borderWidth: 1,
2191
+ borderColor: AppColors.grayBorderSecondary,
2192
+ paddingVertical: 10,
2193
+ paddingHorizontal: 12,
2194
+ flexDirection: 'row',
2195
+ alignItems: 'center',
2196
+ gap: 8,
2197
+ }}>
2198
+ <Text style={{ fontSize: 16 }}>📖</Text>
2199
+ <View style={{ flex: 1 }}>
2200
+ <Text style={{
2201
+ fontFamily: AppFonts.interBold,
2202
+ fontSize: 11.5,
2203
+ color: AppColors.primaryBlack,
2204
+ }}>
2205
+ Documentation
2206
+ </Text>
2207
+ <Text style={{
2208
+ fontFamily: AppFonts.interRegular,
2209
+ fontSize: 9.5,
2210
+ color: AppColors.grayText,
2211
+ }}>
2212
+ Setup & API guide
2213
+ </Text>
2214
+ </View>
2215
+ </TouchableScale>
2216
+
2217
+ <TouchableScale onPress={() => {
2218
+ Linking.openURL('https://github.com/vengatmacuser/react-native-inapp-inspector/issues').catch(() => { });
2219
+ }} style={{
2220
+ flex: 1,
2221
+ minWidth: '47%',
2222
+ backgroundColor: AppColors.primaryLight,
2223
+ borderRadius: 12,
2224
+ borderWidth: 1,
2225
+ borderColor: AppColors.grayBorderSecondary,
2226
+ paddingVertical: 10,
2227
+ paddingHorizontal: 12,
2228
+ flexDirection: 'row',
2229
+ alignItems: 'center',
2230
+ gap: 8,
2231
+ }}>
2232
+ <Text style={{ fontSize: 16 }}>🐞</Text>
2233
+ <View style={{ flex: 1 }}>
2234
+ <Text style={{
2235
+ fontFamily: AppFonts.interBold,
2236
+ fontSize: 11.5,
2237
+ color: AppColors.primaryBlack,
2238
+ }}>
2239
+ Report Issue
2240
+ </Text>
2241
+ <Text style={{
2242
+ fontFamily: AppFonts.interRegular,
2243
+ fontSize: 9.5,
2244
+ color: AppColors.grayText,
2245
+ }}>
2246
+ Bugs & feature requests
2247
+ </Text>
2248
+ </View>
2249
+ </TouchableScale>
2250
+
2251
+ <TouchableScale onPress={() => {
2252
+ Linking.openURL('https://github.com/vengatmacuser/react-native-inapp-inspector/releases').catch(() => { });
2253
+ }} style={{
2254
+ flex: 1,
2255
+ minWidth: '47%',
2256
+ backgroundColor: AppColors.primaryLight,
2257
+ borderRadius: 12,
2258
+ borderWidth: 1,
2259
+ borderColor: AppColors.grayBorderSecondary,
2260
+ paddingVertical: 10,
2261
+ paddingHorizontal: 12,
2262
+ flexDirection: 'row',
2263
+ alignItems: 'center',
2264
+ gap: 8,
2265
+ }}>
2266
+ <Text style={{ fontSize: 16 }}>🏷️</Text>
2267
+ <View style={{ flex: 1 }}>
2268
+ <Text style={{
2269
+ fontFamily: AppFonts.interBold,
2270
+ fontSize: 11.5,
2271
+ color: AppColors.primaryBlack,
2272
+ }}>
2273
+ Release Notes
2274
+ </Text>
2275
+ <Text style={{
2276
+ fontFamily: AppFonts.interRegular,
2277
+ fontSize: 9.5,
2278
+ color: AppColors.grayText,
2279
+ }}>
2280
+ Version changelog
2281
+ </Text>
2282
+ </View>
2283
+ </TouchableScale>
2284
+
2285
+ <TouchableScale onPress={() => {
2286
+ const win = Dimensions.get('window');
2287
+ const scr = Dimensions.get('screen');
2288
+ const rnVer = Platform.constants?.reactNativeVersion;
2289
+ const specsPayload = {
2290
+ package: {
2291
+ name: 'react-native-inapp-inspector',
2292
+ version: `v${LIB_VERSION}`,
2293
+ latestNpmVersion: latestNpmVersion ? `v${latestNpmVersion}` : 'Checking...',
2294
+ license: 'MIT',
2295
+ repository: 'https://github.com/vengatmacuser/react-native-inapp-inspector',
2296
+ },
2297
+ hostApp: {
2298
+ name: getAppName(),
2299
+ bundleId: getBundleIdentifier(),
2300
+ versionAndBuild: getAppVersionAndBuild().formatted,
2301
+ buildVariant: __DEV__ ? 'Development (Debug)' : 'Production (Release)',
2302
+ metroConnected: isLocalDebugEnvironment(),
2303
+ },
2304
+ runtime: {
2305
+ reactNativeVersion: rnVer ? `${rnVer.major}.${rnVer.minor}.${rnVer.patch}` : '0.74+',
2306
+ reactVersion: React.version,
2307
+ jsEngine: Boolean(global?.HermesInternal) ? 'Hermes' : 'JavaScriptCore (JSC)',
2308
+ architecture: Boolean(global?.nativeFabricUIManager) ? 'Fabric (New Architecture)' : 'Paper (Legacy Bridge)',
2309
+ turboModules: Boolean(global?.__turboModuleProxy || global?.TurboModuleRegistry),
2310
+ },
2311
+ device: {
2312
+ platform: Platform.OS,
2313
+ osVersion: Platform.Version,
2314
+ deviceModel: Platform.constants?.Model || 'Unknown Device',
2315
+ windowDimensions: `${Math.round(win.width)}x${Math.round(win.height)} pt`,
2316
+ screenDimensions: `${Math.round(scr.width)}x${Math.round(scr.height)} pt`,
2317
+ pixelRatio: PixelRatio.get(),
2318
+ fontScale: PixelRatio.getFontScale(),
2319
+ timezone: Intl.DateTimeFormat().resolvedOptions().timeZone || 'Unknown',
2320
+ locale: Intl.DateTimeFormat().resolvedOptions().locale || 'en',
2321
+ },
2322
+ storageAndCapabilities: {
2323
+ storageEngine: isPersistentStorageAvailable() ? 'MMKV (Fast Native Storage)' : 'In-Memory State',
2324
+ hasNativeModule: Boolean(global?.NativeInspectorModule || global?.__IN_APP_INSPECTOR_NATIVE__),
2325
+ reduxConnected: isReduxConnected(),
2326
+ analyticsConnected: isAnalyticsConnected(),
2327
+ },
2328
+ };
2329
+ copyToClipboard(JSON.stringify(specsPayload, null, 2), 'Diagnostic Specifications');
2330
+ showToast('Copied full diagnostic specs to clipboard!');
2331
+ }} style={{
2332
+ flex: 1,
2333
+ minWidth: '47%',
2334
+ backgroundColor: AppColors.primaryLight,
2335
+ borderRadius: 12,
2336
+ borderWidth: 1,
2337
+ borderColor: AppColors.grayBorderSecondary,
2338
+ paddingVertical: 10,
2339
+ paddingHorizontal: 12,
2340
+ flexDirection: 'row',
2341
+ alignItems: 'center',
2342
+ gap: 8,
2343
+ }}>
2344
+ <CopyIcon color={AppColors.purple} size={16}/>
2345
+ <View style={{ flex: 1 }}>
2346
+ <Text style={{
2347
+ fontFamily: AppFonts.interBold,
2348
+ fontSize: 11.5,
2349
+ color: AppColors.primaryBlack,
2350
+ }}>
2351
+ Copy Specs JSON
2352
+ </Text>
2353
+ <Text style={{
2354
+ fontFamily: AppFonts.interRegular,
2355
+ fontSize: 9.5,
2356
+ color: AppColors.grayText,
2357
+ }}>
2358
+ Diagnostics payload
2359
+ </Text>
2360
+ </View>
2361
+ </TouchableScale>
2362
+ </View>
2363
+
2364
+
2365
+ <View style={{
2366
+ backgroundColor: AppColors.primaryLight,
2367
+ borderRadius: 14,
2368
+ borderWidth: 1,
2369
+ borderColor: AppColors.grayBorderSecondary,
2370
+ overflow: 'hidden',
2371
+ padding: 14,
2372
+ gap: 12,
2373
+ }}>
2374
+ <Text style={{
2375
+ fontFamily: AppFonts.interBold,
2376
+ fontSize: 11,
2377
+ lineHeight: 14,
2378
+ color: AppColors.grayTextWeak,
2379
+ letterSpacing: 0.8,
2380
+ }}>
2381
+ PACKAGE VERSION & UPGRADES
2382
+ </Text>
2383
+
2384
+ <View style={{
2385
+ flexDirection: 'row',
2386
+ alignItems: 'center',
2387
+ justifyContent: 'space-between',
2388
+ }}>
2389
+ <View style={{
2390
+ flexDirection: 'row',
2391
+ alignItems: 'center',
2392
+ gap: 10,
2393
+ flex: 1,
2394
+ marginRight: 8,
2395
+ }}>
2396
+ <View style={{
2397
+ width: 34,
2398
+ height: 34,
2399
+ borderRadius: 9,
2400
+ backgroundColor: '#CB383715',
2401
+ alignItems: 'center',
2402
+ justifyContent: 'center',
2403
+ }}>
2404
+ <NpmIcon color="#CB3837" size={17}/>
2405
+ </View>
2406
+ <View style={{ flex: 1 }}>
2407
+ <View style={{
2408
+ flexDirection: 'row',
2409
+ alignItems: 'center',
2410
+ gap: 6,
2411
+ }}>
2412
+ <Text style={{
2413
+ fontFamily: AppFonts.interBold,
2414
+ fontSize: 14,
2415
+ lineHeight: 18,
2416
+ color: AppColors.primaryBlack,
2417
+ }}>
2418
+ v{LIB_VERSION}
2419
+ </Text>
2420
+ {updateAvailable ? (<View style={{
2421
+ flexDirection: 'row',
2422
+ alignItems: 'center',
2423
+ gap: 3,
2424
+ backgroundColor: '#F59E0B20',
2425
+ paddingHorizontal: 6,
2426
+ paddingVertical: 1.5,
2427
+ borderRadius: 5,
2428
+ borderWidth: 1,
2429
+ borderColor: '#F59E0B60',
2430
+ }}>
2431
+ <Text style={{
2432
+ fontFamily: AppFonts.interBold,
2433
+ fontSize: 9.5,
2434
+ color: '#D97706',
2435
+ }}>
2436
+ v{latestNpmVersion} Available
2437
+ </Text>
2438
+ <BoltIcon size={9} color="#D97706"/>
2439
+ </View>) : (<View style={{
2440
+ backgroundColor: `${AppColors.emerald500}20`,
2441
+ paddingHorizontal: 6,
2442
+ paddingVertical: 1.5,
2443
+ borderRadius: 5,
2444
+ borderWidth: 1,
2445
+ borderColor: `${AppColors.emerald500}50`,
2446
+ }}>
2447
+ <Text style={{
2448
+ fontFamily: AppFonts.interBold,
2449
+ fontSize: 9.5,
2450
+ color: AppColors.emerald600,
2451
+ }}>
2452
+ Up to date
2453
+ </Text>
2454
+ </View>)}
2455
+ </View>
2456
+ <Text style={{
2457
+ fontFamily: AppFonts.interRegular,
2458
+ fontSize: 11,
2459
+ lineHeight: 15,
2460
+ color: AppColors.grayText,
2461
+ marginTop: 1,
2462
+ }}>
2463
+ {updateAvailable
2464
+ ? `A newer release (v${latestNpmVersion}) is available on npm registry.`
2465
+ : 'You are running the latest version from npm registry.'}
2466
+ </Text>
2467
+ </View>
2468
+ </View>
2469
+
2470
+ <TouchableScale onPress={() => {
2471
+ copyToClipboard('npm install react-native-inapp-inspector@latest', 'Install Command');
2472
+ showToast('Copied npm install command!');
2473
+ }} style={{
2474
+ backgroundColor: updateAvailable ? AppColors.purple : `${AppColors.purple}18`,
2475
+ paddingVertical: 7,
2476
+ paddingHorizontal: 11,
2477
+ borderRadius: 8,
2478
+ flexDirection: 'row',
2479
+ alignItems: 'center',
2480
+ gap: 5,
2481
+ }}>
2482
+ <CopyIcon color={updateAvailable ? AppColors.white : AppColors.purple} size={12}/>
2483
+ <Text style={{
2484
+ fontFamily: AppFonts.interBold,
2485
+ fontSize: 11,
2486
+ color: updateAvailable ? AppColors.white : AppColors.purple,
2487
+ }}>
2488
+ {updateAvailable ? 'Copy Upgrade' : 'Copy Install'}
2489
+ </Text>
2490
+ </TouchableScale>
2491
+ </View>
2492
+ </View>
2493
+
2494
+
2495
+ <View style={{
2496
+ backgroundColor: AppColors.primaryLight,
2497
+ borderRadius: 14,
2498
+ borderWidth: 1,
2499
+ borderColor: AppColors.grayBorderSecondary,
2500
+ padding: 14,
2501
+ gap: 10,
2502
+ }}>
2503
+ <Text style={{
2504
+ fontFamily: AppFonts.interBold,
2505
+ fontSize: 11,
2506
+ lineHeight: 14,
2507
+ color: AppColors.grayTextWeak,
2508
+ letterSpacing: 0.8,
2509
+ }}>
2510
+ HOST APPLICATION & BUILD
2511
+ </Text>
2512
+
2513
+ <View style={{ gap: 8 }}>
2514
+ <View style={{ flexDirection: 'row', justifyContent: 'space-between', alignItems: 'center' }}>
2515
+ <Text style={{ fontFamily: AppFonts.interRegular, fontSize: 11.5, color: AppColors.grayText }}>
2516
+ Application Name
2517
+ </Text>
2518
+ <Text style={{ fontFamily: AppFonts.interBold, fontSize: 11.5, color: AppColors.primaryBlack }}>
2519
+ {getAppName()}
2520
+ </Text>
2521
+ </View>
2522
+
2523
+ <View style={{ flexDirection: 'row', justifyContent: 'space-between', alignItems: 'center' }}>
2524
+ <Text style={{ fontFamily: AppFonts.interRegular, fontSize: 11.5, color: AppColors.grayText }}>
2525
+ Bundle ID / Package
2526
+ </Text>
2527
+ <Text style={{ fontFamily: AppFonts.interRegular, fontSize: 11, color: AppColors.primaryBlack }}>
2528
+ {getBundleIdentifier()}
2529
+ </Text>
2530
+ </View>
2531
+
2532
+ <View style={{ flexDirection: 'row', justifyContent: 'space-between', alignItems: 'center' }}>
2533
+ <Text style={{ fontFamily: AppFonts.interRegular, fontSize: 11.5, color: AppColors.grayText }}>
2534
+ Version & Build Number
2535
+ </Text>
2536
+ <Text style={{ fontFamily: AppFonts.interBold, fontSize: 11.5, color: AppColors.primaryBlack }}>
2537
+ {getAppVersionAndBuild().formatted}
2538
+ </Text>
2539
+ </View>
2540
+
2541
+ <View style={{ flexDirection: 'row', justifyContent: 'space-between', alignItems: 'center' }}>
2542
+ <Text style={{ fontFamily: AppFonts.interRegular, fontSize: 11.5, color: AppColors.grayText }}>
2543
+ Build Variant
2544
+ </Text>
2545
+ <View style={{
2546
+ backgroundColor: __DEV__ ? `${AppColors.amber500}20` : `${AppColors.emerald500}20`,
2547
+ paddingHorizontal: 6,
2548
+ paddingVertical: 1.5,
2549
+ borderRadius: 5,
2550
+ borderWidth: 1,
2551
+ borderColor: __DEV__ ? `${AppColors.amber500}50` : `${AppColors.emerald500}50`,
2552
+ }}>
2553
+ <Text style={{
2554
+ fontFamily: AppFonts.interBold,
2555
+ fontSize: 10,
2556
+ color: __DEV__ ? AppColors.amber500 : AppColors.emerald600,
2557
+ }}>
2558
+ {__DEV__ ? 'Development (Debug)' : 'Production (Release)'}
2559
+ </Text>
2560
+ </View>
2561
+ </View>
2562
+
2563
+ <View style={{ flexDirection: 'row', justifyContent: 'space-between', alignItems: 'center' }}>
2564
+ <Text style={{ fontFamily: AppFonts.interRegular, fontSize: 11.5, color: AppColors.grayText }}>
2565
+ Metro Bundler Connection
2566
+ </Text>
2567
+ <Text style={{
2568
+ fontFamily: AppFonts.interBold,
2569
+ fontSize: 11.5,
2570
+ color: isLocalDebugEnvironment() ? AppColors.emerald600 : AppColors.grayText,
2571
+ }}>
2572
+ {isLocalDebugEnvironment() ? 'Connected (Hot Reload Active)' : 'Offline / Standalone'}
2573
+ </Text>
2574
+ </View>
2575
+ </View>
2576
+ </View>
2577
+
2578
+
2579
+ <View style={{
2580
+ backgroundColor: AppColors.primaryLight,
2581
+ borderRadius: 14,
2582
+ borderWidth: 1,
2583
+ borderColor: AppColors.grayBorderSecondary,
2584
+ padding: 14,
2585
+ gap: 10,
2586
+ }}>
2587
+ <Text style={{
2588
+ fontFamily: AppFonts.interBold,
2589
+ fontSize: 11,
2590
+ lineHeight: 14,
2591
+ color: AppColors.grayTextWeak,
2592
+ letterSpacing: 0.8,
2593
+ }}>
2594
+ FRAMEWORK & RUNTIME ENGINE
2595
+ </Text>
2596
+
2597
+ <View style={{ gap: 8 }}>
2598
+ <View style={{ flexDirection: 'row', justifyContent: 'space-between', alignItems: 'center' }}>
2599
+ <Text style={{ fontFamily: AppFonts.interRegular, fontSize: 11.5, color: AppColors.grayText }}>
2600
+ React Native Version
2601
+ </Text>
2602
+ <Text style={{ fontFamily: AppFonts.interBold, fontSize: 11.5, color: AppColors.primaryBlack }}>
2603
+ v{(Platform.constants?.reactNativeVersion?.major != null)
2604
+ ? `${Platform.constants.reactNativeVersion.major}.${Platform.constants.reactNativeVersion.minor}.${Platform.constants.reactNativeVersion.patch}`
2605
+ : '0.74+'}
2606
+ </Text>
2607
+ </View>
2608
+
2609
+ <View style={{ flexDirection: 'row', justifyContent: 'space-between', alignItems: 'center' }}>
2610
+ <Text style={{ fontFamily: AppFonts.interRegular, fontSize: 11.5, color: AppColors.grayText }}>
2611
+ React Core Version
2612
+ </Text>
2613
+ <Text style={{ fontFamily: AppFonts.interBold, fontSize: 11.5, color: AppColors.primaryBlack }}>
2614
+ v{React.version}
2615
+ </Text>
2616
+ </View>
2617
+
2618
+ <View style={{ flexDirection: 'row', justifyContent: 'space-between', alignItems: 'center' }}>
2619
+ <Text style={{ fontFamily: AppFonts.interRegular, fontSize: 11.5, color: AppColors.grayText }}>
2620
+ JavaScript Engine
2621
+ </Text>
2622
+ <View style={{
2623
+ backgroundColor: `${AppColors.purple}15`,
2624
+ paddingHorizontal: 6,
2625
+ paddingVertical: 1.5,
2626
+ borderRadius: 5,
2627
+ borderWidth: 1,
2628
+ borderColor: `${AppColors.purple}40`,
2629
+ }}>
2630
+ <Text style={{ fontFamily: AppFonts.interBold, fontSize: 10.5, color: AppColors.purple }}>
2631
+ {Boolean(global?.HermesInternal) ? 'Hermes Engine (Active)' : 'JavaScriptCore (JSC)'}
2632
+ </Text>
2633
+ </View>
2634
+ </View>
2635
+
2636
+ <View style={{ flexDirection: 'row', justifyContent: 'space-between', alignItems: 'center' }}>
2637
+ <Text style={{ fontFamily: AppFonts.interRegular, fontSize: 11.5, color: AppColors.grayText }}>
2638
+ Rendering Architecture
2639
+ </Text>
2640
+ <Text style={{ fontFamily: AppFonts.interBold, fontSize: 11.5, color: AppColors.primaryBlack }}>
2641
+ {Boolean(global?.nativeFabricUIManager) ? 'Fabric (New Architecture)' : 'Paper (Legacy Bridge)'}
2642
+ </Text>
2643
+ </View>
2644
+
2645
+ <View style={{ flexDirection: 'row', justifyContent: 'space-between', alignItems: 'center' }}>
2646
+ <Text style={{ fontFamily: AppFonts.interRegular, fontSize: 11.5, color: AppColors.grayText }}>
2647
+ TurboModules Support
2648
+ </Text>
2649
+ <Text style={{ fontFamily: AppFonts.interBold, fontSize: 11.5, color: AppColors.primaryBlack }}>
2650
+ {Boolean(global?.__turboModuleProxy || global?.TurboModuleRegistry)
2651
+ ? 'Enabled (C++ JSI)'
2652
+ : 'Standard Bridge'}
2653
+ </Text>
2654
+ </View>
2655
+ </View>
2656
+ </View>
2657
+
2658
+
2659
+ <View style={{
2660
+ backgroundColor: AppColors.primaryLight,
2661
+ borderRadius: 14,
2662
+ borderWidth: 1,
2663
+ borderColor: AppColors.grayBorderSecondary,
2664
+ padding: 14,
2665
+ gap: 10,
2666
+ }}>
2667
+ <Text style={{
2668
+ fontFamily: AppFonts.interBold,
2669
+ fontSize: 11,
2670
+ lineHeight: 14,
2671
+ color: AppColors.grayTextWeak,
2672
+ letterSpacing: 0.8,
2673
+ }}>
2674
+ DEVICE & DISPLAY METRICS
2675
+ </Text>
2676
+
2677
+ <View style={{ gap: 8 }}>
2678
+ <View style={{ flexDirection: 'row', justifyContent: 'space-between', alignItems: 'center' }}>
2679
+ <Text style={{ fontFamily: AppFonts.interRegular, fontSize: 11.5, color: AppColors.grayText }}>
2680
+ Operating System
2681
+ </Text>
2682
+ <Text style={{ fontFamily: AppFonts.interBold, fontSize: 11.5, color: AppColors.primaryBlack }}>
2683
+ {Platform.OS === 'ios' ? 'Apple iOS' : Platform.OS === 'android' ? 'Google Android' : Platform.OS}{' '}
2684
+ {Platform.Version}
2685
+ </Text>
2686
+ </View>
2687
+
2688
+ <View style={{ flexDirection: 'row', justifyContent: 'space-between', alignItems: 'center' }}>
2689
+ <Text style={{ fontFamily: AppFonts.interRegular, fontSize: 11.5, color: AppColors.grayText }}>
2690
+ Device Hardware Model
2691
+ </Text>
2692
+ <Text style={{ fontFamily: AppFonts.interBold, fontSize: 11.5, color: AppColors.primaryBlack }}>
2693
+ {Platform.constants?.Model ||
2694
+ (Platform.OS === 'ios' ? 'Apple Device' : 'Android Device')}
2695
+ </Text>
2696
+ </View>
2697
+
2698
+ <View style={{ flexDirection: 'row', justifyContent: 'space-between', alignItems: 'center' }}>
2699
+ <Text style={{ fontFamily: AppFonts.interRegular, fontSize: 11.5, color: AppColors.grayText }}>
2700
+ Window Viewport (Points)
2701
+ </Text>
2702
+ <Text style={{ fontFamily: AppFonts.interBold, fontSize: 11.5, color: AppColors.primaryBlack }}>
2703
+ {Math.round(Dimensions.get('window').width)} × {Math.round(Dimensions.get('window').height)} pt
2704
+ </Text>
2705
+ </View>
2706
+
2707
+ <View style={{ flexDirection: 'row', justifyContent: 'space-between', alignItems: 'center' }}>
2708
+ <Text style={{ fontFamily: AppFonts.interRegular, fontSize: 11.5, color: AppColors.grayText }}>
2709
+ Native Physical Resolution
2710
+ </Text>
2711
+ <Text style={{ fontFamily: AppFonts.interBold, fontSize: 11.5, color: AppColors.primaryBlack }}>
2712
+ {Math.round(Dimensions.get('screen').width * PixelRatio.get())} × {Math.round(Dimensions.get('screen').height * PixelRatio.get())} px
2713
+ </Text>
2714
+ </View>
2715
+
2716
+ <View style={{ flexDirection: 'row', justifyContent: 'space-between', alignItems: 'center' }}>
2717
+ <Text style={{ fontFamily: AppFonts.interRegular, fontSize: 11.5, color: AppColors.grayText }}>
2718
+ Pixel Density & Font Scale
2719
+ </Text>
2720
+ <Text style={{ fontFamily: AppFonts.interBold, fontSize: 11.5, color: AppColors.primaryBlack }}>
2721
+ {PixelRatio.get().toFixed(1)}x ({PixelRatio.get() >= 3 ? '@3x' : PixelRatio.get() >= 2 ? '@2x' : '@1x'}) • Font: {PixelRatio.getFontScale().toFixed(2)}x
2722
+ </Text>
2723
+ </View>
2724
+
2725
+ <View style={{ flexDirection: 'row', justifyContent: 'space-between', alignItems: 'center' }}>
2726
+ <Text style={{ fontFamily: AppFonts.interRegular, fontSize: 11.5, color: AppColors.grayText }}>
2727
+ Timezone & Locale
2728
+ </Text>
2729
+ <Text style={{ fontFamily: AppFonts.interBold, fontSize: 11.5, color: AppColors.primaryBlack }}>
2730
+ {Intl.DateTimeFormat().resolvedOptions().timeZone || 'System'} ({Intl.DateTimeFormat().resolvedOptions().locale || 'en'})
2731
+ </Text>
2732
+ </View>
2733
+ </View>
2734
+ </View>
2735
+
2736
+
2737
+ <View style={{
2738
+ backgroundColor: AppColors.primaryLight,
2739
+ borderRadius: 14,
2740
+ borderWidth: 1,
2741
+ borderColor: AppColors.grayBorderSecondary,
2742
+ padding: 14,
2743
+ gap: 10,
2744
+ }}>
2745
+ <Text style={{
2746
+ fontFamily: AppFonts.interBold,
2747
+ fontSize: 11,
2748
+ lineHeight: 14,
2749
+ color: AppColors.grayTextWeak,
2750
+ letterSpacing: 0.8,
2751
+ }}>
2752
+ INSPECTOR STORAGE & CAPABILITIES
2753
+ </Text>
2754
+
2755
+ <View style={{ gap: 8 }}>
2756
+ <View style={{ flexDirection: 'row', justifyContent: 'space-between', alignItems: 'center' }}>
2757
+ <Text style={{ fontFamily: AppFonts.interRegular, fontSize: 11.5, color: AppColors.grayText }}>
2758
+ Storage Persistence Engine
2759
+ </Text>
2760
+ <View style={{
2761
+ backgroundColor: isPersistentStorageAvailable() ? `${AppColors.emerald500}18` : `${AppColors.amber500}18`,
2762
+ paddingHorizontal: 6,
2763
+ paddingVertical: 1.5,
2764
+ borderRadius: 5,
2765
+ borderWidth: 1,
2766
+ borderColor: isPersistentStorageAvailable() ? `${AppColors.emerald500}50` : `${AppColors.amber500}50`,
2767
+ }}>
2768
+ <Text style={{
2769
+ fontFamily: AppFonts.interBold,
2770
+ fontSize: 10.5,
2771
+ color: isPersistentStorageAvailable() ? AppColors.emerald600 : AppColors.amber500,
2772
+ }}>
2773
+ {isPersistentStorageAvailable() ? 'MMKV Fast Native Storage' : 'In-Memory State'}
2774
+ </Text>
2775
+ </View>
2776
+ </View>
2777
+
2778
+ <View style={{ flexDirection: 'row', justifyContent: 'space-between', alignItems: 'center' }}>
2779
+ <Text style={{ fontFamily: AppFonts.interRegular, fontSize: 11.5, color: AppColors.grayText }}>
2780
+ Native Module Status
2781
+ </Text>
2782
+ <Text style={{
2783
+ fontFamily: AppFonts.interBold,
2784
+ fontSize: 11.5,
2785
+ color: Boolean(global?.NativeInspectorModule) ? AppColors.emerald600 : AppColors.grayText,
2786
+ }}>
2787
+ {Boolean(global?.NativeInspectorModule) ? 'Linked & Active' : 'JavaScript Only'}
2788
+ </Text>
2789
+ </View>
2790
+
2791
+ <View style={{ flexDirection: 'row', justifyContent: 'space-between', alignItems: 'center' }}>
2792
+ <Text style={{ fontFamily: AppFonts.interRegular, fontSize: 11.5, color: AppColors.grayText }}>
2793
+ Network Logger Interceptor
2794
+ </Text>
2795
+ <Text style={{ fontFamily: AppFonts.interBold, fontSize: 11.5, color: AppColors.emerald600 }}>
2796
+ Active (XMLHttpRequest & Fetch Hooked)
2797
+ </Text>
2798
+ </View>
2799
+
2800
+ <View style={{ flexDirection: 'row', justifyContent: 'space-between', alignItems: 'center' }}>
2801
+ <Text style={{ fontFamily: AppFonts.interRegular, fontSize: 11.5, color: AppColors.grayText }}>
2802
+ Redux & Analytics Watchers
2803
+ </Text>
2804
+ <Text style={{ fontFamily: AppFonts.interBold, fontSize: 11.5, color: AppColors.primaryBlack }}>
2805
+ Redux: {isReduxConnected() ? 'Connected' : 'Listening'} • Analytics: {isAnalyticsConnected() ? 'Connected' : 'Listening'}
2806
+ </Text>
2807
+ </View>
2808
+
2809
+ <View style={{ flexDirection: 'row', justifyContent: 'space-between', alignItems: 'center' }}>
2810
+ <Text style={{ fontFamily: AppFonts.interRegular, fontSize: 11.5, color: AppColors.grayText }}>
2811
+ Crash & Exception Boundary
2812
+ </Text>
2813
+ <Text style={{ fontFamily: AppFonts.interBold, fontSize: 11.5, color: AppColors.emerald600 }}>
2814
+ Global JS Exception Handler Active
2815
+ </Text>
2816
+ </View>
2817
+
2818
+ <View style={{ flexDirection: 'row', justifyContent: 'space-between', alignItems: 'center' }}>
2819
+ <Text style={{ fontFamily: AppFonts.interRegular, fontSize: 11.5, color: AppColors.grayText }}>
2820
+ Memory Management
2821
+ </Text>
2822
+ <Text style={{ fontFamily: AppFonts.interBold, fontSize: 11.5, color: AppColors.emerald600 }}>
2823
+ Dynamic Auto RAM Tiering Active
2824
+ </Text>
2825
+ </View>
2826
+ </View>
2827
+ </View>
2828
+
2829
+
2830
+ <View style={{
2831
+ backgroundColor: AppColors.primaryLight,
2832
+ borderRadius: 14,
2833
+ borderWidth: 1,
2834
+ borderColor: AppColors.grayBorderSecondary,
2835
+ padding: 14,
2836
+ gap: 8,
2837
+ }}>
2838
+ <Text style={{
2839
+ fontFamily: AppFonts.interBold,
2840
+ fontSize: 11,
2841
+ lineHeight: 14,
2842
+ color: AppColors.grayTextWeak,
2843
+ letterSpacing: 0.8,
2844
+ }}>
2845
+ LICENSE & CREDITS
2846
+ </Text>
2847
+
2848
+ <View style={{ flexDirection: 'row', justifyContent: 'space-between', alignItems: 'center' }}>
2849
+ <Text style={{ fontFamily: AppFonts.interRegular, fontSize: 11.5, color: AppColors.grayText }}>
2850
+ License
2851
+ </Text>
2852
+ <Text style={{ fontFamily: AppFonts.interBold, fontSize: 11.5, color: AppColors.emerald600 }}>
2853
+ MIT Permissive Open Source
2854
+ </Text>
2855
+ </View>
2856
+
2857
+ <View style={{ flexDirection: 'row', justifyContent: 'space-between', alignItems: 'center' }}>
2858
+ <Text style={{ fontFamily: AppFonts.interRegular, fontSize: 11.5, color: AppColors.grayText }}>
2859
+ Created & Maintained By
2860
+ </Text>
2861
+ <Text style={{ fontFamily: AppFonts.interBold, fontSize: 11.5, color: AppColors.primaryBlack }}>
2862
+ Vengateswaran
2863
+ </Text>
2864
+ </View>
2865
+
2866
+ <View style={{ flexDirection: 'row', justifyContent: 'space-between', alignItems: 'center' }}>
2867
+ <Text style={{ fontFamily: AppFonts.interRegular, fontSize: 11.5, color: AppColors.grayText }}>
2868
+ Repository
2869
+ </Text>
2870
+ <Text style={{ fontFamily: AppFonts.interRegular, fontSize: 11, color: AppColors.purple }}>
2871
+ github.com/vengatmacuser/react-native-inapp-inspector
2872
+ </Text>
2873
+ </View>
2874
+ </View>
2875
+ </View>)}
1769
2876
  <View style={{ height: 48 }}/>
1770
2877
  </ScrollView>
1771
2878