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,6 +1,18 @@
1
- import {Platform} from 'react-native';
1
+ import React from 'react';
2
+ import {Appearance, Dimensions, PixelRatio, Platform, NativeModules} from 'react-native';
2
3
  import {LIB_VERSION} from '../constants/version';
3
- import {loadSettings, saveSettings} from './settingsStore';
4
+ import {loadSettings, saveSettings, PersistedSettings} from './settingsStore';
5
+ import {isReduxConnected} from '../customHooks/reduxLogger';
6
+ import {isFirebaseAnalyticsPatched} from '../customHooks/analyticsLogger';
7
+ import {getCrashRecords} from '../customHooks/crashHandler';
8
+ import {getNetworkLogs} from '../customHooks/networkLogger';
9
+ import {isNativeModuleAvailable} from '../native/NativeInspector';
10
+ import {
11
+ getAppName,
12
+ getBundleIdentifier,
13
+ getAppVersionAndBuild,
14
+ isLocalDebugEnvironment,
15
+ } from './index';
4
16
  import {
5
17
  ENC_MID,
6
18
  ENC_SEC,
@@ -77,21 +89,36 @@ function getCollectUrl(): string {
77
89
  const PING_INTERVAL_MS = 24 * 60 * 60 * 1000;
78
90
 
79
91
  let isTelemetryEnabled = true;
92
+ let _hasSearchFilterBeenUsed = false;
80
93
 
81
94
  export function setTelemetryEnabled(enabled: boolean): void {
82
95
  isTelemetryEnabled = enabled;
83
96
  }
84
97
 
98
+ export function markSearchFilterUsed(): void {
99
+ _hasSearchFilterBeenUsed = true;
100
+ }
101
+
85
102
  async function getOrCreateClientId(): Promise<string> {
86
103
  try {
87
104
  const settings = await loadSettings();
88
- if (settings.telemetryClientId) {
89
- return settings.telemetryClientId;
105
+ if (settings.telemetryClientId || settings.telemetryDeviceId) {
106
+ const id = settings.telemetryClientId || settings.telemetryDeviceId || '';
107
+ if (!settings.telemetryDeviceId) {
108
+ await saveSettings({...settings, telemetryDeviceId: id});
109
+ }
110
+ return id;
90
111
  }
91
112
  const part1 = Math.floor(100000000 + Math.random() * 900000000);
92
113
  const part2 = Math.floor(1000000000 + Math.random() * 9000000000);
93
114
  const newId = `${part1}.${part2}`;
94
- saveSettings({...settings, telemetryClientId: newId});
115
+ const now = Date.now();
116
+ await saveSettings({
117
+ ...settings,
118
+ telemetryClientId: newId,
119
+ telemetryDeviceId: newId,
120
+ deviceFirstSeen: settings.deviceFirstSeen || now,
121
+ });
95
122
  return newId;
96
123
  } catch {
97
124
  return `${Math.floor(100000000 + Math.random() * 900000000)}.${Math.floor(1000000000 + Math.random() * 9000000000)}`;
@@ -130,7 +157,27 @@ function isDeviceEmulator(): boolean {
130
157
  return false;
131
158
  }
132
159
 
133
- function getSystemMetadata(environment?: string) {
160
+ function getDeviceLocaleInfo(): {countryCode: string; locale: string; timeZone: string} {
161
+ try {
162
+ const opts = typeof Intl !== 'undefined' && Intl.DateTimeFormat ? Intl.DateTimeFormat().resolvedOptions() : {} as any;
163
+ const timeZone = opts.timeZone || 'unknown';
164
+ const locale = opts.locale || 'unknown';
165
+ let countryCode = 'unknown';
166
+
167
+ if (locale && locale !== 'unknown') {
168
+ const parts = locale.split(/[-_]/);
169
+ if (parts.length > 1) {
170
+ countryCode = parts[parts.length - 1].toUpperCase();
171
+ }
172
+ }
173
+
174
+ return { countryCode, locale, timeZone };
175
+ } catch {
176
+ return { countryCode: 'unknown', locale: 'unknown', timeZone: 'unknown' };
177
+ }
178
+ }
179
+
180
+ function getSystemMetadata(environment?: string, currentSettings?: PersistedSettings) {
134
181
  const rnConstants = Platform.constants as any;
135
182
  const rnVersion = rnConstants?.reactNativeVersion
136
183
  ? `${rnConstants.reactNativeVersion.major}.${rnConstants.reactNativeVersion.minor}.${rnConstants.reactNativeVersion.patch}`
@@ -138,20 +185,172 @@ function getSystemMetadata(environment?: string) {
138
185
 
139
186
  const isHermes = Boolean(typeof (global as any).HermesInternal === 'object' && (global as any).HermesInternal !== null);
140
187
  const isFabric = Boolean((global as any)?.nativeFabricUIManager !== undefined);
188
+ const isBridgeless = Boolean((global as any)?._rn_bridgeless || (global as any)?.RN$Bridgeless);
141
189
  const isDev = Boolean(typeof __DEV__ !== 'undefined' && __DEV__);
142
190
  const isEmulator = isDeviceEmulator();
191
+ const { countryCode, locale, timeZone } = getDeviceLocaleInfo();
192
+
193
+ let screenRes = 'unknown';
194
+ let screenDensity = 1;
195
+ let fontScale = 1;
196
+ let deviceFormFactor = 'phone';
197
+ let screenOrientation = 'portrait';
198
+ try {
199
+ const dim = Dimensions.get('window');
200
+ screenRes = `${Math.round(dim.width)}x${Math.round(dim.height)}`;
201
+ screenDensity = PixelRatio.get();
202
+ fontScale = PixelRatio.getFontScale();
203
+ screenOrientation = dim.width > dim.height ? 'landscape' : 'portrait';
204
+ const isTablet = (Platform.OS === 'ios' && Boolean((Platform as any).isPad)) ||
205
+ (Math.min(dim.width, dim.height) >= 600);
206
+ deviceFormFactor = isTablet ? 'tablet' : 'phone';
207
+ } catch {}
208
+
209
+ let appearanceMode = 'unknown';
210
+ try {
211
+ appearanceMode = Appearance?.getColorScheme?.() || 'unknown';
212
+ } catch {}
213
+
214
+ const isExpo = Boolean(
215
+ (globalThis as any)?.expo ||
216
+ (globalThis as any)?.__expo ||
217
+ (globalThis as any)?.__turboModuleProxy?.name === 'Expo' ||
218
+ (Platform.constants as any)?.ExpoVersion
219
+ );
220
+
221
+ let hermesVersion = 'non_hermes';
222
+ let jsEngine = 'jsc';
223
+ if (isHermes) {
224
+ jsEngine = 'hermes';
225
+ try {
226
+ const props = (global as any).HermesInternal?.getRuntimeProperties?.() || {};
227
+ hermesVersion = props['OSS Release Version'] || (props['Bytecode Version'] ? `bc_v${props['Bytecode Version']}` : 'hermes');
228
+ } catch {
229
+ hermesVersion = 'hermes';
230
+ }
231
+ } else if ((globalThis as any)?._v8) {
232
+ jsEngine = 'v8';
233
+ }
234
+
235
+ let reduxAttached = false;
236
+ try {
237
+ reduxAttached = isReduxConnected();
238
+ } catch {}
239
+
240
+ let analyticsAttached = false;
241
+ try {
242
+ analyticsAttached = isFirebaseAnalyticsPatched();
243
+ } catch {}
244
+
245
+ const hasNativeModule = isNativeModuleAvailable();
246
+ const hasMmkv = Boolean(NativeModules?.RNMMKV || (globalThis as any)?.MMKV);
247
+
248
+ let capturedCrashesCount = 0;
249
+ try {
250
+ capturedCrashesCount = getCrashRecords().length;
251
+ } catch {}
252
+
253
+ let capturedApisBracket = '0';
254
+ try {
255
+ const apiCount = getNetworkLogs().length;
256
+ capturedApisBracket =
257
+ apiCount === 0
258
+ ? '0'
259
+ : apiCount <= 10
260
+ ? '1-10'
261
+ : apiCount <= 50
262
+ ? '11-50'
263
+ : apiCount <= 100
264
+ ? '51-100'
265
+ : '100+';
266
+ } catch {}
267
+
268
+ let isMetroConnected = false;
269
+ try {
270
+ isMetroConnected = isLocalDebugEnvironment();
271
+ } catch {}
272
+
273
+ const defaultLandingTab = currentSettings?.defaultTab || 'apis';
274
+ const fabMode =
275
+ hasNativeModule && currentSettings?.useNativeFab !== false
276
+ ? 'native_ui_thread'
277
+ : 'js_floating_button';
278
+
279
+ const deviceBrand = String(
280
+ rnConstants?.Brand ||
281
+ (Platform.OS === 'ios' ? 'Apple' : 'unknown'),
282
+ );
283
+
284
+ const deviceModel = String(
285
+ rnConstants?.Model ||
286
+ rnConstants?.systemName ||
287
+ (Platform.OS === 'ios' ? 'iPhone/iPad' : 'unknown'),
288
+ );
289
+
290
+ const deviceManufacturer = String(
291
+ rnConstants?.Manufacturer ||
292
+ (Platform.OS === 'ios' ? 'Apple' : 'unknown'),
293
+ );
294
+
295
+ let appName = 'App';
296
+ let bundleId = 'unknown';
297
+ let appVersion = 'unknown';
298
+ let appBuild = 'unknown';
299
+ try {
300
+ appName = getAppName() || 'App';
301
+ bundleId = getBundleIdentifier() || 'unknown';
302
+ const verInfo = getAppVersionAndBuild();
303
+ appVersion = verInfo.version || 'unknown';
304
+ appBuild = verInfo.build || 'unknown';
305
+ } catch {}
306
+
307
+ const reactVer = typeof React !== 'undefined' && React.version ? React.version : 'unknown';
143
308
 
144
309
  return {
310
+ pkg_name: PKG_NAME,
311
+ pkg_version: LIB_VERSION,
145
312
  lib_version: LIB_VERSION,
313
+ install_type: isDev ? 'local_dev' : 'bundled_production',
314
+ app_name: appName,
315
+ bundle_id: bundleId,
316
+ app_version: appVersion,
317
+ app_build: appBuild,
318
+ react_version: reactVer,
146
319
  platform: Platform.OS,
147
320
  os_version: String(Platform.Version || 'unknown'),
148
321
  rn_version: rnVersion,
322
+ country_code: countryCode,
323
+ device_locale: locale,
324
+ time_zone: timeZone,
325
+ device_brand: deviceBrand,
326
+ device_model: deviceModel,
327
+ device_manufacturer: deviceManufacturer,
328
+ device_form_factor: deviceFormFactor,
329
+ screen_resolution: screenRes,
330
+ screen_density: screenDensity,
331
+ screen_orientation: screenOrientation,
332
+ font_scale: fontScale,
333
+ appearance_mode: appearanceMode,
334
+ is_expo: isExpo,
335
+ js_engine: jsEngine,
336
+ hermes_version: hermesVersion,
149
337
  is_hermes: isHermes,
150
338
  is_fabric: isFabric,
339
+ is_bridgeless: isBridgeless,
340
+ has_native_module: hasNativeModule,
341
+ has_mmkv: hasMmkv,
342
+ fab_mode: fabMode,
343
+ default_landing_tab: defaultLandingTab,
344
+ captured_crashes_count: capturedCrashesCount,
345
+ captured_apis_bracket: capturedApisBracket,
346
+ search_filter_used: _hasSearchFilterBeenUsed,
347
+ is_metro_connected: isMetroConnected,
151
348
  is_dev: isDev,
152
349
  is_emulator: isEmulator,
153
350
  device_type: isEmulator ? 'emulator' : 'real_device',
154
351
  app_mode: isDev ? 'local_mode' : 'bundled_application',
352
+ redux_attached: reduxAttached,
353
+ analytics_attached: analyticsAttached,
155
354
  environment: environment || (isDev ? 'DEV' : 'PROD'),
156
355
  engagement_time_msec: 1000,
157
356
  };
@@ -174,24 +373,196 @@ export async function trackActiveTelemetryHeartbeat(
174
373
  const settings = await loadSettings();
175
374
  const lastPing = settings.telemetryLastPing || 0;
176
375
  const now = Date.now();
376
+ const isNewDevice = !settings.deviceRegistered;
177
377
 
178
- if (now - lastPing < PING_INTERVAL_MS) return;
378
+ // Send on first launch or if 24h passed since last ping
379
+ if (!isNewDevice && now - lastPing < PING_INTERVAL_MS) return;
179
380
 
180
381
  const clientId = await getOrCreateClientId();
181
- const params = getSystemMetadata(environment);
382
+ const params = getSystemMetadata(environment, settings);
383
+
384
+ const deviceParams = {
385
+ ...params,
386
+ device_id: clientId,
387
+ is_new_device: isNewDevice,
388
+ device_first_seen: settings.deviceFirstSeen || now,
389
+ };
390
+
391
+ const eventsToDispatch = isNewDevice
392
+ ? [
393
+ {name: 'active_device', params: deviceParams},
394
+ {name: 'first_device_install', params: deviceParams},
395
+ {name: 'inspector_active_heartbeat', params: deviceParams},
396
+ ]
397
+ : [
398
+ {name: 'active_device', params: deviceParams},
399
+ {name: 'inspector_active_heartbeat', params: deviceParams},
400
+ ];
182
401
 
183
402
  await fetch(url, {
184
403
  method: 'POST',
185
404
  headers: {'Content-Type': 'application/json'},
186
405
  body: JSON.stringify({
187
406
  client_id: clientId,
407
+ user_id: clientId,
188
408
  non_personalized_ads: true,
189
- events: [{name: 'inspector_active_heartbeat', params}],
409
+ user_properties: {
410
+ device_id: { value: clientId },
411
+ pkg_name: { value: params.pkg_name },
412
+ pkg_version: { value: params.pkg_version },
413
+ install_type: { value: params.install_type },
414
+ app_name: { value: params.app_name },
415
+ bundle_id: { value: params.bundle_id },
416
+ app_version: { value: params.app_version },
417
+ react_version: { value: params.react_version },
418
+ country: { value: params.country_code },
419
+ country_code: { value: params.country_code },
420
+ locale: { value: params.device_locale },
421
+ time_zone: { value: params.time_zone },
422
+ device_brand: { value: params.device_brand },
423
+ device_model: { value: params.device_model },
424
+ device_form_factor: { value: params.device_form_factor },
425
+ screen_resolution: { value: params.screen_resolution },
426
+ appearance_mode: { value: params.appearance_mode },
427
+ is_expo: { value: String(params.is_expo) },
428
+ js_engine: { value: params.js_engine },
429
+ is_fabric: { value: String(params.is_fabric) },
430
+ is_bridgeless: { value: String(params.is_bridgeless) },
431
+ has_native_module: { value: String(params.has_native_module) },
432
+ has_mmkv: { value: String(params.has_mmkv) },
433
+ fab_mode: { value: params.fab_mode },
434
+ default_landing_tab: { value: params.default_landing_tab },
435
+ captured_crashes_count: { value: String(params.captured_crashes_count) },
436
+ captured_apis_bracket: { value: params.captured_apis_bracket },
437
+ search_filter_used: { value: String(params.search_filter_used) },
438
+ is_metro_connected: { value: String(params.is_metro_connected) },
439
+ redux_attached: { value: String(params.redux_attached) },
440
+ analytics_attached: { value: String(params.analytics_attached) },
441
+ platform: { value: params.platform },
442
+ rn_version: { value: params.rn_version },
443
+ lib_version: { value: params.lib_version },
444
+ },
445
+ events: eventsToDispatch,
190
446
  }),
191
447
  });
192
448
 
193
- saveSettings({...settings, telemetryLastPing: now});
449
+ await saveSettings({
450
+ ...settings,
451
+ telemetryClientId: clientId,
452
+ telemetryDeviceId: clientId,
453
+ deviceRegistered: true,
454
+ deviceFirstSeen: settings.deviceFirstSeen || now,
455
+ telemetryLastPing: now,
456
+ telemetryLastActive: now,
457
+ });
194
458
  } catch {
195
459
  // silent
196
460
  }
197
461
  }
462
+
463
+ export async function trackTelemetryEvent(
464
+ eventName: string,
465
+ eventParams?: Record<string, any>,
466
+ ): Promise<void> {
467
+ if (!isTelemetryEnabled) return;
468
+ const url = getCollectUrl();
469
+ if (!url) return;
470
+
471
+ try {
472
+ const clientId = await getOrCreateClientId();
473
+ const settings = await loadSettings().catch(() => ({} as PersistedSettings));
474
+ const metadata = getSystemMetadata(undefined, settings);
475
+
476
+ const params = {
477
+ ...metadata,
478
+ device_id: clientId,
479
+ ...eventParams,
480
+ engagement_time_msec: 100,
481
+ };
482
+
483
+ await fetch(url, {
484
+ method: 'POST',
485
+ headers: {'Content-Type': 'application/json'},
486
+ body: JSON.stringify({
487
+ client_id: clientId,
488
+ user_id: clientId,
489
+ non_personalized_ads: true,
490
+ user_properties: {
491
+ device_id: { value: clientId },
492
+ pkg_name: { value: metadata.pkg_name },
493
+ pkg_version: { value: metadata.pkg_version },
494
+ install_type: { value: metadata.install_type },
495
+ app_name: { value: metadata.app_name },
496
+ bundle_id: { value: metadata.bundle_id },
497
+ app_version: { value: metadata.app_version },
498
+ react_version: { value: metadata.react_version },
499
+ country: { value: metadata.country_code },
500
+ country_code: { value: metadata.country_code },
501
+ locale: { value: metadata.device_locale },
502
+ time_zone: { value: metadata.time_zone },
503
+ device_brand: { value: metadata.device_brand },
504
+ device_model: { value: metadata.device_model },
505
+ device_form_factor: { value: metadata.device_form_factor },
506
+ screen_resolution: { value: metadata.screen_resolution },
507
+ appearance_mode: { value: metadata.appearance_mode },
508
+ is_expo: { value: String(metadata.is_expo) },
509
+ js_engine: { value: metadata.js_engine },
510
+ is_fabric: { value: String(metadata.is_fabric) },
511
+ is_bridgeless: { value: String(metadata.is_bridgeless) },
512
+ has_native_module: { value: String(metadata.has_native_module) },
513
+ has_mmkv: { value: String(metadata.has_mmkv) },
514
+ fab_mode: { value: metadata.fab_mode },
515
+ default_landing_tab: { value: metadata.default_landing_tab },
516
+ captured_crashes_count: { value: String(metadata.captured_crashes_count) },
517
+ captured_apis_bracket: { value: metadata.captured_apis_bracket },
518
+ search_filter_used: { value: String(metadata.search_filter_used) },
519
+ is_metro_connected: { value: String(metadata.is_metro_connected) },
520
+ redux_attached: { value: String(metadata.redux_attached) },
521
+ analytics_attached: { value: String(metadata.analytics_attached) },
522
+ platform: { value: metadata.platform },
523
+ rn_version: { value: metadata.rn_version },
524
+ lib_version: { value: metadata.lib_version },
525
+ },
526
+ events: [{ name: eventName, params }],
527
+ }),
528
+ });
529
+ } catch {
530
+ // silent
531
+ }
532
+ }
533
+
534
+ /**
535
+ * Tracks when a developer opens/switches tabs in the In-App Inspector (e.g. APIs, Logs, Redux, Performance, Storage, etc.)
536
+ */
537
+ export function trackInspectorTabView(tabName: string): void {
538
+ trackTelemetryEvent('inspector_tab_view', {
539
+ tab_name: tabName,
540
+ screen_name: `tab_${tabName}`,
541
+ screen_class: 'NetworkInspector',
542
+ });
543
+ }
544
+
545
+ /**
546
+ * Tracks screen views within the In-App Inspector
547
+ */
548
+ export function trackInspectorScreenView(screenName: string): void {
549
+ trackTelemetryEvent('screen_view', {
550
+ screen_name: screenName,
551
+ screen_class: 'NetworkInspector',
552
+ });
553
+ }
554
+
555
+ /**
556
+ * Tracks screen / performance recording events
557
+ */
558
+ export function trackInspectorScreenRecord(
559
+ action: 'start' | 'stop' | 'toggle',
560
+ recordingType = 'screen',
561
+ ): void {
562
+ trackTelemetryEvent('inspector_screen_record', {
563
+ action,
564
+ recording_type: recordingType,
565
+ });
566
+ }
567
+
568
+
@@ -24,7 +24,19 @@
24
24
  "updateAvailableTitle": "Update Available",
25
25
  "updateAvailableMessage": "react-native-inapp-inspector v{{version}} is available on NPM (installed: v{{installed}}).",
26
26
  "clearEverythingTitle": "Clear Everything",
27
- "clearEverythingMessage": "This clears all tabs — APIs, Logs, Analytics and Redux timeline. Continue?",
27
+ "clearEverythingMessage": "This clears all tabs — APIs, Logs, Analytics, Redux timeline and Crash history. Continue?",
28
+ "photo": "Photo",
29
+ "record": "Record",
30
+ "rec": "REC",
31
+ "clear": "Clear",
32
+ "about": "About",
33
+ "screenshotCaptured": "📸 Screenshot captured & saved",
34
+ "screenshotFailed": "Failed to capture screenshot",
35
+ "screenshotError": "Error taking screenshot",
36
+ "recordingStarted": "🔴 Video recording started",
37
+ "recordingSaved": "🎥 Recording saved ({{duration}}s)",
38
+ "recordingError": "Recording error",
39
+ "recordingStartFailed": "Failed to start recording",
28
40
  "paramCount": "{{count}} param",
29
41
  "paramCount_plural": "{{count}} params",
30
42
  "sourceFirebase": "FB",
@@ -41,8 +53,10 @@
41
53
  "performance": "Performance",
42
54
  "crash": "Crash",
43
55
  "device": "Device",
44
- "storage": "Storage"
56
+ "storage": "Storage",
57
+ "media": "Media"
45
58
  },
59
+
46
60
  "settings": {
47
61
  "mainTitle": "Settings & Modules",
48
62
  "mainSubtitle": "Manage modules and preferences",
@@ -58,6 +72,7 @@
58
72
  "modulesAndTools": "Modules & Tools",
59
73
  "uiPreferences": "UI & Display",
60
74
  "ramLimits": "RAM & Limits",
75
+ "screenVideoCapture": "Screen & Video Capture",
61
76
  "zeroOverheadTitle": "Zero Background Overhead",
62
77
  "zeroOverheadDesc": "Check the modules you wish to activate. Disabled modules consume 0% CPU & memory until saved.",
63
78
  "unsavedPending": "● Unsaved selections pending",
@@ -161,7 +176,34 @@
161
176
  "clearHistoryDesc": "{{count}} crash logs stored",
162
177
  "historyCleared": "Crash logs cleared."
163
178
  },
179
+ "media": {
180
+ "title": "Screen & Video Capture",
181
+ "badge": "Native H.264 / GIF",
182
+ "desc": "Configure screenshot formats, quality, video FPS, audio narration, GIF recording & storage",
183
+ "screenshotCardTitle": "Screenshot Formats & Quality",
184
+ "screenshotCardDesc": "High-resolution full-window snapshot configuration",
185
+ "imageFormat": "Image Format",
186
+ "imageFormatDesc": "PNG (lossless), JPEG (compact), or WEBP",
187
+ "autoHide": "Auto-Hide Inspector Overlay",
188
+ "autoHideDesc": "Excludes inspector UI from screenshots",
189
+ "enabled": "ENABLED",
190
+ "videoCardTitle": "Video & GIF Recording",
191
+ "videoCardDesc": "H.264 MP4 recording & animated GIF export",
192
+ "audioMode": "Audio Narration Mode",
193
+ "audioModeDesc": "Muted, App Audio, or Voice Narration",
194
+ "frameRate": "Frame Rate",
195
+ "frameRateDesc": "Higher FPS yields smoother recordings",
196
+ "gifAutoOpt": "GIF Auto-Optimization",
197
+ "gifAutoOptDesc": "Converts video recordings for GitHub PRs & Slack",
198
+ "purgeAll": "Purge All Captured Media",
199
+ "purgeAllDesc": "Deletes all stored screenshots, videos, and GIFs",
200
+ "purgeCacheBtn": "Purge Cache",
201
+ "purgeConfirmTitle": "Purge Media Storage",
202
+ "purgeConfirmMessage": "This deletes all captured media files from local cache. Continue?",
203
+ "purgedSuccess": "Media storage purged"
204
+ },
164
205
  "general": {
206
+
165
207
  "darkMode": "Dark Mode Theme",
166
208
  "darkModeDescription": "Toggle sleek dark aesthetic or light contrast",
167
209
  "modalHeight": "Inspector Window Height",
@@ -1054,5 +1096,30 @@
1054
1096
  "frameCopy": "Copy",
1055
1097
  "frameCopied": "Copied",
1056
1098
  "componentHierarchy": "Component Hierarchy"
1099
+ },
1100
+ "mediaGallery": {
1101
+ "all": "All ({{count}})",
1102
+ "photos": "Photos",
1103
+ "videos": "Videos",
1104
+ "gifs": "GIFs",
1105
+ "purge": "Purge ({{size}})",
1106
+ "purgeTitle": "Purge All Media",
1107
+ "purgeMessage": "This will permanently delete all {{count}} captured screenshots, videos, and GIFs ({{size}}). Continue?",
1108
+ "noMediaTitle": "No Captured Media",
1109
+ "noMediaDesc": "Use the Photo or Video Record button in the toolbar to capture whole-app screenshots, screen recordings, or GIFs.",
1110
+ "deleted": "Deleted media item",
1111
+ "allPurged": "All captured media purged",
1112
+ "converting": "Converting...",
1113
+ "convertToGif": "Convert to GIF",
1114
+ "convertedSuccess": "Converted to Animated GIF successfully!",
1115
+ "convertFailed": "Failed to convert to GIF",
1116
+ "share": "Share",
1117
+ "copyUri": "Copy URI",
1118
+ "uriCopied": "File URI copied to clipboard",
1119
+ "delete": "Delete",
1120
+ "deleteTitle": "Delete Media",
1121
+ "deleteMessage": "Are you sure you want to delete {{filename}}?",
1122
+ "shareUnavailable": "Sharing not available on this device"
1057
1123
  }
1058
1124
  }
1125
+