react-native-inapp-inspector 2.4.0 → 2.4.2

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 (231) hide show
  1. package/README.ar.md +163 -0
  2. package/README.de.md +163 -0
  3. package/README.es.md +164 -0
  4. package/README.fr.md +163 -0
  5. package/README.hi.md +163 -0
  6. package/README.ja.md +180 -0
  7. package/README.ko.md +163 -0
  8. package/README.md +340 -243
  9. package/README.pt-BR.md +163 -0
  10. package/README.ru.md +163 -0
  11. package/README.zh-CN.md +387 -0
  12. package/android/src/main/java/com/inappinspector/NetworkInspectorModule.kt +82 -21
  13. package/assets/banner_dark.svg +186 -0
  14. package/assets/banner_light.svg +186 -0
  15. package/assets/icon_circle.svg +148 -0
  16. package/assets/icon_square.svg +369 -0
  17. package/assets/inapp_inspector_icon.gif +0 -0
  18. package/assets/inapp_inspector_icon_original.gif +0 -0
  19. package/assets/social_preview.png +0 -0
  20. package/assets/walkthrough.gif +0 -0
  21. package/dist/commonjs/components/AnimatedBrandOwl.d.ts +7 -0
  22. package/dist/commonjs/components/AnimatedBrandOwl.js +175 -0
  23. package/dist/commonjs/components/AppHeaderLogo.d.ts +1 -0
  24. package/dist/commonjs/components/AppHeaderLogo.js +7 -5
  25. package/dist/commonjs/components/BrandSquareIcon.d.ts +5 -0
  26. package/dist/commonjs/components/BrandSquareIcon.js +139 -0
  27. package/dist/commonjs/components/ConsoleLogCard.d.ts +2 -1
  28. package/dist/commonjs/components/ConsoleLogCard.js +23 -39
  29. package/dist/commonjs/components/Inspector/AboutModal.js +44 -54
  30. package/dist/commonjs/components/Inspector/AnalyticsTab.js +16 -16
  31. package/dist/commonjs/components/Inspector/ConfirmationModal.d.ts +13 -0
  32. package/dist/commonjs/components/Inspector/ConfirmationModal.js +32 -0
  33. package/dist/commonjs/components/Inspector/ConsoleTab.js +15 -15
  34. package/dist/commonjs/components/Inspector/CrashTab.js +25 -23
  35. package/dist/commonjs/components/Inspector/DebuggingTab.js +17 -17
  36. package/dist/commonjs/components/Inspector/FabLauncher.js +22 -30
  37. package/dist/commonjs/components/Inspector/FeatureUnderDevNotice.js +2 -2
  38. package/dist/commonjs/components/Inspector/LanguageSelectorModal.d.ts +15 -0
  39. package/dist/commonjs/components/Inspector/LanguageSelectorModal.js +90 -0
  40. package/dist/commonjs/components/Inspector/MainScreen.js +46 -33
  41. package/dist/commonjs/components/Inspector/MediaGalleryTab.js +21 -19
  42. package/dist/commonjs/components/Inspector/MediaPreviewModal.js +85 -101
  43. package/dist/commonjs/components/Inspector/NetworkTab.js +50 -50
  44. package/dist/commonjs/components/Inspector/NpmUpdateToast.js +1 -1
  45. package/dist/commonjs/components/Inspector/PushCard.d.ts +3 -2
  46. package/dist/commonjs/components/Inspector/PushCard.js +5 -4
  47. package/dist/commonjs/components/Inspector/PushDetail.js +32 -23
  48. package/dist/commonjs/components/Inspector/PushTab.js +13 -13
  49. package/dist/commonjs/components/Inspector/ReduxDetail.js +32 -32
  50. package/dist/commonjs/components/Inspector/ReduxTab.js +14 -14
  51. package/dist/commonjs/components/Inspector/SettingsPanel.js +258 -139
  52. package/dist/commonjs/components/Inspector/SocketCard.d.ts +5 -0
  53. package/dist/commonjs/components/Inspector/SocketCard.js +116 -0
  54. package/dist/commonjs/components/Inspector/SocketDetail.d.ts +4 -0
  55. package/dist/commonjs/components/Inspector/SocketDetail.js +317 -0
  56. package/dist/commonjs/components/Inspector/SocketFilterModal.d.ts +13 -0
  57. package/dist/commonjs/components/Inspector/SocketFilterModal.js +69 -0
  58. package/dist/commonjs/components/Inspector/SocketTab.d.ts +3 -0
  59. package/dist/commonjs/components/Inspector/SocketTab.js +112 -0
  60. package/dist/commonjs/components/Inspector/StorageTab.js +34 -32
  61. package/dist/commonjs/components/Inspector/SupportModal.d.ts +7 -0
  62. package/dist/commonjs/components/Inspector/SupportModal.js +125 -0
  63. package/dist/commonjs/components/Inspector/SupportPage.d.ts +5 -0
  64. package/dist/commonjs/components/Inspector/SupportPage.js +227 -0
  65. package/dist/commonjs/components/Inspector/TabBar.js +24 -23
  66. package/dist/commonjs/components/Inspector/UpdateAvailableModal.js +24 -24
  67. package/dist/commonjs/components/JsonViewer.js +7 -7
  68. package/dist/commonjs/components/LogCard.d.ts +3 -2
  69. package/dist/commonjs/components/LogCard.js +17 -14
  70. package/dist/commonjs/components/LogSyntaxHighlighter.js +5 -5
  71. package/dist/commonjs/components/ModuleErrorBoundary.js +2 -2
  72. package/dist/commonjs/components/NetworkIcons.d.ts +15 -0
  73. package/dist/commonjs/components/NetworkIcons.js +38 -3
  74. package/dist/commonjs/components/SegmentedTabs.js +1 -1
  75. package/dist/commonjs/constants/version.d.ts +1 -1
  76. package/dist/commonjs/constants/version.js +1 -1
  77. package/dist/commonjs/customHooks/socketLogger.d.ts +26 -0
  78. package/dist/commonjs/customHooks/socketLogger.js +2 -0
  79. package/dist/commonjs/helpers/index.js +3 -3
  80. package/dist/commonjs/helpers/memoryManager.d.ts +1 -0
  81. package/dist/commonjs/helpers/memoryManager.js +1 -1
  82. package/dist/commonjs/helpers/searchQueryParser.d.ts +1 -1
  83. package/dist/commonjs/helpers/searchQueryParser.js +5 -1
  84. package/dist/commonjs/helpers/settingsStore.d.ts +1 -0
  85. package/dist/commonjs/helpers/settingsStore.js +1 -1
  86. package/dist/commonjs/helpers/shareFormatter.d.ts +3 -1
  87. package/dist/commonjs/helpers/shareFormatter.js +8 -7
  88. package/dist/commonjs/i18n/index.d.ts +99 -1
  89. package/dist/commonjs/i18n/index.js +1 -1
  90. package/dist/commonjs/i18n/locales/ar.json +1 -1
  91. package/dist/commonjs/i18n/locales/bn.json +1 -0
  92. package/dist/commonjs/i18n/locales/de.json +1 -1
  93. package/dist/commonjs/i18n/locales/en.json +1 -1
  94. package/dist/commonjs/i18n/locales/es.json +1 -1
  95. package/dist/commonjs/i18n/locales/fr.json +1 -1
  96. package/dist/commonjs/i18n/locales/gu.json +1 -0
  97. package/dist/commonjs/i18n/locales/hi.json +1 -1
  98. package/dist/commonjs/i18n/locales/id.json +1 -0
  99. package/dist/commonjs/i18n/locales/it.json +1 -0
  100. package/dist/commonjs/i18n/locales/ja.json +1 -1
  101. package/dist/commonjs/i18n/locales/kn.json +1 -0
  102. package/dist/commonjs/i18n/locales/ko.json +1 -1
  103. package/dist/commonjs/i18n/locales/ml.json +1 -0
  104. package/dist/commonjs/i18n/locales/mr.json +1 -0
  105. package/dist/commonjs/i18n/locales/nl.json +1 -0
  106. package/dist/commonjs/i18n/locales/pa.json +1 -0
  107. package/dist/commonjs/i18n/locales/pl.json +1 -0
  108. package/dist/commonjs/i18n/locales/pt.json +1 -1
  109. package/dist/commonjs/i18n/locales/ru.json +1 -1
  110. package/dist/commonjs/i18n/locales/ta.json +1 -0
  111. package/dist/commonjs/i18n/locales/te.json +1 -0
  112. package/dist/commonjs/i18n/locales/tr.json +1 -0
  113. package/dist/commonjs/i18n/locales/vi.json +1 -0
  114. package/dist/commonjs/i18n/locales/zh.json +1 -1
  115. package/dist/commonjs/index.d.ts +13 -13
  116. package/dist/commonjs/index.js +5 -4
  117. package/dist/commonjs/native/NativeInspector.d.ts +1 -0
  118. package/dist/commonjs/socket.d.ts +4 -0
  119. package/dist/commonjs/socket.js +1 -0
  120. package/dist/commonjs/styles/index.d.ts +23 -0
  121. package/dist/commonjs/styles/index.js +1 -1
  122. package/dist/commonjs/types/enums.d.ts +40 -0
  123. package/dist/commonjs/types/enums.js +1 -1
  124. package/dist/commonjs/types/interfaces.d.ts +122 -1
  125. package/dist/esm/components/AnimatedBrandOwl.d.ts +7 -0
  126. package/dist/esm/components/AnimatedBrandOwl.js +175 -0
  127. package/dist/esm/components/AppHeaderLogo.d.ts +1 -0
  128. package/dist/esm/components/AppHeaderLogo.js +7 -5
  129. package/dist/esm/components/BrandSquareIcon.d.ts +5 -0
  130. package/dist/esm/components/BrandSquareIcon.js +139 -0
  131. package/dist/esm/components/ConsoleLogCard.d.ts +2 -1
  132. package/dist/esm/components/ConsoleLogCard.js +61 -77
  133. package/dist/esm/components/Inspector/AboutModal.js +85 -95
  134. package/dist/esm/components/Inspector/AnalyticsTab.js +31 -31
  135. package/dist/esm/components/Inspector/ConfirmationModal.d.ts +13 -0
  136. package/dist/esm/components/Inspector/ConfirmationModal.js +32 -0
  137. package/dist/esm/components/Inspector/ConsoleTab.js +49 -49
  138. package/dist/esm/components/Inspector/CrashTab.js +40 -38
  139. package/dist/esm/components/Inspector/DebuggingTab.js +29 -29
  140. package/dist/esm/components/Inspector/FabLauncher.js +50 -58
  141. package/dist/esm/components/Inspector/FeatureUnderDevNotice.js +7 -7
  142. package/dist/esm/components/Inspector/LanguageSelectorModal.d.ts +15 -0
  143. package/dist/esm/components/Inspector/LanguageSelectorModal.js +90 -0
  144. package/dist/esm/components/Inspector/MainScreen.js +123 -110
  145. package/dist/esm/components/Inspector/MediaGalleryTab.js +64 -62
  146. package/dist/esm/components/Inspector/MediaPreviewModal.js +107 -123
  147. package/dist/esm/components/Inspector/NetworkTab.js +90 -90
  148. package/dist/esm/components/Inspector/NpmUpdateToast.js +1 -1
  149. package/dist/esm/components/Inspector/PushCard.d.ts +3 -2
  150. package/dist/esm/components/Inspector/PushCard.js +23 -22
  151. package/dist/esm/components/Inspector/PushDetail.js +34 -25
  152. package/dist/esm/components/Inspector/PushTab.js +25 -25
  153. package/dist/esm/components/Inspector/ReduxDetail.js +42 -42
  154. package/dist/esm/components/Inspector/ReduxTab.js +35 -35
  155. package/dist/esm/components/Inspector/SettingsPanel.js +495 -376
  156. package/dist/esm/components/Inspector/SocketCard.d.ts +5 -0
  157. package/dist/esm/components/Inspector/SocketCard.js +116 -0
  158. package/dist/esm/components/Inspector/SocketDetail.d.ts +4 -0
  159. package/dist/esm/components/Inspector/SocketDetail.js +317 -0
  160. package/dist/esm/components/Inspector/SocketFilterModal.d.ts +13 -0
  161. package/dist/esm/components/Inspector/SocketFilterModal.js +69 -0
  162. package/dist/esm/components/Inspector/SocketTab.d.ts +3 -0
  163. package/dist/esm/components/Inspector/SocketTab.js +112 -0
  164. package/dist/esm/components/Inspector/StorageTab.js +136 -134
  165. package/dist/esm/components/Inspector/SupportModal.d.ts +7 -0
  166. package/dist/esm/components/Inspector/SupportModal.js +125 -0
  167. package/dist/esm/components/Inspector/SupportPage.d.ts +5 -0
  168. package/dist/esm/components/Inspector/SupportPage.js +227 -0
  169. package/dist/esm/components/Inspector/TabBar.js +36 -35
  170. package/dist/esm/components/Inspector/UpdateAvailableModal.js +22 -22
  171. package/dist/esm/components/JsonViewer.js +55 -55
  172. package/dist/esm/components/LogCard.d.ts +3 -2
  173. package/dist/esm/components/LogCard.js +61 -58
  174. package/dist/esm/components/LogSyntaxHighlighter.js +5 -5
  175. package/dist/esm/components/ModuleErrorBoundary.js +23 -23
  176. package/dist/esm/components/NetworkIcons.d.ts +15 -0
  177. package/dist/esm/components/NetworkIcons.js +38 -3
  178. package/dist/esm/components/SegmentedTabs.js +7 -7
  179. package/dist/esm/constants/version.d.ts +1 -1
  180. package/dist/esm/constants/version.js +1 -1
  181. package/dist/esm/customHooks/socketLogger.d.ts +26 -0
  182. package/dist/esm/customHooks/socketLogger.js +2 -0
  183. package/dist/esm/helpers/index.js +3 -3
  184. package/dist/esm/helpers/memoryManager.d.ts +1 -0
  185. package/dist/esm/helpers/memoryManager.js +1 -1
  186. package/dist/esm/helpers/searchQueryParser.d.ts +1 -1
  187. package/dist/esm/helpers/searchQueryParser.js +5 -1
  188. package/dist/esm/helpers/settingsStore.d.ts +1 -0
  189. package/dist/esm/helpers/settingsStore.js +1 -1
  190. package/dist/esm/helpers/shareFormatter.d.ts +3 -1
  191. package/dist/esm/helpers/shareFormatter.js +8 -7
  192. package/dist/esm/i18n/index.d.ts +99 -1
  193. package/dist/esm/i18n/index.js +1 -1
  194. package/dist/esm/i18n/locales/ar.json +1 -1
  195. package/dist/esm/i18n/locales/bn.json +1 -0
  196. package/dist/esm/i18n/locales/de.json +1 -1
  197. package/dist/esm/i18n/locales/en.json +1 -1
  198. package/dist/esm/i18n/locales/es.json +1 -1
  199. package/dist/esm/i18n/locales/fr.json +1 -1
  200. package/dist/esm/i18n/locales/gu.json +1 -0
  201. package/dist/esm/i18n/locales/hi.json +1 -1
  202. package/dist/esm/i18n/locales/id.json +1 -0
  203. package/dist/esm/i18n/locales/it.json +1 -0
  204. package/dist/esm/i18n/locales/ja.json +1 -1
  205. package/dist/esm/i18n/locales/kn.json +1 -0
  206. package/dist/esm/i18n/locales/ko.json +1 -1
  207. package/dist/esm/i18n/locales/ml.json +1 -0
  208. package/dist/esm/i18n/locales/mr.json +1 -0
  209. package/dist/esm/i18n/locales/nl.json +1 -0
  210. package/dist/esm/i18n/locales/pa.json +1 -0
  211. package/dist/esm/i18n/locales/pl.json +1 -0
  212. package/dist/esm/i18n/locales/pt.json +1 -1
  213. package/dist/esm/i18n/locales/ru.json +1 -1
  214. package/dist/esm/i18n/locales/ta.json +1 -0
  215. package/dist/esm/i18n/locales/te.json +1 -0
  216. package/dist/esm/i18n/locales/tr.json +1 -0
  217. package/dist/esm/i18n/locales/vi.json +1 -0
  218. package/dist/esm/i18n/locales/zh.json +1 -1
  219. package/dist/esm/index.d.ts +13 -13
  220. package/dist/esm/index.js +8 -7
  221. package/dist/esm/native/NativeInspector.d.ts +1 -0
  222. package/dist/esm/socket.d.ts +4 -0
  223. package/dist/esm/socket.js +1 -0
  224. package/dist/esm/styles/index.d.ts +23 -0
  225. package/dist/esm/styles/index.js +1 -1
  226. package/dist/esm/types/enums.d.ts +40 -0
  227. package/dist/esm/types/enums.js +1 -1
  228. package/dist/esm/types/interfaces.d.ts +122 -1
  229. package/ios/NetworkInspectorModule.mm +102 -12
  230. package/package.json +204 -2
  231. package/src/native/NativeInspector.ts +8 -0
