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
@@ -0,0 +1,532 @@
1
+ import React, {useEffect, useRef, useState} from 'react';
2
+ import {
3
+ Animated,
4
+ Linking,
5
+ Modal,
6
+ Platform,
7
+ StyleSheet,
8
+ Text,
9
+ TouchableOpacity,
10
+ View,
11
+ } from 'react-native';
12
+ import {AppColors} from '../../styles/AppColors';
13
+ import {AppFonts} from '../../styles/AppFonts';
14
+ import TouchableScale from '../TouchableScale';
15
+ import {loadSettings, saveSettings} from '../../helpers/settingsStore';
16
+ import {trackTelemetryEvent} from '../../helpers/telemetry';
17
+ import {
18
+ StarIcon,
19
+ CloseWhite,
20
+ CheckIcon,
21
+ GitHubIcon,
22
+ NpmIcon,
23
+ ClockIcon,
24
+ } from '../NetworkIcons';
25
+
26
+ // 5-day interval in milliseconds
27
+ const FIVE_DAYS_MS = 5 * 24 * 60 * 60 * 1000;
28
+ const GITHUB_REPO_URL =
29
+ 'https://github.com/vengatmacuser/react-native-inapp-inspector';
30
+ const NPM_PACKAGE_URL =
31
+ 'https://www.npmjs.com/package/react-native-inapp-inspector';
32
+
33
+ export const NpmStarPrompt: React.FC = () => {
34
+ const [isOpen, setIsOpen] = useState(false);
35
+ const slideAnim = useRef(new Animated.Value(200)).current;
36
+ const fadeAnim = useRef(new Animated.Value(0)).current;
37
+ const pulseAnim = useRef(new Animated.Value(1)).current;
38
+
39
+ useEffect(() => {
40
+ let isMounted = true;
41
+
42
+ async function checkEligibility() {
43
+ try {
44
+ const settings = await loadSettings();
45
+
46
+ // 1. If user already actioned the prompt, never show again permanently
47
+ if (settings.starPromptActioned) {
48
+ return;
49
+ }
50
+
51
+ const now = Date.now();
52
+ const firstSeen = settings.starPromptFirstSeen || now;
53
+
54
+ // If first seen is not set, initialize it
55
+ if (!settings.starPromptFirstSeen) {
56
+ await saveSettings({
57
+ ...settings,
58
+ starPromptFirstSeen: now,
59
+ });
60
+ }
61
+
62
+ const lastShown = settings.starPromptLastShown || firstSeen;
63
+ const timeElapsed = now - lastShown;
64
+
65
+ // 2. Check if at least 5 days have passed since last prompt / first install
66
+ if (timeElapsed >= FIVE_DAYS_MS) {
67
+ // Random probability factor to make it feel natural across sessions
68
+ const shouldShow = Math.random() < 0.65;
69
+ if (shouldShow && isMounted) {
70
+ // Delay slightly after modal open so it does not interfere with startup
71
+ setTimeout(() => {
72
+ if (isMounted) {
73
+ openPrompt();
74
+ }
75
+ }, 1800);
76
+ }
77
+ }
78
+ } catch {
79
+ // silent fallback
80
+ }
81
+ }
82
+
83
+ checkEligibility();
84
+
85
+ return () => {
86
+ isMounted = false;
87
+ };
88
+ }, []);
89
+
90
+ const openPrompt = async () => {
91
+ setIsOpen(true);
92
+ try {
93
+ const settings = await loadSettings();
94
+ await saveSettings({
95
+ ...settings,
96
+ starPromptLastShown: Date.now(),
97
+ });
98
+ trackTelemetryEvent('npm_star_prompt_shown', {
99
+ trigger: '5_day_interval',
100
+ platform: Platform.OS,
101
+ });
102
+ } catch {}
103
+
104
+ Animated.parallel([
105
+ Animated.spring(slideAnim, {
106
+ toValue: 0,
107
+ friction: 8,
108
+ tension: 50,
109
+ useNativeDriver: true,
110
+ }),
111
+ Animated.timing(fadeAnim, {
112
+ toValue: 1,
113
+ duration: 250,
114
+ useNativeDriver: true,
115
+ }),
116
+ ]).start();
117
+
118
+ // Subtle star pulse animation
119
+ Animated.loop(
120
+ Animated.sequence([
121
+ Animated.timing(pulseAnim, {
122
+ toValue: 1.15,
123
+ duration: 900,
124
+ useNativeDriver: true,
125
+ }),
126
+ Animated.timing(pulseAnim, {
127
+ toValue: 1,
128
+ duration: 900,
129
+ useNativeDriver: true,
130
+ }),
131
+ ]),
132
+ ).start();
133
+ };
134
+
135
+ const closePrompt = (callback?: () => void) => {
136
+ Animated.parallel([
137
+ Animated.timing(fadeAnim, {
138
+ toValue: 0,
139
+ duration: 180,
140
+ useNativeDriver: true,
141
+ }),
142
+ Animated.timing(slideAnim, {
143
+ toValue: 200,
144
+ duration: 180,
145
+ useNativeDriver: true,
146
+ }),
147
+ ]).start(() => {
148
+ setIsOpen(false);
149
+ if (callback) callback();
150
+ });
151
+ };
152
+
153
+ const handleStarNow = async () => {
154
+ try {
155
+ const settings = await loadSettings();
156
+ await saveSettings({
157
+ ...settings,
158
+ starPromptActioned: true,
159
+ });
160
+ trackTelemetryEvent('npm_star_prompt_action', {
161
+ action: 'starred',
162
+ platform: Platform.OS,
163
+ });
164
+ } catch {}
165
+
166
+ closePrompt(() => {
167
+ Linking.openURL(GITHUB_REPO_URL).catch(() => {
168
+ Linking.openURL(NPM_PACKAGE_URL).catch(() => {});
169
+ });
170
+ });
171
+ };
172
+
173
+ const handleAlreadyStarred = async () => {
174
+ try {
175
+ const settings = await loadSettings();
176
+ await saveSettings({
177
+ ...settings,
178
+ starPromptActioned: true,
179
+ });
180
+ trackTelemetryEvent('npm_star_prompt_action', {
181
+ action: 'already_starred',
182
+ platform: Platform.OS,
183
+ });
184
+ } catch {}
185
+
186
+ closePrompt();
187
+ };
188
+
189
+ const handleRemindLater = async () => {
190
+ try {
191
+ const settings = await loadSettings();
192
+ await saveSettings({
193
+ ...settings,
194
+ starPromptLastShown: Date.now(),
195
+ });
196
+ trackTelemetryEvent('npm_star_prompt_action', {
197
+ action: 'remind_later',
198
+ platform: Platform.OS,
199
+ });
200
+ } catch {}
201
+
202
+ closePrompt();
203
+ };
204
+
205
+ const handleDontAskAgain = async () => {
206
+ try {
207
+ const settings = await loadSettings();
208
+ await saveSettings({
209
+ ...settings,
210
+ starPromptActioned: true,
211
+ });
212
+ trackTelemetryEvent('npm_star_prompt_action', {
213
+ action: 'dont_ask_again',
214
+ platform: Platform.OS,
215
+ });
216
+ } catch {}
217
+
218
+ closePrompt();
219
+ };
220
+
221
+ if (!isOpen) return null;
222
+
223
+ return (
224
+ <Modal
225
+ transparent
226
+ visible={isOpen}
227
+ animationType="none"
228
+ onRequestClose={handleRemindLater}>
229
+ <Animated.View
230
+ style={[
231
+ styles.backdrop,
232
+ {
233
+ opacity: fadeAnim,
234
+ },
235
+ ]}>
236
+ <TouchableOpacity
237
+ style={StyleSheet.absoluteFill}
238
+ activeOpacity={1}
239
+ onPress={handleRemindLater}
240
+ />
241
+
242
+ <Animated.View
243
+ style={[
244
+ styles.cardContainer,
245
+ {
246
+ transform: [{translateY: slideAnim}],
247
+ },
248
+ ]}>
249
+ {/* Glowing Star Icon Header */}
250
+ <View style={styles.headerIconWrapper}>
251
+ <Animated.View
252
+ style={[
253
+ styles.iconGlow,
254
+ {
255
+ transform: [{scale: pulseAnim}],
256
+ },
257
+ ]}
258
+ />
259
+ <View style={styles.iconCircle}>
260
+ <StarIcon size={26} color="#F59E0B" />
261
+ </View>
262
+ </View>
263
+
264
+ {/* Close X */}
265
+ <TouchableOpacity
266
+ onPress={handleRemindLater}
267
+ hitSlop={{top: 10, bottom: 10, left: 10, right: 10}}
268
+ style={styles.closeBtn}>
269
+ <CloseWhite size={12} color={AppColors.grayText} />
270
+ </TouchableOpacity>
271
+
272
+ {/* Pill Badge */}
273
+ <View style={styles.pillBadge}>
274
+ <Text style={styles.pillBadgeText}>SUPPORT OPEN SOURCE</Text>
275
+ </View>
276
+
277
+ {/* Title & Description */}
278
+ <Text style={styles.title}>Enjoying In-App Inspector?</Text>
279
+ <Text style={styles.description}>
280
+ If this debugging tool saves you time, please consider giving us a
281
+ star on GitHub & npm. Your support helps us build more features!
282
+ </Text>
283
+
284
+ {/* Quick Metrics Bar */}
285
+ <View style={styles.metricsBar}>
286
+ <View style={styles.metricItem}>
287
+ <GitHubIcon size={13} color={AppColors.grayText} />
288
+ <Text style={styles.metricText}>GitHub Star</Text>
289
+ </View>
290
+ <View style={styles.metricDot} />
291
+ <View style={styles.metricItem}>
292
+ <NpmIcon size={13} color="#CB3837" />
293
+ <Text style={styles.metricText}>npm Package</Text>
294
+ </View>
295
+ <View style={styles.metricDot} />
296
+ <View style={styles.metricItem}>
297
+ <Text style={styles.metricText}>100% Free</Text>
298
+ </View>
299
+ </View>
300
+
301
+ {/* Primary Button: Star on GitHub */}
302
+ <TouchableScale
303
+ accessible={true}
304
+ accessibilityRole="button"
305
+ accessibilityLabel="Star on GitHub"
306
+ onPress={handleStarNow}
307
+ style={styles.primaryButton}>
308
+ <View style={styles.primaryButtonContent}>
309
+ <StarIcon size={16} color={AppColors.white} />
310
+ <Text style={styles.primaryButtonText}>⭐ Star on GitHub & npm</Text>
311
+ </View>
312
+ </TouchableScale>
313
+
314
+ {/* Secondary Action: Already Starred */}
315
+ <TouchableScale
316
+ accessible={true}
317
+ accessibilityRole="button"
318
+ accessibilityLabel="I already starred"
319
+ onPress={handleAlreadyStarred}
320
+ style={styles.secondaryButton}>
321
+ <View style={styles.secondaryButtonContent}>
322
+ <CheckIcon size={13} color={AppColors.purple} />
323
+ <Text style={styles.secondaryButtonText}>I Already Starred</Text>
324
+ </View>
325
+ </TouchableScale>
326
+
327
+ {/* Bottom Link Row: Remind Later & Don't Ask Again */}
328
+ <View style={styles.footerRow}>
329
+ <TouchableOpacity
330
+ onPress={handleRemindLater}
331
+ hitSlop={{top: 8, bottom: 8, left: 8, right: 8}}>
332
+ <Text style={styles.footerLinkText}>Remind Me Later</Text>
333
+ </TouchableOpacity>
334
+
335
+ <View style={styles.footerSeparator} />
336
+
337
+ <TouchableOpacity
338
+ onPress={handleDontAskAgain}
339
+ hitSlop={{top: 8, bottom: 8, left: 8, right: 8}}>
340
+ <Text style={styles.footerLinkTextMuted}>Don't Ask Again</Text>
341
+ </TouchableOpacity>
342
+ </View>
343
+ </Animated.View>
344
+ </Animated.View>
345
+ </Modal>
346
+ );
347
+ };
348
+
349
+ const styles = StyleSheet.create({
350
+ backdrop: {
351
+ ...StyleSheet.absoluteFillObject,
352
+ backgroundColor: 'rgba(15, 23, 42, 0.65)',
353
+ justifyContent: 'center',
354
+ alignItems: 'center',
355
+ paddingHorizontal: 20,
356
+ zIndex: 99999,
357
+ },
358
+ cardContainer: {
359
+ width: '100%',
360
+ maxWidth: 380,
361
+ backgroundColor: AppColors.white,
362
+ borderRadius: 22,
363
+ padding: 22,
364
+ alignItems: 'center',
365
+ shadowColor: AppColors.black,
366
+ shadowOffset: {width: 0, height: 8},
367
+ shadowOpacity: 0.22,
368
+ shadowRadius: 20,
369
+ elevation: 12,
370
+ borderWidth: 1.5,
371
+ borderColor: `${AppColors.purple}25`,
372
+ },
373
+ headerIconWrapper: {
374
+ position: 'relative',
375
+ alignItems: 'center',
376
+ justifyContent: 'center',
377
+ marginBottom: 12,
378
+ },
379
+ iconGlow: {
380
+ position: 'absolute',
381
+ width: 68,
382
+ height: 68,
383
+ borderRadius: 34,
384
+ backgroundColor: '#F59E0B22',
385
+ },
386
+ iconCircle: {
387
+ width: 54,
388
+ height: 54,
389
+ borderRadius: 27,
390
+ backgroundColor: '#FEF3C7',
391
+ borderWidth: 2,
392
+ borderColor: '#FDE68A',
393
+ alignItems: 'center',
394
+ justifyContent: 'center',
395
+ },
396
+ closeBtn: {
397
+ position: 'absolute',
398
+ top: 14,
399
+ right: 14,
400
+ width: 28,
401
+ height: 28,
402
+ borderRadius: 14,
403
+ backgroundColor: AppColors.grayBackground,
404
+ alignItems: 'center',
405
+ justifyContent: 'center',
406
+ },
407
+ pillBadge: {
408
+ backgroundColor: `${AppColors.purple}14`,
409
+ paddingHorizontal: 9,
410
+ paddingVertical: 3,
411
+ borderRadius: 10,
412
+ marginBottom: 8,
413
+ },
414
+ pillBadgeText: {
415
+ fontFamily: AppFonts.interBold,
416
+ fontSize: 9.5,
417
+ color: AppColors.purple,
418
+ letterSpacing: 0.6,
419
+ },
420
+ title: {
421
+ fontFamily: AppFonts.interBold,
422
+ fontSize: 18,
423
+ lineHeight: 23,
424
+ color: AppColors.primaryBlack,
425
+ textAlign: 'center',
426
+ marginBottom: 6,
427
+ },
428
+ description: {
429
+ fontFamily: AppFonts.interRegular,
430
+ fontSize: 12.5,
431
+ lineHeight: 18,
432
+ color: AppColors.grayText,
433
+ textAlign: 'center',
434
+ marginBottom: 14,
435
+ paddingHorizontal: 8,
436
+ },
437
+ metricsBar: {
438
+ flexDirection: 'row',
439
+ alignItems: 'center',
440
+ justifyContent: 'center',
441
+ backgroundColor: AppColors.grayBackground,
442
+ paddingVertical: 7,
443
+ paddingHorizontal: 14,
444
+ borderRadius: 10,
445
+ marginBottom: 16,
446
+ gap: 8,
447
+ },
448
+ metricItem: {
449
+ flexDirection: 'row',
450
+ alignItems: 'center',
451
+ gap: 4,
452
+ },
453
+ metricText: {
454
+ fontFamily: AppFonts.interMedium,
455
+ fontSize: 11,
456
+ color: AppColors.primaryBlack,
457
+ },
458
+ metricDot: {
459
+ width: 3.5,
460
+ height: 3.5,
461
+ borderRadius: 2,
462
+ backgroundColor: AppColors.dividerColor,
463
+ },
464
+ primaryButton: {
465
+ width: '100%',
466
+ backgroundColor: AppColors.purple,
467
+ borderRadius: 12,
468
+ paddingVertical: 12,
469
+ alignItems: 'center',
470
+ justifyContent: 'center',
471
+ marginBottom: 8,
472
+ shadowColor: AppColors.purple,
473
+ shadowOffset: {width: 0, height: 4},
474
+ shadowOpacity: 0.3,
475
+ shadowRadius: 8,
476
+ elevation: 4,
477
+ },
478
+ primaryButtonContent: {
479
+ flexDirection: 'row',
480
+ alignItems: 'center',
481
+ gap: 7,
482
+ },
483
+ primaryButtonText: {
484
+ fontFamily: AppFonts.interBold,
485
+ fontSize: 14,
486
+ color: AppColors.white,
487
+ },
488
+ secondaryButton: {
489
+ width: '100%',
490
+ backgroundColor: `${AppColors.purple}10`,
491
+ borderWidth: 1,
492
+ borderColor: `${AppColors.purple}30`,
493
+ borderRadius: 12,
494
+ paddingVertical: 10,
495
+ alignItems: 'center',
496
+ justifyContent: 'center',
497
+ marginBottom: 14,
498
+ },
499
+ secondaryButtonContent: {
500
+ flexDirection: 'row',
501
+ alignItems: 'center',
502
+ gap: 6,
503
+ },
504
+ secondaryButtonText: {
505
+ fontFamily: AppFonts.interBold,
506
+ fontSize: 13,
507
+ color: AppColors.purple,
508
+ },
509
+ footerRow: {
510
+ flexDirection: 'row',
511
+ alignItems: 'center',
512
+ justifyContent: 'center',
513
+ gap: 12,
514
+ },
515
+ footerLinkText: {
516
+ fontFamily: AppFonts.interMedium,
517
+ fontSize: 11.5,
518
+ color: AppColors.grayText,
519
+ },
520
+ footerSeparator: {
521
+ width: 1,
522
+ height: 12,
523
+ backgroundColor: AppColors.dividerColor,
524
+ },
525
+ footerLinkTextMuted: {
526
+ fontFamily: AppFonts.interRegular,
527
+ fontSize: 11.5,
528
+ color: AppColors.grayTextWeak,
529
+ },
530
+ });
531
+
532
+ export default NpmStarPrompt;
@@ -14,6 +14,7 @@ import {LIB_VERSION} from '../../constants';
14
14
  import {NpmIcon} from '../NetworkIcons';
