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.
- package/README.ar.md +163 -0
- package/README.de.md +163 -0
- package/README.es.md +164 -0
- package/README.fr.md +163 -0
- package/README.hi.md +163 -0
- package/README.ja.md +180 -0
- package/README.ko.md +163 -0
- package/README.md +340 -243
- package/README.pt-BR.md +163 -0
- package/README.ru.md +163 -0
- package/README.zh-CN.md +387 -0
- package/android/src/main/java/com/inappinspector/NetworkInspectorModule.kt +82 -21
- package/assets/banner_dark.svg +186 -0
- package/assets/banner_light.svg +186 -0
- package/assets/icon_circle.svg +148 -0
- package/assets/icon_square.svg +369 -0
- package/assets/inapp_inspector_icon.gif +0 -0
- package/assets/inapp_inspector_icon_original.gif +0 -0
- package/assets/social_preview.png +0 -0
- package/assets/walkthrough.gif +0 -0
- package/dist/commonjs/components/AnimatedBrandOwl.d.ts +7 -0
- package/dist/commonjs/components/AnimatedBrandOwl.js +175 -0
- package/dist/commonjs/components/AppHeaderLogo.d.ts +1 -0
- package/dist/commonjs/components/AppHeaderLogo.js +7 -5
- package/dist/commonjs/components/BrandSquareIcon.d.ts +5 -0
- package/dist/commonjs/components/BrandSquareIcon.js +139 -0
- package/dist/commonjs/components/ConsoleLogCard.d.ts +2 -1
- package/dist/commonjs/components/ConsoleLogCard.js +23 -39
- package/dist/commonjs/components/Inspector/AboutModal.js +44 -54
- package/dist/commonjs/components/Inspector/AnalyticsTab.js +16 -16
- package/dist/commonjs/components/Inspector/ConfirmationModal.d.ts +13 -0
- package/dist/commonjs/components/Inspector/ConfirmationModal.js +32 -0
- package/dist/commonjs/components/Inspector/ConsoleTab.js +15 -15
- package/dist/commonjs/components/Inspector/CrashTab.js +25 -23
- package/dist/commonjs/components/Inspector/DebuggingTab.js +17 -17
- package/dist/commonjs/components/Inspector/FabLauncher.js +22 -30
- package/dist/commonjs/components/Inspector/FeatureUnderDevNotice.js +2 -2
- package/dist/commonjs/components/Inspector/LanguageSelectorModal.d.ts +15 -0
- package/dist/commonjs/components/Inspector/LanguageSelectorModal.js +90 -0
- package/dist/commonjs/components/Inspector/MainScreen.js +46 -33
- package/dist/commonjs/components/Inspector/MediaGalleryTab.js +21 -19
- package/dist/commonjs/components/Inspector/MediaPreviewModal.js +85 -101
- package/dist/commonjs/components/Inspector/NetworkTab.js +50 -50
- package/dist/commonjs/components/Inspector/NpmUpdateToast.js +1 -1
- package/dist/commonjs/components/Inspector/PushCard.d.ts +3 -2
- package/dist/commonjs/components/Inspector/PushCard.js +5 -4
- package/dist/commonjs/components/Inspector/PushDetail.js +32 -23
- package/dist/commonjs/components/Inspector/PushTab.js +13 -13
- package/dist/commonjs/components/Inspector/ReduxDetail.js +32 -32
- package/dist/commonjs/components/Inspector/ReduxTab.js +14 -14
- package/dist/commonjs/components/Inspector/SettingsPanel.js +258 -139
- package/dist/commonjs/components/Inspector/SocketCard.d.ts +5 -0
- package/dist/commonjs/components/Inspector/SocketCard.js +116 -0
- package/dist/commonjs/components/Inspector/SocketDetail.d.ts +4 -0
- package/dist/commonjs/components/Inspector/SocketDetail.js +317 -0
- package/dist/commonjs/components/Inspector/SocketFilterModal.d.ts +13 -0
- package/dist/commonjs/components/Inspector/SocketFilterModal.js +69 -0
- package/dist/commonjs/components/Inspector/SocketTab.d.ts +3 -0
- package/dist/commonjs/components/Inspector/SocketTab.js +112 -0
- package/dist/commonjs/components/Inspector/StorageTab.js +34 -32
- package/dist/commonjs/components/Inspector/SupportModal.d.ts +7 -0
- package/dist/commonjs/components/Inspector/SupportModal.js +125 -0
- package/dist/commonjs/components/Inspector/SupportPage.d.ts +5 -0
- package/dist/commonjs/components/Inspector/SupportPage.js +227 -0
- package/dist/commonjs/components/Inspector/TabBar.js +24 -23
- package/dist/commonjs/components/Inspector/UpdateAvailableModal.js +24 -24
- package/dist/commonjs/components/JsonViewer.js +7 -7
- package/dist/commonjs/components/LogCard.d.ts +3 -2
- package/dist/commonjs/components/LogCard.js +17 -14
- package/dist/commonjs/components/LogSyntaxHighlighter.js +5 -5
- package/dist/commonjs/components/ModuleErrorBoundary.js +2 -2
- package/dist/commonjs/components/NetworkIcons.d.ts +15 -0
- package/dist/commonjs/components/NetworkIcons.js +38 -3
- package/dist/commonjs/components/SegmentedTabs.js +1 -1
- package/dist/commonjs/constants/version.d.ts +1 -1
- package/dist/commonjs/constants/version.js +1 -1
- package/dist/commonjs/customHooks/socketLogger.d.ts +26 -0
- package/dist/commonjs/customHooks/socketLogger.js +2 -0
- package/dist/commonjs/helpers/index.js +3 -3
- package/dist/commonjs/helpers/memoryManager.d.ts +1 -0
- package/dist/commonjs/helpers/memoryManager.js +1 -1
- package/dist/commonjs/helpers/searchQueryParser.d.ts +1 -1
- package/dist/commonjs/helpers/searchQueryParser.js +5 -1
- package/dist/commonjs/helpers/settingsStore.d.ts +1 -0
- package/dist/commonjs/helpers/settingsStore.js +1 -1
- package/dist/commonjs/helpers/shareFormatter.d.ts +3 -1
- package/dist/commonjs/helpers/shareFormatter.js +8 -7
- package/dist/commonjs/i18n/index.d.ts +99 -1
- package/dist/commonjs/i18n/index.js +1 -1
- package/dist/commonjs/i18n/locales/ar.json +1 -1
- package/dist/commonjs/i18n/locales/bn.json +1 -0
- package/dist/commonjs/i18n/locales/de.json +1 -1
- package/dist/commonjs/i18n/locales/en.json +1 -1
- package/dist/commonjs/i18n/locales/es.json +1 -1
- package/dist/commonjs/i18n/locales/fr.json +1 -1
- package/dist/commonjs/i18n/locales/gu.json +1 -0
- package/dist/commonjs/i18n/locales/hi.json +1 -1
- package/dist/commonjs/i18n/locales/id.json +1 -0
- package/dist/commonjs/i18n/locales/it.json +1 -0
- package/dist/commonjs/i18n/locales/ja.json +1 -1
- package/dist/commonjs/i18n/locales/kn.json +1 -0
- package/dist/commonjs/i18n/locales/ko.json +1 -1
- package/dist/commonjs/i18n/locales/ml.json +1 -0
- package/dist/commonjs/i18n/locales/mr.json +1 -0
- package/dist/commonjs/i18n/locales/nl.json +1 -0
- package/dist/commonjs/i18n/locales/pa.json +1 -0
- package/dist/commonjs/i18n/locales/pl.json +1 -0
- package/dist/commonjs/i18n/locales/pt.json +1 -1
- package/dist/commonjs/i18n/locales/ru.json +1 -1
- package/dist/commonjs/i18n/locales/ta.json +1 -0
- package/dist/commonjs/i18n/locales/te.json +1 -0
- package/dist/commonjs/i18n/locales/tr.json +1 -0
- package/dist/commonjs/i18n/locales/vi.json +1 -0
- package/dist/commonjs/i18n/locales/zh.json +1 -1
- package/dist/commonjs/index.d.ts +13 -13
- package/dist/commonjs/index.js +5 -4
- package/dist/commonjs/native/NativeInspector.d.ts +1 -0
- package/dist/commonjs/socket.d.ts +4 -0
- package/dist/commonjs/socket.js +1 -0
- package/dist/commonjs/styles/index.d.ts +23 -0
- package/dist/commonjs/styles/index.js +1 -1
- package/dist/commonjs/types/enums.d.ts +40 -0
- package/dist/commonjs/types/enums.js +1 -1
- package/dist/commonjs/types/interfaces.d.ts +122 -1
- package/dist/esm/components/AnimatedBrandOwl.d.ts +7 -0
- package/dist/esm/components/AnimatedBrandOwl.js +175 -0
- package/dist/esm/components/AppHeaderLogo.d.ts +1 -0
- package/dist/esm/components/AppHeaderLogo.js +7 -5
- package/dist/esm/components/BrandSquareIcon.d.ts +5 -0
- package/dist/esm/components/BrandSquareIcon.js +139 -0
- package/dist/esm/components/ConsoleLogCard.d.ts +2 -1
- package/dist/esm/components/ConsoleLogCard.js +61 -77
- package/dist/esm/components/Inspector/AboutModal.js +85 -95
- package/dist/esm/components/Inspector/AnalyticsTab.js +31 -31
- package/dist/esm/components/Inspector/ConfirmationModal.d.ts +13 -0
- package/dist/esm/components/Inspector/ConfirmationModal.js +32 -0
- package/dist/esm/components/Inspector/ConsoleTab.js +49 -49
- package/dist/esm/components/Inspector/CrashTab.js +40 -38
- package/dist/esm/components/Inspector/DebuggingTab.js +29 -29
- package/dist/esm/components/Inspector/FabLauncher.js +50 -58
- package/dist/esm/components/Inspector/FeatureUnderDevNotice.js +7 -7
- package/dist/esm/components/Inspector/LanguageSelectorModal.d.ts +15 -0
- package/dist/esm/components/Inspector/LanguageSelectorModal.js +90 -0
- package/dist/esm/components/Inspector/MainScreen.js +123 -110
- package/dist/esm/components/Inspector/MediaGalleryTab.js +64 -62
- package/dist/esm/components/Inspector/MediaPreviewModal.js +107 -123
- package/dist/esm/components/Inspector/NetworkTab.js +90 -90
- package/dist/esm/components/Inspector/NpmUpdateToast.js +1 -1
- package/dist/esm/components/Inspector/PushCard.d.ts +3 -2
- package/dist/esm/components/Inspector/PushCard.js +23 -22
- package/dist/esm/components/Inspector/PushDetail.js +34 -25
- package/dist/esm/components/Inspector/PushTab.js +25 -25
- package/dist/esm/components/Inspector/ReduxDetail.js +42 -42
- package/dist/esm/components/Inspector/ReduxTab.js +35 -35
- package/dist/esm/components/Inspector/SettingsPanel.js +495 -376
- package/dist/esm/components/Inspector/SocketCard.d.ts +5 -0
- package/dist/esm/components/Inspector/SocketCard.js +116 -0
- package/dist/esm/components/Inspector/SocketDetail.d.ts +4 -0
- package/dist/esm/components/Inspector/SocketDetail.js +317 -0
- package/dist/esm/components/Inspector/SocketFilterModal.d.ts +13 -0
- package/dist/esm/components/Inspector/SocketFilterModal.js +69 -0
- package/dist/esm/components/Inspector/SocketTab.d.ts +3 -0
- package/dist/esm/components/Inspector/SocketTab.js +112 -0
- package/dist/esm/components/Inspector/StorageTab.js +136 -134
- package/dist/esm/components/Inspector/SupportModal.d.ts +7 -0
- package/dist/esm/components/Inspector/SupportModal.js +125 -0
- package/dist/esm/components/Inspector/SupportPage.d.ts +5 -0
- package/dist/esm/components/Inspector/SupportPage.js +227 -0
- package/dist/esm/components/Inspector/TabBar.js +36 -35
- package/dist/esm/components/Inspector/UpdateAvailableModal.js +22 -22
- package/dist/esm/components/JsonViewer.js +55 -55
- package/dist/esm/components/LogCard.d.ts +3 -2
- package/dist/esm/components/LogCard.js +61 -58
- package/dist/esm/components/LogSyntaxHighlighter.js +5 -5
- package/dist/esm/components/ModuleErrorBoundary.js +23 -23
- package/dist/esm/components/NetworkIcons.d.ts +15 -0
- package/dist/esm/components/NetworkIcons.js +38 -3
- package/dist/esm/components/SegmentedTabs.js +7 -7
- package/dist/esm/constants/version.d.ts +1 -1
- package/dist/esm/constants/version.js +1 -1
- package/dist/esm/customHooks/socketLogger.d.ts +26 -0
- package/dist/esm/customHooks/socketLogger.js +2 -0
- package/dist/esm/helpers/index.js +3 -3
- package/dist/esm/helpers/memoryManager.d.ts +1 -0
- package/dist/esm/helpers/memoryManager.js +1 -1
- package/dist/esm/helpers/searchQueryParser.d.ts +1 -1
- package/dist/esm/helpers/searchQueryParser.js +5 -1
- package/dist/esm/helpers/settingsStore.d.ts +1 -0
- package/dist/esm/helpers/settingsStore.js +1 -1
- package/dist/esm/helpers/shareFormatter.d.ts +3 -1
- package/dist/esm/helpers/shareFormatter.js +8 -7
- package/dist/esm/i18n/index.d.ts +99 -1
- package/dist/esm/i18n/index.js +1 -1
- package/dist/esm/i18n/locales/ar.json +1 -1
- package/dist/esm/i18n/locales/bn.json +1 -0
- package/dist/esm/i18n/locales/de.json +1 -1
- package/dist/esm/i18n/locales/en.json +1 -1
- package/dist/esm/i18n/locales/es.json +1 -1
- package/dist/esm/i18n/locales/fr.json +1 -1
- package/dist/esm/i18n/locales/gu.json +1 -0
- package/dist/esm/i18n/locales/hi.json +1 -1
- package/dist/esm/i18n/locales/id.json +1 -0
- package/dist/esm/i18n/locales/it.json +1 -0
- package/dist/esm/i18n/locales/ja.json +1 -1
- package/dist/esm/i18n/locales/kn.json +1 -0
- package/dist/esm/i18n/locales/ko.json +1 -1
- package/dist/esm/i18n/locales/ml.json +1 -0
- package/dist/esm/i18n/locales/mr.json +1 -0
- package/dist/esm/i18n/locales/nl.json +1 -0
- package/dist/esm/i18n/locales/pa.json +1 -0
- package/dist/esm/i18n/locales/pl.json +1 -0
- package/dist/esm/i18n/locales/pt.json +1 -1
- package/dist/esm/i18n/locales/ru.json +1 -1
- package/dist/esm/i18n/locales/ta.json +1 -0
- package/dist/esm/i18n/locales/te.json +1 -0
- package/dist/esm/i18n/locales/tr.json +1 -0
- package/dist/esm/i18n/locales/vi.json +1 -0
- package/dist/esm/i18n/locales/zh.json +1 -1
- package/dist/esm/index.d.ts +13 -13
- package/dist/esm/index.js +8 -7
- package/dist/esm/native/NativeInspector.d.ts +1 -0
- package/dist/esm/socket.d.ts +4 -0
- package/dist/esm/socket.js +1 -0
- package/dist/esm/styles/index.d.ts +23 -0
- package/dist/esm/styles/index.js +1 -1
- package/dist/esm/types/enums.d.ts +40 -0
- package/dist/esm/types/enums.js +1 -1
- package/dist/esm/types/interfaces.d.ts +122 -1
- package/ios/NetworkInspectorModule.mm +102 -12
- package/package.json +204 -2
- 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/
|
|
29
|
-
<img src="https://img.shields.io/badge/
|
|
30
|
-
<img src="https://img.shields.io/badge/
|
|
31
|
-
<img src="https://img.shields.io/badge/
|
|
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
|
|
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
|
-
<
|
|
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
|
-
| **
|
|
50
|
-
| **
|
|
51
|
-
| **
|
|
52
|
-
| **
|
|
53
|
-
| **
|
|
54
|
-
| **
|
|
55
|
-
| **
|
|
56
|
-
| **
|
|
57
|
-
| **
|
|
58
|
-
| **
|
|
59
|
-
| **
|
|
60
|
-
| **
|
|
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
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
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
|
-
##
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
197
|
+
pnpm add -D react-native-inapp-inspector react-native-svg
|
|
94
198
|
```
|
|
95
199
|
|
|
200
|
+
#### iOS CocoaPods Setup
|
|
96
201
|
```bash
|
|
97
|
-
|
|
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
|
|
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
|
-
## 🚀
|
|
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
|
-
###
|
|
215
|
+
### 1. Basic Setup in `App.tsx`
|
|
137
216
|
|
|
138
|
-
|
|
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
|
-
```
|
|
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
|
-
|
|
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
|
-
|
|
260
|
+
---
|
|
155
261
|
|
|
156
|
-
|
|
157
|
-
import {
|
|
158
|
-
getNativeDeviceMetrics,
|
|
159
|
-
enableNativeCrashProtection,
|
|
160
|
-
subscribeNativeCrashes
|
|
161
|
-
} from 'react-native-inapp-inspector';
|
|
262
|
+
## 💡 Advanced Usage & Feature Guides
|
|
162
263
|
|
|
163
|
-
|
|
164
|
-
|
|
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
|
-
|
|
177
|
-
|
|
267
|
+
```typescript
|
|
268
|
+
import { setupNetworkLogger } from 'react-native-inapp-inspector';
|
|
178
269
|
|
|
179
|
-
//
|
|
180
|
-
|
|
181
|
-
|
|
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
|
-
|
|
280
|
+
```typescript
|
|
281
|
+
import { setupSocketLogger, recordSocketConnection, recordSocketFrame } from 'react-native-inapp-inspector/socket';
|
|
190
282
|
|
|
191
|
-
|
|
192
|
-
|
|
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
|
-
|
|
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
|
-
|
|
294
|
+
### 💾 Storage Tab Integration (AsyncStorage & MMKV)
|
|
295
|
+
Inspect and mutate storage keys in real-time on your phone:
|
|
205
296
|
|
|
206
|
-
```
|
|
207
|
-
|
|
208
|
-
import
|
|
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
|
-
|
|
302
|
+
connectAsyncStorage(AsyncStorage);
|
|
211
303
|
|
|
212
|
-
|
|
304
|
+
// For react-native-mmkv
|
|
305
|
+
import { MMKV } from 'react-native-mmkv';
|
|
306
|
+
import { connectMMKV } from 'react-native-inapp-inspector/storage';
|
|
213
307
|
|
|
214
|
-
|
|
215
|
-
|
|
308
|
+
export const storage = new MMKV();
|
|
309
|
+
connectMMKV(storage, 'default');
|
|
216
310
|
```
|
|
217
311
|
|
|
218
|
-
|
|
219
|
-
|
|
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
|
-
|
|
318
|
+
// Auto-detect and hook available push providers (FCM, OneSignal, etc.)
|
|
319
|
+
autoSetupPushLogger();
|
|
226
320
|
|
|
227
|
-
|
|
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
|
-
|
|
230
|
-
|
|
231
|
-
|
|
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
|
-
```
|
|
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
|
-
|
|
357
|
+
export default function App() {
|
|
256
358
|
return (
|
|
257
359
|
<>
|
|
258
360
|
<NavigationContainer ref={navigationRef}>
|
|
259
|
-
|
|
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
|
-
|
|
372
|
+
```typescript
|
|
373
|
+
import { ScreenCapture } from 'react-native-inapp-inspector/capture';
|
|
270
374
|
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
375
|
+
// Take high-resolution screenshot
|
|
376
|
+
const shot = await ScreenCapture.takeScreenshot({ format: 'png' });
|
|
377
|
+
console.log('Saved screenshot to:', shot.uri);
|
|
274
378
|
|
|
275
|
-
|
|
276
|
-
|
|
379
|
+
// Start video recording with mic audio
|
|
380
|
+
await ScreenCapture.startRecording({
|
|
381
|
+
audioSource: 'mic',
|
|
382
|
+
format: 'mp4',
|
|
383
|
+
});
|
|
277
384
|
|
|
278
|
-
|
|
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
|
-
|
|
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
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
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
|
-
| `
|
|
356
|
-
| `
|
|
357
|
-
| `
|
|
358
|
-
| `
|
|
359
|
-
| `
|
|
360
|
-
| `
|
|
361
|
-
| `
|
|
362
|
-
| `
|
|
363
|
-
| `
|
|
364
|
-
| `
|
|
365
|
-
| `
|
|
366
|
-
| `
|
|
367
|
-
| `
|
|
368
|
-
| `
|
|
369
|
-
|
|
370
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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 &
|
|
402
|
-
|
|
403
|
-
`react-native-inapp-inspector` is
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
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
|
|