package/README.md CHANGED
@@ -1,5 +1,19 @@
1
1
  # React Native In-App Inspector
2
2
 
3
+ <p align="center">
4
+ <b><a href="./README.md">English</a></b> |
5
+ <b><a href="./README.zh-CN.md">简体中文</a></b> |
6
+ <b><a href="./README.hi.md">हिन्दी</a></b> |
7
+ <b><a href="./README.ja.md">日本語</a></b> |
8
+ <b><a href="./README.es.md">Español</a></b> |
9
+ <b><a href="./README.de.md">Deutsch</a></b> |
10
+ <b><a href="./README.fr.md">Français</a></b> |
11
+ <b><a href="./README.pt-BR.md">Português</a></b> |
12
+ <b><a href="./README.ko.md">한국어</a></b> |
13
+ <b><a href="./README.ru.md">Русский</a></b> |
14
+ <b><a href="./README.ar.md">العربية</a></b>
15
+ </p>
16
+
3
17
  <p align="center">
4
18
  <picture>
5
19
  <source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/vengatmacuser/react-native-inapp-inspector/main/assets/banner_light.svg">
@@ -19,68 +33,156 @@
19
33
  <p align="center">
20
34
  <img src="https://img.shields.io/badge/Platform-iOS%20%7C%20Android%20%7C%20Expo-0284c7?logo=apple&logoColor=white" alt="platform" />