15
15
  import {copyToClipboard} from '../../helpers';
16
16
  import {showToast} from '../../helpers/toast';
17
+ import {AppFonts} from '../../styles/AppFonts';
17
18
 
18
19
  const CloseSvg = ({size = 13, color = '#94A3B8'}: {size?: number; color?: string}) => (
19
20
  <Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
@@ -243,15 +244,9 @@ export const NpmUpdateToast = () => {
243
244
  );
244
245
  };
245
246
 
246
- const fontStack = Platform.select({
247
- ios: {
248
- fontFamily: 'System',
249
- },
250
- android: {
251
- fontFamily: 'sans-serif',
252
- },
253
- default: {},
254
- });
247
+ const fontStack = {
248
+ fontFamily: AppFonts.interRegular,
249
+ };
255
250
 
256
251
  const styles = StyleSheet.create({
257
252
  container: {
@@ -55,6 +55,7 @@ import {
55
55
  NativeSystemMetrics,
56
56
  isNativeModuleAvailable,
57
57
  } from '../../native/NativeInspector';
58
+ import {trackInspectorScreenRecord} from '../../helpers/telemetry';
58
59
 
59
60
  export interface PerformanceEvent {
60
61
  id: string;
@@ -476,7 +477,13 @@ const PerformanceTab = React.memo(() => {
476
477
 
477
478
  {/* Live FPS Telemetry Recorder Toggle */}
478
479
  <TouchableScale
479
- onPress={() => setIsRecording(prev => !prev)}
480
+ onPress={() => {
481
+ setIsRecording(prev => {
482
+ const next = !prev;
483
+ trackInspectorScreenRecord(next ? 'start' : 'stop', 'performance_fps');
484
+ return next;
485
+ });
486
+ }}
480
487
  style={[
481
488
  perfStyles.recordToggleBtn,
482
489
  isRecording
@@ -1,6 +1,7 @@
1
1
  import React, {useCallback, useMemo, useRef, useState} from 'react';
2
2
  import {
3
3
  FlatList,
4
+ Platform,
4
5
  Pressable,
5
6
  StyleSheet,
6
7
  Text,
@@ -300,7 +301,9 @@ const ReduxTab = React.memo(() => {
300
301
  return (
301
302
  <AnimatedEntrance index={index} distance={8}>
302
303
  <TouchableScale
303
- onPress={() => setSelectedReduxSlice(item.name)}
304
+ onPress={() => {
305
+ setSelectedReduxSlice(item.name);
306
+ }}
304
307
  style={[
305
308
  reduxTabStyles.card,
306
309
  isRecentlyUpdated && reduxTabStyles.cardRecentlyUpdated,
@@ -666,7 +669,7 @@ const ReduxTab = React.memo(() => {
666
669
  initialNumToRender={12}
667
670
  maxToRenderPerBatch={8}
668
671
  windowSize={5}
669
- removeClippedSubviews={true}
672
+ removeClippedSubviews={Platform.OS === 'android'}
670
673
  renderToHardwareTextureAndroid={true}
671
674
  ListEmptyComponent={
672
675
  <EmptyState
@@ -695,29 +698,6 @@ const ReduxTab = React.memo(() => {
695
698
  ]}
696
699
  keyboardShouldPersistTaps="handled"
697
700
  />
698
-
699
- <TouchableScale
700
- onPress={() => {
701
- try {
702
- listRef.current?.scrollToOffset({
703
- offset: 0,
704
- animated: true,
705
- });
706
- } catch {
707
- try {
708
- listRef.current?.scrollToIndex({
709
- index: 0,
710
- animated: true,
711
- });
712
- } catch {}
713
- }
714
- }}
715
- hitSlop={12}
716
- style={styles.scrollTopBtn}>
717
- <View style={{transform: [{rotate: '180deg'}]}}>
718
- <ChevronIcon color={AppColors.white} size={18} />
719
- </View>
720
- </TouchableScale>
721
701
  </View>
722
702
  );
723
703
  });