21
35
  <img src="https://img.shields.io/badge/React%20Native-%E2%89%A50.60-61DAFB?logo=react&logoColor=white" alt="React Native" />
22
- <img src="https://img.shields.io/badge/Expo-SDK%2048%2B%20%7C%2050%2B%20%7C%2051%2B-000020?logo=expo&logoColor=white" alt="Expo" />
36
+ <img src="https://img.shields.io/badge/Expo-SDK%2048%2B%20%7C%2050%2B%20%7C%2051%2B%20%7C%2052%2B-000020?logo=expo&logoColor=white" alt="Expo" />
23
37
  <img src="https://img.shields.io/badge/TypeScript-Strict%20Ready-3178c6?logo=typescript&logoColor=white" alt="TypeScript" />
24
38
  <img src="https://img.shields.io/badge/Engine-Hermes%20%7C%20JSC-9333ea" alt="Engine" />
25
39
  </p>
26
40
 
27
41
  <p align="center">
28
- <img src="https://img.shields.io/badge/Micro--UI-Fault--Isolated-10b981?logo=shield&logoColor=white" alt="Fault Isolated" />
29
- <img src="https://img.shields.io/badge/Overhead-0%25%20Inactive-06b6d4" alt="Overhead" />
30
- <img src="https://img.shields.io/badge/Redux-RTK%20%7C%20Persist-764abc?logo=redux&logoColor=white" alt="Redux" />
31
- <img src="https://img.shields.io/badge/Analytics-Firebase%20%7C%20GA4-FFCA28?logo=firebase&logoColor=black" alt="Firebase" />
42
+ <img src="https://img.shields.io/badge/WebSockets-ws%20%7C%20wss%20%7C%20Socket.IO-06b6d4?logo=socketdotio&logoColor=white" alt="WebSockets" />
43
+ <img src="https://img.shields.io/badge/Storage-AsyncStorage%20%7C%20MMKV-f59e0b?logo=databricks&logoColor=white" alt="Storage" />
44
+ <img src="https://img.shields.io/badge/Push%20Logger-APNs%20%7C%20FCM-10b981?logo=firebase&logoColor=white" alt="Push" />
45
+ <img src="https://img.shields.io/badge/Localization-25%20Languages-ec4899" alt="Localization" />
46
+ <img src="https://img.shields.io/badge/Screen%20Capture-Video%20%7C%20GIF%20%7C%20Screenshot-8b5cf6" alt="Screen Capture" />
32
47
  <a href="https://github.com/vengatmacuser/react-native-inapp-inspector/pulls"><img src="https://img.shields.io/badge/PRs-welcome-brightgreen.svg" alt="PRs Welcome" /></a>
33
48
  </p>
34
49
 
35
- The **zero-config, all-in-one in-app debugging overlay for React Native & Expo**. Inspect network traffic (fetch/Axios), console logs with Metro symbolicated stack traces, Redux state diffs, Firebase Analytics events, and JavaScript bundle size directly on your device or simulator with zero native setup.
50
+ The **zero-config, all-in-one in-app debugging toolkit for React Native & Expo**. Inspect HTTP/HTTPS network traffic, WebSocket and Socket.IO real-time streams, console logs with Metro symbolicated stack traces, Redux state diffs, AsyncStorage & MMKV live storage, push notifications, native hardware metrics, and capture screenshots or screen recordings directly on your device with **zero native setup**.
36
51
 
37
- > 🚀 **The modern, lightweight alternative to Flipper and Chucker** — works standalone on device, in test builds, and across standalone APKs/IPAs without desktop companion apps, cables, or open debugger ports.
52
+ > 🚀 **The modern, lightweight alternative to Flipper, Charles, Proxyman, and Chucker** — works standalone on device, in test builds, and across standalone APKs/IPAs without desktop companion apps, cables, or open debugger ports.
53
+
54
+ <p align="center">
55
+ <img src="https://raw.githubusercontent.com/vengatmacuser/react-native-inapp-inspector/main/assets/walkthrough.gif" alt="React Native In-App Inspector Walkthrough" width="360" style="border-radius: 20px; box-shadow: 0 12px 36px rgba(0,0,0,0.5);" />
56
+ </p>
38
57
 
39
58
  <p align="center">
40
- <img src="https://raw.githubusercontent.com/vengatmacuser/react-native-inapp-inspector/main/assets/walkthrough.gif" alt="React Native In-App Inspector Walkthrough" width="360" style="border-radius: 20px;" />
59
+ 🎬 <b><a href="https://raw.githubusercontent.com/vengatmacuser/react-native-inapp-inspector/main/docs/video_walkthrough.mp4">Watch Full Video Walkthrough (MP4)</a></b> | <b><a href="https://raw.githubusercontent.com/vengatmacuser/react-native-inapp-inspector/main/docs/video_walkthrough.mov">Original MOV</a></b>
41
60
  </p>
42
61
 
43
62
  ---
44
63
 
45
64
  ## ⚡ Why Choose `react-native-inapp-inspector`?
46
65
 
47
- | Capability | **react-native-inapp-inspector** | Flipper / RN Debugger |
48
- | :--- | :---: | :---: |
49
- | **Native Module (Kotlin & iOS Bridge)** | ✅ | ⚠️ |
50
- | **Low-Level Hardware & RAM Telemetry** | ✅ | ⚠️ |
51
- | **Zero-Render Inactive Mode (0% Background Overhead)** | ✅ | ❌ |
52
- | **Network Timing Waterfall & P95 Telemetry** | ✅ | ✅ |
53
- | **Network Inspector (Fetch & Axios)** | ✅ | ✅ |
54
- | **cURL & Fetch Snippet Export** | ✅ | ⚠️ |
55
- | **Console Logger + Stack Traces** | ✅ (Metro Symbolicated) | ✅ |
56
- | **Redux State & Action Diffs** | ✅ | ⚠️ |
57
- | **Firebase Analytics Tracker** | ✅ | ❌ |
58
- | **JS Bundle Size & Hermes Analyzer** | ✅ | ❌ |
59
- | **Live Traffic Stream Freeze** | ✅ | ❌ |
60
- | **Expo & Bare React Native** | ✅ | ⚠️ |
66
+ | Capability | **react-native-inapp-inspector** | Flipper | Charles / Proxyman | RN Debugger |
67
+ | :--- | :---: | :---: | :---: | :---: |
68
+ | **Standalone on Device (No PC/Cable Required)** | ✅ | ❌ | ❌ | ❌ |
69
+ | **Zero-Render Inactive Mode (0% Background CPU)** | ✅ | ❌ | ❌ | ❌ |
70
+ | **HTTP/HTTPS Network Logger (Fetch / Axios / XHR)** | ✅ | ✅ | ✅ | ✅ |
71
+ | **Timing Waterfall & P95 Telemetry** | ✅ | ⚠️ | ⚠️ | ❌ |
72
+ | **cURL & Fetch Snippet Instant Export** | ✅ | ⚠️ | ⚠️ | ❌ |
73
+ | **WebSocket & Socket.IO Packet Inspector** | ✅ | ❌ | ⚠️ | ⚠️ |
74
+ | **Storage Inspector & Editor (AsyncStorage & MMKV)** | ✅ (Live CRUD) | ⚠️ (Read-only) | ❌ | ⚠️ |
75
+ | **Push Notification Logger (APNs, FCM, Salesforce)** | ✅ | ❌ | ❌ | ❌ |
76
+ | **Console Logger + Metro Source-Map Symbolication** | ✅ (Accurate Line #) | ✅ | ❌ | ✅ |
77
+ | **Redux State Diffs & Action Timeline** | ✅ | ⚠️ | ❌ | ✅ |
78
+ | **Crash Protection & Multi-type Breadcrumbs** | ✅ | ❌ | ❌ | ❌ |
79
+ | **Native Hardware, RAM, Storage & Battery Telemetry** | ✅ | ⚠️ | ❌ | ❌ |
80
+ | **Screen Capture (Screenshots, MP4 Video, GIF)** | ✅ | ❌ | ❌ | ❌ |
81
+ | **25 Global Languages with Bottom Sheet Picker** | ✅ | ❌ (English only) | ❌ | ❌ |
82
+ | **Expo (Bare & Managed) & React Native** | ✅ | ⚠️ | ⚠️ | ⚠️ |
61
83
 
62
84
  ---
63
85
 
64
86
  ## ✨ Features
65
87
 
66
- | Feature | Description |
67
- | --- | --- |
68
- | ⚡ **Native Hardware Telemetry** | Native Kotlin (`Android`) & Objective-C (`iOS`) bridge to query total RAM, available RAM, native heap size, internal storage free space, battery level, charging status, and CPU ABI. |
69
- | 🌊 **Network Timing Waterfall** | Latency breakdown with visual proportional waterfall bars, performance ratings (Fast `<200ms`, Moderate `200-800ms`, Slow `>800ms`), and aggregate **Success Rate %**, **Avg Latency**, and **P95 Latency** health indicators. |
70
- | 🚀 **Zero-Render Inactive Mode** | High-performance architecture that eliminates background React re-renders while the inspector modal is closed, synchronizing state instantaneously upon opening. |
71
- | 🌐 **Network Inspector** | Intercepts `fetch` and Axios (`GET`, `POST`, `PUT`, `PATCH`, `DELETE`). Inspect status codes, request/response headers, body JSON, duration, caller origin, and instant cURL / fetch export snippets. |
72
- | 🪵 **Console Logger & Stack Trace** | Captures `console.log`, `info`, `warn`, and `error`. Displays trigger file (`TSX`, `JSX`, `TS`, `JS`) & line numbers via **Metro Symbolication**, call stack frames, individual arguments inspection, and duplicate collapsing (`×N`). |
73
- | ⏸️ **Live Stream Pause / Resume** | Freeze incoming network requests, console logs, and analytics streams on the fly to inspect active traffic without list jumping. |
74
- | 📊 **Analytics Tracker** | Tracks manual events and auto-patches `@react-native-firebase/analytics` calls (`logEvent`, `logScreenView`, `setUserProperties`, and `setUserId`). |
75
- | 🔄 **Redux State & Actions** | Connects to Redux / Redux Toolkit. Inspect dispatched actions with deep state diffs, payload breakdown, slice state trees, and `redux-persist` metadata. |
76
- | 📦 **Bundle Visualizer** | In-app JavaScript bundle size breakdown, Hermes engine bytecode metrics, visual package treemap, and integrated `react-native-bundle-visualizer` CLI. |
77
- | 🛡️ **Error Boundary & Native Crash Catcher** | Built-in React `ErrorBoundary` and native exception/signal crash catcher emitting rich stack traces and device diagnostics. |
88
+ ### 🌐 1. Network Inspector & Timing Waterfall
89
+ - **Universal HTTP/HTTPS Interception**: Automatically hooks into `fetch`, default Axios, `axios.create()` instances, and `XMLHttpRequest`.
90
+ - **Latency Breakdown**: Proportional timing waterfall bars, latency grading (Fast `<200ms`, Moderate `200-800ms`, Slow `>800ms`).
91
+ - **Telemetry Strip**: Real-time **Success Rate %**, **Avg Latency (ms)**, and **P95 Latency (ms)**.
92
+ - **Payload Viewer**: Formatted JSON syntax tree, raw payload view, request & response headers, query parameters, and caller origin.
93
+ - **Export Formats**: One-tap copy as **cURL command**, **Fetch code snippet**, or formatted summary report.
94
+
95
+ ### ⚡ 2. WebSocket & Socket.IO Real-Time Stream Inspector
96
+ - **Full Protocol Coverage**: Intercepts native WebSocket (`ws://`, `wss://`) and Socket.IO (`v2`, `v3`, `v4`).
97
+ - **Live Frame Timeline**: Bidirectional frame tracking (⬆️ Sent, ⬇️ Received) with high-resolution timestamps.
98
+ - **Frame Types**: Text, JSON payloads, Binary/ArrayBuffer lengths, and Ping/Pong heartbeats.
99
+ - **Handshake & Metadata**: Inspect connection state, handshake query params, transport type (websocket/polling), reconnection events, and errors.
100
+ - **Search & Filter**: Filter frames by direction, opcode, or inspect specific payload payloads.
101
+
102
+ ### 💾 3. Storage Manager (AsyncStorage & MMKV)
103
+ - **Unified Storage Interface**: Live viewer for both `@react-native-async-storage/async-storage` and `react-native-mmkv`.
104
+ - **Live In-App CRUD**: Read, search, create, update, and delete storage keys directly from your phone screen.
105
+ - **Type-Aware Parsing**: Automatically distinguishes JSON objects, arrays, booleans, numbers, and strings.
106
+ - **Instant Search**: Search through thousands of stored keys and values with zero lag.
107
+
108
+ ### 🔔 4. Push Notification Logger
109
+ - **Multi-Provider Detection**: Automatically logs notifications from FCM (`@react-native-firebase/messaging`), APNs, Salesforce Marketing Cloud, OneSignal, and Notifee.
110
+ - **App State Tracking**: Identifies if notifications were received in **Foreground**, **Background**, or caused app launch from **Killed** state.
111
+ - **Payload Inspector**: Full data payload inspection, deep-link URLs, notification titles, bodies, and channel IDs.
112
+ - **Interactive Action Tracking**: Captures user taps, dismissals, and custom notification button action clicks.
113
+
114
+ ### 🪵 5. Console Logger & Metro Source-Map Symbolication
115
+ - **Line-Accurate Symbolication**: Intercepts `console.log`, `info`, `warn`, and `error`. Symbolicates stack traces via Metro Bundler so you see exact project source files and line numbers (`HomeScreen.tsx:42:15`, `AuthService.ts:88`).
116
+ - **Detailed Sub-Tabs**:
117
+ - **Output**: JSON viewer (Pretty, Raw, Table) with clickable URL detection.
118
+ - **Args (N)**: Inspect each passed argument individually with type breakdown.
119
+ - **Call Stack**: Structured frame cards (File name, Function, Line, Column pills).
120
+ - **Error Stack**: Thrown Error stack traces preserved and highlighted.
121
+ - **Metadata**: Duplicate collapsing counter (`×N`), character size, and timestamp.
122
+
123
+ ### 🔄 6. Redux State & Action Diffs
124
+ - **Redux & Redux Toolkit**: Seamless integration with Redux Store, RTK Query, and `redux-persist`.
125
+ - **Action Timeline**: Chronological record of dispatched actions with exact timestamps and durations.
126
+ - **Deep State Diffs**: Visual color-coded diffing of state changes (**Green** for additions, **Amber** for updates, **Red** for deletions).
127
+ - **Slice Tree Navigation**: Explore your global state tree slice by slice.
128
+
129
+ ### 📊 7. Analytics Event Tracker
130
+ - **Firebase Analytics Auto-Patch**: Hooks into `@react-native-firebase/analytics` (`logEvent`, `logScreenView`, `setUserProperties`, `setUserId`).
131
+ - **Plugin Architecture**: Easily plug in custom analytics providers (Google Analytics 4, Mixpanel, Segment, Amplitude).
132
+ - **Parameter Inspection**: Inspect event parameters, user properties, and timestamps.
133
+
134
+ ### 🛡️ 8. Crash Protection & Global Error Boundary
135
+ - **Zero-Crash Micro-UI**: The inspector UI is fully isolated; errors inside the inspector cannot crash your host application.
136
+ - **Global Error Boundary**: Catch unhandled JavaScript rendering crashes with a helpful recovery UI.
137
+ - **Breadcrumb Timeline**: Tracks preceding user navigation, network calls, and Redux actions leading up to the crash.
138
+ - **Native Crash Protection**: Captures native uncaught signals and exceptions on iOS and Android.
139
+
140
+ ### 📱 9. Native Hardware, RAM & Performance Telemetry
141
+ - **Low-Level Metrics**: Total RAM, Available Free RAM, Native Allocated Heap, Internal Storage Free Space, Battery Percentage & Charging state, CPU Architecture (ABI).
142
+ - **Live FPS Counter**: Real-time FPS monitoring on native display refresh cycles.
143
+ - **Memory Warning Auto-Pruning**: Automatically prunes in-memory logs when the OS triggers low memory alerts.
144
+ - **Shake to Toggle**: Shake physical device or press `Ctrl+Cmd+Z` / `Cmd+M` to toggle the inspector.
145
+
146
+ ### 📸 10. Native Media Capture Suite (Screenshot, Video, GIF)
147
+ - **On-Device Screenshot**: Take crisp high-resolution full-window screenshots without status bar clipping.
148
+ - **Screen Video Recording**: Capture smooth MP4 video walkthroughs of bugs directly on device.
149
+ - **Animated GIF Generator**: Convert recordings to lightweight GIFs for easy sharing on GitHub PRs and Jira tickets.
150
+ - **In-App Media Gallery**: Preview, share, or delete captured recordings inside the inspector.
151
+
152
+ ### 🌍 11. 25 Global Languages & Interactive Bottom Sheet
153
+ - **25 Supported Locales**: English, Spanish, French, German, Italian, Portuguese, Russian, Japanese, Korean, Simplified Chinese (`zh`), Traditional Chinese (`zh-TW`), Arabic, Turkish, Dutch, Polish, Indonesian, Vietnamese, Thai, and 7 major Indian languages (Hindi, Tamil, Telugu, Kannada, Malayalam, Bengali, Marathi).
154
+ - **Interactive Bottom Sheet**: Tap `[ 🌐 EN ▾ ]` to open the bottom sheet with horizontal country flags/chips and instant search for one-tap switching.
78
155
 
79
156
  ---
80
157
 
81
- ## 🎬 Video Walkthrough
158
+ ## 🔎 Smart DevTools Search Engine Syntax
159
+
160
+ The search bar supports advanced Chrome DevTools-style filtering across all tabs:
161
+
162
+ ```text
163
+ # Filter by HTTP method and status code
164
+ method:POST status:200
82
165
 
83
- [Download or watch the Video Walkthrough](https://raw.githubusercontent.com/vengatmacuser/react-native-inapp-inspector/main/example/guidance/Video-WalkThrough.mp4)
166
+ # Exclude analytics or third-party domains
167
+ url:api.myapp.com -analytics -facebook
168
+
169
+ # Filter by request or response header
170
+ header:authorization
171
+
172
+ # Search inside request or response JSON body
173
+ body:"orderId"
174
+
175
+ # Filter logs by screen / route name
176
+ page:CheckoutScreen
177
+
178
+ # Filter console logs by specific TSX file
179
+ file:ProfileView.tsx
180
+
181
+ # Negate any term using minus prefix
182
+ -healthcheck -socket.io
183
+ ```
184
+
185
+ *Note: Proxy headers like `via: 2.0 heroku-router`, `cf-ray:`, or `nel:` are automatically separated to avoid polluting search results.*
84
186
 
85
187
  ---
86
188
 
@@ -88,292 +190,270 @@ The **zero-config, all-in-one in-app debugging overlay for React Native & Expo**
88
190
 
89
191
  ### Bare React Native
90
192
  ```bash
91
- npm install --save-dev react-native-inapp-inspector axios
193
+ npm install --save-dev react-native-inapp-inspector react-native-svg
194
+ # or
195
+ yarn add -D react-native-inapp-inspector react-native-svg
92
196
  # or
93
- yarn add -D react-native-inapp-inspector axios
197
+ pnpm add -D react-native-inapp-inspector react-native-svg
94
198
  ```
95
199
 
200
+ #### iOS CocoaPods Setup
96
201
  ```bash
97
- # iOS Pods
98
- cd ios && pod install
202
+ cd ios && pod install && cd ..
99
203
  ```
100
204
 
101
205
  ### Expo Projects
102
206
  ```bash
103
- npx expo install react-native-inapp-inspector react-native-svg react-native-linear-gradient
207
+ npx expo install react-native-inapp-inspector react-native-svg
104
208
  ```
105
-
106
- ### Dependencies
107
- The package requires React (`>=18.0.0`) and React Native (`>=0.60.0`) as peer dependencies and utilizes `@react-navigation/native`, `react-native-linear-gradient`, and `react-native-svg`.
108
-
109
- *(Optional)* If you use `@react-native-clipboard/clipboard` in your project, the inspector automatically detects and utilizes native clipboard bridges for seamless emulator-to-host copying.
209
+ *(Compatible with Expo SDK 48, 49, 50, 51, 52+ in both Expo Go and Prebuild)*
110
210
 
111
211
  ---
112
212
 
113
- ## 🚀 Basic Setup (JavaScript & TypeScript)
114
-
115
- Mount `<NetworkInspector />` near the root of your application (e.g. in `App.js` or `App.tsx`):
116
-
117
- ```jsx
118
- import React from 'react';
119
- import {SafeAreaView} from 'react-native';
120
- import NetworkInspector from 'react-native-inapp-inspector';
121
-
122
- const App = () => {
123
- return (
124
- <SafeAreaView style={{flex: 1}}>
125
- {/* Your application components */}
126
- <NetworkInspector />
127
- </SafeAreaView>
128
- );
129
- };
130
-
131
- export default App;
132
- ```
133
-
134
- When mounted, the inspector automatically sets up network logging, intercepts console methods, and attaches Firebase Analytics if available.
213
+ ## 🚀 Getting Started
135
214
 
136
- ### Early Startup Network Logging
215
+ ### 1. Basic Setup in `App.tsx`
137
216
 
138
- If your application makes API calls before the root component finishes mounting, initialize the logger at the module level in your entry file (`index.js` or `App.tsx`):
217
+ Mount `<NetworkInspector />` at the root of your app. Wrap with `__DEV__` to ensure it only runs in development or test builds:
139
218
 
140
- ```javascript
219
+ ```tsx
220
+ import React from 'react';
221
+ import { SafeAreaView } from 'react-native';
141
222
  import NetworkInspector, {
142
223
  setupNetworkLogger,
143
224
  setupConsoleLogger,
225
+ setupSocketLogger,
226
+ connectReduxStore,
227
+ connectAsyncStorage,
144
228
  } from 'react-native-inapp-inspector';
229
+ import AsyncStorage from '@react-native-async-storage/async-storage';
230
+ import { store } from './src/store';
145
231
 
232
+ // ⚡ Initialize loggers before application renders
146
233
  setupNetworkLogger();
147
234
  setupConsoleLogger();
148
- ```
235
+ setupSocketLogger();
149
236
 
150
- ---
237
+ if (store) {
238
+ connectReduxStore(store);
239
+ }
240
+ connectAsyncStorage(AsyncStorage);
151
241
 
152
- ## ⚡ Native Hardware & Memory Telemetry
242
+ export default function App() {
243
+ return (
244
+ <SafeAreaView style={{ flex: 1 }}>
245
+ {/* Your host app components */}
246
+ <YourAppRoot />
247
+
248
+ {/* Floating overlay UI */}
249
+ {__DEV__ && (
250
+ <NetworkInspector
251
+ enabled={true}
252
+ environment="DEV"
253
+ />
254
+ )}
255
+ </SafeAreaView>
256
+ );
257
+ }
258
+ ```
153
259
 
154
- Access native low-level device, battery, and memory metrics:
260
+ ---
155
261
 
156
- ```javascript
157
- import {
158
- getNativeDeviceMetrics,
159
- enableNativeCrashProtection,
160
- subscribeNativeCrashes
161
- } from 'react-native-inapp-inspector';
262
+ ## 💡 Advanced Usage & Feature Guides
162
263
 
163
- // Fetch hardware & memory metrics
164
- async function logStats() {
165
- const metrics = await getNativeDeviceMetrics();
166
- if (metrics) {
167
- console.log('Model:', metrics.deviceModel, metrics.osVersion);
168
- console.log('Total RAM:', (metrics.totalRAM / (1024 * 1024)).toFixed(0), 'MB');
169
- console.log('Free RAM:', (metrics.freeRAM / (1024 * 1024)).toFixed(0), 'MB');
170
- console.log('Native Heap:', (metrics.nativeHeapAllocated / (1024 * 1024)).toFixed(1), 'MB');
171
- console.log('Free Storage:', (metrics.freeStorage / (1024 * 1024 * 1024)).toFixed(2), 'GB');
172
- console.log('Battery:', `${metrics.batteryPercent}% (Charging: ${metrics.isCharging})`);
173
- }
174
- }
264
+ ### 🌐 Early Startup Network Logging
265
+ If your app triggers API calls before root components mount, invoke `setupNetworkLogger()` at the top of your index entry file (`index.js` or `index.ts`):
175
266
 
176
- // Enable native crash protection
177
- enableNativeCrashProtection();
267
+ ```typescript
268
+ import { setupNetworkLogger } from 'react-native-inapp-inspector';
178
269
 
179
- // Subscribe to native crash events
180
- const unsubscribe = subscribeNativeCrashes((crash) => {
181
- console.log('Native Exception:', crash.error, crash.stack);
270
+ // Automatically captures fetch, Axios, and XMLHttpRequest
271
+ setupNetworkLogger({
272
+ maxRequests: 200,
273
+ ignoredUrls: ['https://clients3.google.com/generate_204'],
182
274
  });
183
275
  ```
184
276
 
185
- ---
186
-
187
- ## 🪵 Console Logger & Stack Trace
277
+ ### ⚡ WebSocket & Socket.IO Interception
278
+ Intercept real-time packets effortlessly:
188
279
 
189
- The console logger provides deep insight into every `console.log`, `info`, `warn`, and `error` call:
280
+ ```typescript
281
+ import { setupSocketLogger, recordSocketConnection, recordSocketFrame } from 'react-native-inapp-inspector/socket';
190
282
 
191
- - **Metro Source Map Symbolication**: Stack traces are automatically symbolicated against Metro to point directly to your exact project source files (`HomeScreen.tsx:42:15`, `App.js:20`).
192
- - **Vector SVG Category Tags**: Clean vector icons for `[TEST]`, `[API]`, `[REDUX]`, `[ANALYTICS]`, `[AUTH]`, `[WARN]`, `[ERROR]` tags.
193
- - **Detailed Sub-Tabs**:
194
- - **Output / Message**: Full message with JSON Viewer (Pretty, Raw, Table modes) and link detection.
195
- - **Args (N)**: Inspect each passed argument individually with type detection (`Array[5]`, `Object{4}`).
196
- - **Call Stack Trace**: Structured frame cards (with Frame `#`, Function, File, and `L:C` pills) and Raw Trace view.
197
- - **Error Stack**: Automatically captures the thrown Error stack trace when logging Error objects.
198
- - **Metadata**: Structured table of log properties, timestamp, character count, and duplicate counter.
199
-
200
- ---
283
+ // Initialize global WebSocket interceptor
284
+ setupSocketLogger();
201
285
 
202
- ## 🌐 Network Logging & Latency Waterfall
286
+ // Or manually record custom socket frames:
287
+ recordSocketFrame(connectionId, {
288
+ direction: 'in', // 'in' | 'out'
289
+ type: 'json',
290
+ data: { event: 'ORDER_UPDATED', orderId: '12345' },
291
+ });
292
+ ```
203
293
 
204
- `setupNetworkLogger()` intercepts global `fetch`, the default Axios instance, and instances created with `axios.create()`.
294
+ ### 💾 Storage Tab Integration (AsyncStorage & MMKV)
295
+ Inspect and mutate storage keys in real-time on your phone:
205
296
 
206
- ```javascript
207
- import axios from 'axios';
208
- import {setupNetworkLogger} from 'react-native-inapp-inspector';
297
+ ```typescript
298
+ // For AsyncStorage
299
+ import AsyncStorage from '@react-native-async-storage/async-storage';
300
+ import { connectAsyncStorage } from 'react-native-inapp-inspector/storage';
209
301
 
210
- setupNetworkLogger();
302
+ connectAsyncStorage(AsyncStorage);
211
303
 
212
- const api = axios.create({baseURL: 'https://api.example.com'});
304
+ // For react-native-mmkv
305
+ import { MMKV } from 'react-native-mmkv';
306
+ import { connectMMKV } from 'react-native-inapp-inspector/storage';
213
307
 
214
- await fetch('https://api.example.com/users');
215
- await api.post('/login', {email, password});
308
+ export const storage = new MMKV();
309
+ connectMMKV(storage, 'default');
216
310
  ```
217
311
 
218
- The APIs tab features:
219
- - **Telemetry Strip**: Real-time **Success Rate %**, **Avg Latency (ms)**, and **P95 Latency (ms)**.
220
- - **Timing Waterfall**: Color-coded latency progress bars on each request card and duration benchmarks in request details.
221
- - **cURL & Fetch Export**: Instant copyable commands for debugging in Postman, Charles, or Terminal.
312
+ ### 🔔 Push Notifications Logger
313
+ Track APNs, FCM, and custom push events:
222
314
 
223
- ---
315
+ ```typescript
316
+ import { autoSetupPushLogger, recordPushNotification } from 'react-native-inapp-inspector/push';
224
317
 
225
- ## 🔄 Redux State & Action Inspection
318
+ // Auto-detect and hook available push providers (FCM, OneSignal, etc.)
319
+ autoSetupPushLogger();
226
320
 
227
- Connect your Redux store once during application startup:
321
+ // Or manually record received notifications:
322
+ recordPushNotification({
323
+ title: 'Order Delivered',
324
+ body: 'Your package #58219 has arrived!',
325
+ source: 'fcm',
326
+ appState: 'foreground',
327
+ data: { orderId: '58219', url: 'myapp://orders/58219' },
328
+ });
329
+ ```
228
330
 
229
- ```javascript
230
- import {configureStore} from '@reduxjs/toolkit';
231
- import {inspectorReduxMiddleware, connectReduxStore} from 'react-native-inapp-inspector';
331
+ ### 🔄 Redux State & Action Inspection
332
+ Inspect action payloads and deep state diffs:
333
+
334
+ ```typescript
335
+ import { configureStore } from '@reduxjs/toolkit';
336
+ import { inspectorReduxMiddleware, connectReduxStore } from 'react-native-inapp-inspector/redux';
232
337
  import rootReducer from './slices';
233
338
 
234
339
  const store = configureStore({
235
340
  reducer: rootReducer,
236
- middleware: getDefaultMiddleware =>
341
+ middleware: (getDefaultMiddleware) =>
237
342
  getDefaultMiddleware().concat(inspectorReduxMiddleware),
238
343
  });
239
344
 
240
345
  connectReduxStore(store);
241
346
  ```
242
347
 
243
- ---
244
-
245
- ## 🧭 Navigation & Screen Tracking
246
-
247
- To group network requests, logs, and analytics by the active screen, pass your navigation container ref:
348
+ ### 🧭 React Navigation Screen Tracking
349
+ Pass your navigation container ref so all logs, network calls, and socket frames are tagged with the active screen:
248
350
 
249
- ```jsx
250
- import {NavigationContainer, createNavigationContainerRef} from '@react-navigation/native';
351
+ ```tsx
352
+ import { NavigationContainer, createNavigationContainerRef } from '@react-navigation/native';
251
353
  import NetworkInspector from 'react-native-inapp-inspector';
252
354
 
253
355
  const navigationRef = createNavigationContainerRef();
254
356
 
255
- const App = () => {
357
+ export default function App() {
256
358
  return (
257
359
  <>
258
360
  <NavigationContainer ref={navigationRef}>
259
- {/* Your screens */}
361
+ <RootNavigator />
260
362
  </NavigationContainer>
261
363
  <NetworkInspector navigationRef={navigationRef} />
262
364
  </>
263
365
  );
264
- };
366
+ }
265
367
  ```
266
368
 
267
- ---
369
+ ### 📸 Screen Capture & Video Recording Suite
370
+ Take screenshots or record screen videos on device:
268
371
 
269
- ## ⚙️ Settings Persistence
372
+ ```typescript
373
+ import { ScreenCapture } from 'react-native-inapp-inspector/capture';
270
374
 
271
- Inspector preferences (dark mode, active modules, default landing tab) persist across app launches:
272
- - **iOS**: Uses React Native's built-in `Settings` module (`NSUserDefaults`) with zero extra configuration.
273
- - **Android / Custom Storage**: Pass `@react-native-async-storage/async-storage` or `react-native-mmkv` to the `storage` prop:
375
+ // Take high-resolution screenshot
376
+ const shot = await ScreenCapture.takeScreenshot({ format: 'png' });
377
+ console.log('Saved screenshot to:', shot.uri);
274
378
 
275
- ```jsx
276
- import AsyncStorage from '@react-native-async-storage/async-storage';
379
+ // Start video recording with mic audio
380
+ await ScreenCapture.startRecording({
381
+ audioSource: 'mic',
382
+ format: 'mp4',
383
+ });
277
384
 
278
- <NetworkInspector storage={AsyncStorage} />
385
+ // Stop recording and retrieve file
386
+ const video = await ScreenCapture.stopRecording();
387
+ console.log('Recorded video:', video.uri, video.duration);
279
388
  ```
280
389
 
281
- ---
390
+ ### 🌍 Multi-Language Programmatic API
391
+ Switch languages on the fly or customize translations:
282
392
 
283
- ## 🏛️ Full Native Migration Guide (Native Core + JS Bridge API)
284
-
285
- If you wish to migrate the inspector's entire UI and data engine to **100% Native (Kotlin / Swift)** while keeping a seamless, zero-friction JavaScript API for React Native developers, follow this architectural roadmap:
286
-
287
- ```mermaid
288
- flowchart TB
289
- subgraph React Native / JavaScript Layer
290
- JS_App[Host React Native App]
291
- JS_Bridge[Thin TS API: setupNetworkLogger / connectRedux / NativeInspector]
292
- JS_App -->|Logs, Redux, Analytics| JS_Bridge
293
- end
294
-
295
- subgraph Native iOS / Android Engine
296
- Native_Store[(Native Circular Ring Buffer & SQLite Storage)]
297
- Native_Overlay[100% Native Floating Overlay & Window]
298
- Native_Modal[Native Inspector Modal: SwiftUI / Compose / UIKit]
299
- Native_Network[Native OkHttp Interceptor & NSURLProtocol]
300
-
301
- JS_Bridge <-->|JSI / TurboModules / Event Emitters| Native_Store
302
- Native_Network -->|Direct Native Traffic| Native_Store
303
- Native_Overlay -->|Taps & Gestures| Native_Modal
304
- Native_Store -->|Instant 120 FPS Rendering| Native_Modal
305
- end
306
- ```
393
+ ```typescript
394
+ import { setLanguage, getLanguage, SUPPORTED_LANGUAGES } from 'react-native-inapp-inspector';
307
395
 
308
- ### Step-by-Step Migration Plan
309
-
310
- #### Step 1: Native Floating Overlay & Gesture Engine *(Completed)*
311
- - **iOS:** Floating `UIWindow` or root `UIView` subview at `UIWindowLevelAlert` with `UIPanGestureRecognizer` and edge-snapping physics on `[NSOperationQueue mainQueue]`.
312
- - **Android:** Custom `FrameLayout` attached to `activity.window.decorView` with hardware-accelerated `OnTouchListener` running on the Main Looper.
313
- - **Benefit:** 100% immune to JS thread stalls, instant 120 FPS drag response.
314
-
315
- #### Step 2: Native Full-Screen Inspector Modal
316
- - **iOS (UIKit / SwiftUI):**
317
- - Create an `InspectorViewController` or SwiftUI `InspectorView`.
318
- - When the floating icon is tapped, present it via `rootViewController.presentViewController:animated:completion:` directly on the native main thread.
319
- - **Android (Jetpack Compose / XML View):**
320
- - Create an `InspectorBottomSheetDialogFragment` or full-screen `DialogFragment`.
321
- - Present with `fragmentManager.beginTransaction()` from `currentActivity`.
322
- - **Benefit:** Searching 10,000+ network calls and expanding multi-megabyte JSON payloads occurs natively with virtualized lists and zero React re-render overhead.
323
-
324
- #### Step 3: Native Network Interception (OkHttp & NSURLProtocol)
325
- - **Android:** Add an `OkHttpInterceptor` into React Native's `OkHttpClientProvider.setOkHttpClientFactory` or custom client. Captures headers, byte streams, and timing without touching JavaScript `fetch` proxies.
326
- - **iOS:** Register a custom `NSURLProtocol` on `[NSURLSessionConfiguration defaultSessionConfiguration]` to intercept low-level iOS network traffic globally.
327
- - **Benefit:** Intercepts 3rd-party native SDK calls (Firebase, Stripe, AWS, Native Image loaders) in addition to JavaScript `fetch`/Axios requests.
328
-
329
- #### Step 4: High-Performance JSI / C++ Shared Store
330
- - Use React Native's **JSI (JavaScript Interface)** to share memory directly between C++/Kotlin/Swift and Hermes/JSC without JSON serialization over the legacy bridge.
331
- - Expose synchronous methods:
332
- ```ts
333
- // JSI Direct Memory Calls (0ms latency):
334
- global.__InAppInspector_log(item);
335
- global.__InAppInspector_getLogs();
336
- ```
337
-
338
- #### Step 5: Preserve JavaScript Backwards Compatibility
339
- - Keep existing JS exports (`setupNetworkLogger`, `connectReduxStore`, `logAnalyticsEvent`, `<NetworkInspector />`).
340
- - The TS wrapper transparently forwards data into the native store:
341
- ```ts
342
- export const logAnalyticsEvent = (name: string, params?: Record<string, any>) => {
343
- if (NativeModules.NetworkInspectorModule?.logEvent) {
344
- NativeModules.NetworkInspectorModule.logEvent(name, params);
345
- }
346
- };
347
- ```
396
+ // Change language to Simplified Chinese, Hindi, Spanish, etc.
397
+ setLanguage('zh'); // 'en' | 'zh' | 'hi' | 'ja' | 'es' | 'fr' | 'de' | etc.
398
+
399
+ console.log('Current language:', getLanguage());
400
+ ```
348
401
 
349
402
  ---
350
403
 
351
404
  ## 📚 Public API Reference
352
405
 
406
+ ### Component Props: `<NetworkInspector />`
407
+
408
+ | Prop | Type | Default | Description |
409
+ | :--- | :--- | :--- | :--- |
410
+ | `enabled` | `boolean` | `true` | When `false`, completely unmounts with 0% overhead. |
411
+ | `environment` | `string` | `'DEV'` | Environment badge displayed on top bar (`'DEV'`, `'QA'`, `'STAGING'`). |
412
+ | `navigationRef` | `NavigationContainerRef` | `undefined` | React Navigation ref for tagging logs with active screen names. |
413
+ | `storage` | `AsyncStorage / MMKV` | `undefined` | Custom storage instance for persisting inspector settings. |
414
+ | `theme` | `'dark' \| 'light' \| 'system'` | `'dark'` | Visual theme preference. |
415
+ | `defaultTab` | `ActiveTab` | `ActiveTab.APIs` | Initial tab opened when expanding the inspector modal. |
416
+
417
+ ### Module Exports: `react-native-inapp-inspector`
418
+
353
419
  | Export | Type | Description |
354
- | --- | --- | --- |
355
- | `NetworkInspector` | Component | Floating inspector overlay. Mount near app root. |
356
- | `getNativeDeviceMetrics()` | Function | Returns native RAM, heap, disk, battery, and hardware metrics. |
357
- | `enableNativeCrashProtection()` | Function | Enables native signal & uncaught exception protection. |
358
- | `subscribeNativeCrashes(cb)` | Function | Subscribes to native crash events. |
359
- | `setupNetworkLogger()` | Function | Patches `fetch`, default Axios, and future `axios.create()` instances. |
360
- | `addAxiosInterceptors(instance)` | Function | Manually attaches Axios interceptors to an existing instance. |
361
- | `clearNetworkLogs()` | Function | Clears captured network requests. |
362
- | `subscribeNetworkLogs(cb)` | Function | Subscribes to network log updates. |
363
- | `setupConsoleLogger()` | Function | Intercepts `console.log`, `info`, `warn`, and `error`. |
364
- | `clearConsoleLogs()` | Function | Clears captured console logs. |
365
- | `subscribeConsoleLogs(cb)` | Function | Subscribes to console log updates. |
366
- | `connectReduxStore(store)` | Function | Connects a Redux store for state and action inspection. |
367
- | `inspectorReduxMiddleware` | Middleware | Redux middleware for capturing thunks, sagas, and RTK Query actions. |
368
- | `setupAnalyticsLogger(instance)` | Function | Patches a Firebase Analytics instance. |
369
- | `logAnalyticsEvent(name, params?, userProps?)` | Function | Logs a manual analytics event. |
370
- | `ErrorBoundary` | Component | React error boundary component. |
420
+ | :--- | :--- | :--- |
421
+ | `setupNetworkLogger(options?)` | `Function` | Intercepts `fetch`, Axios, and XMLHttpRequest. |
422
+ | `setupConsoleLogger()` | `Function` | Intercepts `console.log/info/warn/error` with Metro symbolication. |
423
+ | `setupSocketLogger()` | `Function` | Intercepts WebSocket and Socket.IO real-time traffic. |
424
+ | `connectReduxStore(store)` | `Function` | Connects a Redux store for action timeline and state diffs. |
425
+ | `connectAsyncStorage(storage)` | `Function` | Connects AsyncStorage to the Storage tab. |
426
+ | `connectMMKV(instance, id?)` | `Function` | Connects an MMKV instance to the Storage tab. |
427
+ | `autoSetupPushLogger()` | `Function` | Automatically attaches push notification logger. |
428
+ | `recordPushNotification(record)` | `Function` | Manually records an incoming push notification. |
429
+ | `ScreenCapture` | `Object` | Screenshot, video recording, and GIF capture API. |
430
+ | `getNativeDeviceMetrics()` | `Function` | Returns hardware RAM, heap, disk, battery, and CPU info. |
431
+ | `setupGlobalCrashHandler()` | `Function` | Captures uncaught JS errors and records breadcrumbs. |
432
+ | `enableNativeCrashProtection()`| `Function` | Enables native crash signal and uncaught exception protection. |
433
+ | `setLanguage(code)` | `Function` | Switches inspector language across 25 supported locales. |
434
+ | `SUPPORTED_LANGUAGES` | `Array` | Array of all 25 supported languages with country metadata. |
435
+
436
+ ---
437
+
438
+ ## 📱 Sub-Path Modular Imports
439
+
440
+ For optimal bundle tree-shaking, you can import specific sub-modules directly:
441
+
442
+ ```typescript
443
+ import { setupNetworkLogger } from 'react-native-inapp-inspector/network';
444
+ import { setupSocketLogger } from 'react-native-inapp-inspector/socket';
445
+ import { connectAsyncStorage, connectMMKV } from 'react-native-inapp-inspector/storage';
446
+ import { autoSetupPushLogger } from 'react-native-inapp-inspector/push';
447
+ import { connectReduxStore, inspectorReduxMiddleware } from 'react-native-inapp-inspector/redux';
448
+ import { setupConsoleLogger } from 'react-native-inapp-inspector/console';
449
+ import { ScreenCapture } from 'react-native-inapp-inspector/capture';
450
+ ```
371
451
 
372
452
  ---
373
453
 
374
454
  ## 📱 Example App
375
455
 
376
- Check out the `example` directory for a complete demo application:
456
+ Explore a complete working showcase in the `example/` directory:
377
457
 
378
458
  ```bash
379
459
  cd example
@@ -388,24 +468,41 @@ npm run android
388
468
 
389
469
  ## 🤝 Contributing
390
470
 
391
- Contributions are welcome! Please check out our [Contributing Guidelines](CONTRIBUTING.md) to get started.
471
+ Contributions are warmly welcomed! Please check out [CONTRIBUTING.md](CONTRIBUTING.md) to get started with local development and testing.
392
472
 
393
473
  ---
394
474
 
395
475
  ## 💖 Support & Sponsoring
396
476
 
397
- This library is a free, open-source utility maintained in spare time. If it saved you or your team time debugging, please consider supporting its continuous development.
477
+ `react-native-inapp-inspector` is an independent, free, open-source project. If it has simplified your daily development, saved your team debugging hours, or made QA testing smoother, please consider starring the repository and supporting its maintenance:
398
478
 
399
479
  👉 **[Sponsor @vengatmacuser on GitHub Sponsors](https://github.com/sponsors/vengatmacuser)**
400
480
 
401
- ## 🔍 Keywords & Search Topics
402
-
403
- `react-native-inapp-inspector` is designed for engineers seeking:
404
- * **Network Logging**: React Native network logger, in-app HTTP/HTTPS network inspector, Axios interceptor, Fetch API logger, GraphQL network monitor, WebSocket stream logger, cURL snippet export on device.
405
- * **Modern Tool Alternatives**: Standalone Flipper alternative for React Native, Chucker for React Native Android & iOS, React Native Debugger replacement, mobile Proxyman / Charles Proxy alternative.
406
- * **State & Storage Inspection**: React Native Redux DevTools on mobile, Redux Toolkit action diffs, `redux-persist` metadata inspector, AsyncStorage viewer & editor, MMKV storage debugger.
407
- * **Crash & Diagnostics**: React Native crash reporter, Metro symbolicated stack traces, React Error Boundary with fault-isolated Micro-UI architecture, low-level RAM & battery telemetry, device hardware inspector.
408
- * **Analytics & Screen Capture**: Firebase Analytics event inspector, GA4 debugger, on-device screen recorder, video capture, and screenshot utility for bare React Native & Expo applications.
481
+ ## 🔍 Global Search Keywords & Regional Topics
482
+
483
+ `react-native-inapp-inspector` is index-optimized for developers and teams searching across all world markets, languages, and regional dev ecosystems:
484
+
485
+ | Region / Market | Primary Countries | Search Keywords & Native Regional Developer Terms |
486
+ | :--- | :--- | :--- |
487
+ | 🇺🇸 🇬🇧 🇨🇦 🇦🇺 🇳🇿 🇮🇪 | **USA, UK, Canada, Australia, New Zealand, Ireland** | React Native network logger, Flipper alternative, Charles proxy alternative, Chucker for React Native, Proxyman alternative, in-app inspector, WebSocket inspector, AsyncStorage editor, MMKV debugger, push notification logger, Metro source-map symbolication, Hermes bytecode visualizer, mobile devtools, zero-config network debugger. |
488
+ | 🇨🇳 🇹🇼 🇭🇰 🇸🇬 | **China, Taiwan, Hong Kong, Singapore** | React Native 抓包工具, 移动端抓包, 网络监控, 移动端控制台, 调试工具, Flipper 替代方案, Charles 替代, Chucker 替代, Proxyman 替代, WebSocket 实时抓包, MMKV 查看器, AsyncStorage 查看器, 免电脑抓包, 行動端偵錯, 網路封包側錄, 移动端网络调试, 真机调试工具. |
489
+ | 🇮🇳 | **India & South Asia** | react-native-india, नेटवर्क लॉगर, मोबाइल ऐप डिबगिंग, इन-ऐप इंस्पेक्टर, வலைப்பின்னல் பதிவர் (Tamil), நெட்வொர்க் இன்ஸ்பெக்டர், வலைப்பின்னல் ஆய்வாளர், నెట్‌వర్క్ లాగర్ (Telugu), నెట్‌వర్క్ ఇన్‌స్పెక్టర్, ನೆಟ್‌ವರ್ಕ್ ಲಾಗರ್ (Kannada), നെറ്റ്‌വർക്ക് ലോഗർ (Malayalam), নেটওয়ার্ক লগার (Bengali), नेटवर्क लॉगर मराठी (Marathi), react-native-bangalore, react-native-hyderabad. |
490
+ | 🇯🇵 | **Japan** | リアクトネイティブ デバッガー, ネットワークロガー, パケットキャプチャ, 開発ツール, フリッパー代替, 通信ログ監視, チャールズ代替, アプリ内デバッガー, モバイル開発ツール, 通信監視ツール, WebSocket デバッグ, 端末内インスペクター, 通信ログ. |
491
+ | 🇰🇷 | **South Korea** | 리액트 네이티브 디버거, 네트워크 로거, 모바일 패킷 캡처, 플리퍼 대체, 인앱 디버거, 웹소켓 로거, 찰스 프록시 대체, 차커 대체, 단말기 디버거, 모바일 개발 도구, 리액트네이티브 디버깅. |
492
+ | 🇪🇸 🇲🇽 🇦🇷 🇨🇴 🇨🇱 | **Spain, Mexico, Argentina, Colombia, Chile, Peru** | Depurador React Native, captura de red móvil, registro de red, alternativa a Flipper, alternativa a Charles, herramientas de desarrollo React Native, editor de AsyncStorage en vivo, depuración móvil, monitor de tráfico móvil, react-native-mexico, react-native-argentina. |
493
+ | 🇩🇪 🇦🇹 🇨🇭 | **Germany, Austria, Switzerland (DACH)** | Netzwerk-Logger, Entwicklertools React Native, In-App-Debugger Deutschland, Flipper-Alternative, Charles-Alternative, Paketmitschnitt Mobil, Netzwerk-Mitschnitt, Chucker-Alternative Deutsch, Fehlersuche Mobil, Speicher-Inspektor. |
494
+ | 🇫🇷 🇧🇪 🇨🇦 | **France, Belgium, Canada (Quebec), Francophonie** | Débogueur React Native, inspecteur réseau mobile, outils de développement, alternative à Flipper, journal réseau, analyseur réseau mobile, capture paquets mobile, dépannage mobile React Native, inspecteur réseau France. |
495
+ | 🇧🇷 🇵🇹 🇦🇴 | **Brazil, Portugal, Angola** | Depurador React Native, inspetor de rede móvel, ferramentas dev, alternativa ao Flipper, captura de pacotes, editor de storage mobile, react-native-brasil, depurador mobile, monitor de rede mobile. |
496
+ | 🇷🇺 🇰🇿 🇧🇾 🇺🇦 | **Russia, Kazakhstan, Belarus, Ukraine (CIS)** | Отладчик React Native, сниффер сети, логирование сети, альтернатива Flipper, перехватчик трафика, мобильная отладка, инспектор сети, налагоджувач React Native Україна, логер мережі. |
497
+ | 🇦🇪 🇸🇦 🇪🇬 🇶🇦 | **Middle East & North Africa (MENA)** | فاحص الشبكة رياكت نيتف, مصحح أخطاء الموبايل, مراقب الشبكة, بديل فليبر, أدوات مطور رياكت نيتف, فاحص الشبكة المحمول, تسجيل حزم البيانات. |
498
+ | 🇮🇹 | **Italy** | Debugger React Native Italia, ispettore di rete, strumenti sviluppo mobile, cattura traffico mobile, alternativa Flipper Italia, registro chiamate HTTP. |
499
+ | 🇳🇱 🇧🇪 | **Netherlands & Belgium (Flanders)** | Netwerk inspecteur Nederlands, netwerk logger Nederland, mobiele debugger, React Native ontwikkelaar, pakket sniffer mobiel, Flipper alternatief Nederland. |
500
+ | 🇵🇱 | **Poland & Central Europe** | Debuger React Native Polska, inspektor sieci mobilnej, narzędzia programistyczne, rejestrator pakietów, rejestrator sieci, alternatywa dla Flipper. |
501
+ | 🇹🇷 | **Turkey & Central Asia** | Ağ günlükçüsü Türkçe, hata ayıklayıcı, ağ denetleyicisi, Flipper alternatifi, React Native geliştirici araçları, mobil paket yakalama. |
502
+ | 🇮🇩 🇻🇳 🇹🇭 🇵🇭 🇲🇾 | **Southeast Asia (ASEAN)** | Alat debug React Native Indonesia, pelacak jaringan mobile, kiểm tra mạng React Native Vietnam, ghi log mạng mobile, ดีบักเกอร์ React Native Thai, เครื่องมือตรวจสอบเครือข่าย, tagasuri ng network React Native Philippines. |
503
+ | 🇸🇪 🇳🇴 🇩🇰 🇫🇮 | **Nordic Countries (Sweden, Norway, Denmark, Finland)** | Nätverkslogg Sverige, felsökare React Native, utvecklarverktyg React Native, mobildebuggning. |
504
+ | 🇮🇱 | **Israel** | מנפה שגיאות ריאקט נייטיב, ניטור רשת מובייל, כלי פיתוח מובייל, לוכד תעבורת רשת. |
505
+ | 🇿🇦 🇳🇬 🇰🇪 | **Sub-Saharan Africa (South Africa, Nigeria, Kenya)** | React Native Nigeria, React Native South Africa, mobile debugging Kenya, in-app inspector Africa. |
409
506
 
410
507
  ---
411
508