react-native-inapp-inspector 1.1.34 → 2.0.0

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 (122) hide show
  1. package/README.md +123 -101
  2. package/android/build.gradle +13 -1
  3. package/android/src/main/java/com/inappinspector/NetworkInspectorModule.kt +904 -0
  4. package/android/src/main/java/com/inappinspector/NetworkInspectorPackage.kt +17 -0
  5. package/dist/commonjs/components/ConsoleLogCard.js +57 -56
  6. package/dist/commonjs/components/CopyButton.js +10 -1
  7. package/dist/commonjs/components/ErrorBoundary.js +3 -0
  8. package/dist/commonjs/components/Inspector/AnalyticsTab.js +7 -3
  9. package/dist/commonjs/components/Inspector/BundleTab.js +20 -20
  10. package/dist/commonjs/components/Inspector/ConsoleTab.js +1 -1
  11. package/dist/commonjs/components/Inspector/CrashDetail.js +16 -12
  12. package/dist/commonjs/components/Inspector/CrashTab.js +97 -90
  13. package/dist/commonjs/components/Inspector/InspectorHeader.js +28 -24
  14. package/dist/commonjs/components/Inspector/MainScreen.js +20 -103
  15. package/dist/commonjs/components/Inspector/NetworkTab.js +143 -10
  16. package/dist/commonjs/components/Inspector/PerformanceTab.js +96 -3
  17. package/dist/commonjs/components/Inspector/ReduxDetail.js +24 -19
  18. package/dist/commonjs/components/Inspector/ReduxTab.js +30 -18
  19. package/dist/commonjs/components/Inspector/SettingsPanel.js +1578 -754
  20. package/dist/commonjs/components/Inspector/TabBar.js +6 -3
  21. package/dist/commonjs/components/LogCard.js +27 -9
  22. package/dist/commonjs/components/MetaAccordion.js +42 -0
  23. package/dist/commonjs/components/NetworkIcons.d.ts +10 -0
  24. package/dist/commonjs/components/NetworkIcons.js +53 -1
  25. package/dist/commonjs/components/Toast.js +3 -3
  26. package/dist/commonjs/components/TouchableScale.d.ts +5 -2
  27. package/dist/commonjs/components/TouchableScale.js +30 -32
  28. package/dist/commonjs/constants/index.d.ts +1 -2
  29. package/dist/commonjs/constants/index.js +4 -0
  30. package/dist/commonjs/constants/version.d.ts +1 -1
  31. package/dist/commonjs/constants/version.js +1 -1
  32. package/dist/commonjs/customHooks/analyticsLogger.d.ts +6 -0
  33. package/dist/commonjs/customHooks/analyticsLogger.js +16 -5
  34. package/dist/commonjs/customHooks/bundleAnalyzer.d.ts +2 -0
  35. package/dist/commonjs/customHooks/bundleAnalyzer.js +26 -17
  36. package/dist/commonjs/customHooks/consoleLogger.d.ts +2 -0
  37. package/dist/commonjs/customHooks/consoleLogger.js +10 -1
  38. package/dist/commonjs/customHooks/crashHandler.d.ts +2 -0
  39. package/dist/commonjs/customHooks/crashHandler.js +17 -1
  40. package/dist/commonjs/customHooks/networkLogger.d.ts +2 -0
  41. package/dist/commonjs/customHooks/networkLogger.js +12 -1
  42. package/dist/commonjs/customHooks/performanceTracker.d.ts +3 -1
  43. package/dist/commonjs/customHooks/performanceTracker.js +18 -4
  44. package/dist/commonjs/customHooks/reduxLogger.d.ts +2 -0
  45. package/dist/commonjs/customHooks/reduxLogger.js +10 -1
  46. package/dist/commonjs/helpers/index.js +10 -1
  47. package/dist/commonjs/helpers/settingsStore.d.ts +9 -0
  48. package/dist/commonjs/helpers/settingsStore.js +59 -3
  49. package/dist/commonjs/i18n/locales/en.json +96 -28
  50. package/dist/commonjs/index.d.ts +1 -0
  51. package/dist/commonjs/index.js +307 -73
  52. package/dist/commonjs/native/NativeInspector.d.ts +125 -0
  53. package/dist/commonjs/native/NativeInspector.js +313 -0
  54. package/dist/commonjs/native/NativeNetworkInspector.d.ts +22 -0
  55. package/dist/commonjs/native/NativeNetworkInspector.js +4 -0
  56. package/dist/commonjs/styles/AppColors.d.ts +28 -0
  57. package/dist/commonjs/styles/AppColors.js +30 -0
  58. package/dist/commonjs/styles/index.js +6 -6
  59. package/dist/commonjs/types/enums.d.ts +1 -1
  60. package/dist/commonjs/types/interfaces.d.ts +9 -0
  61. package/dist/esm/components/ConsoleLogCard.js +58 -57
  62. package/dist/esm/components/CopyButton.js +10 -1
  63. package/dist/esm/components/ErrorBoundary.js +3 -0
  64. package/dist/esm/components/Inspector/AnalyticsTab.js +7 -3
  65. package/dist/esm/components/Inspector/BundleTab.js +20 -20
  66. package/dist/esm/components/Inspector/ConsoleTab.js +1 -1
  67. package/dist/esm/components/Inspector/CrashDetail.js +16 -12
  68. package/dist/esm/components/Inspector/CrashTab.js +97 -90
  69. package/dist/esm/components/Inspector/InspectorHeader.js +29 -25
  70. package/dist/esm/components/Inspector/MainScreen.js +21 -71
  71. package/dist/esm/components/Inspector/NetworkTab.js +145 -12
  72. package/dist/esm/components/Inspector/PerformanceTab.js +96 -3
  73. package/dist/esm/components/Inspector/ReduxDetail.js +24 -19
  74. package/dist/esm/components/Inspector/ReduxTab.js +30 -18
  75. package/dist/esm/components/Inspector/SettingsPanel.js +1582 -758
  76. package/dist/esm/components/Inspector/TabBar.js +7 -4
  77. package/dist/esm/components/LogCard.js +27 -9
  78. package/dist/esm/components/MetaAccordion.js +42 -0
  79. package/dist/esm/components/NetworkIcons.d.ts +10 -0
  80. package/dist/esm/components/NetworkIcons.js +42 -0
  81. package/dist/esm/components/Toast.js +3 -3
  82. package/dist/esm/components/TouchableScale.d.ts +5 -2
  83. package/dist/esm/components/TouchableScale.js +31 -33
  84. package/dist/esm/constants/index.d.ts +1 -2
  85. package/dist/esm/constants/index.js +4 -0
  86. package/dist/esm/constants/version.d.ts +1 -1
  87. package/dist/esm/constants/version.js +1 -1
  88. package/dist/esm/customHooks/analyticsLogger.d.ts +6 -0
  89. package/dist/esm/customHooks/analyticsLogger.js +12 -4
  90. package/dist/esm/customHooks/bundleAnalyzer.d.ts +2 -0
  91. package/dist/esm/customHooks/bundleAnalyzer.js +23 -16
  92. package/dist/esm/customHooks/consoleLogger.d.ts +2 -0
  93. package/dist/esm/customHooks/consoleLogger.js +7 -0
  94. package/dist/esm/customHooks/crashHandler.d.ts +2 -0
  95. package/dist/esm/customHooks/crashHandler.js +14 -0
  96. package/dist/esm/customHooks/networkLogger.d.ts +2 -0
  97. package/dist/esm/customHooks/networkLogger.js +9 -0
  98. package/dist/esm/customHooks/performanceTracker.d.ts +3 -1
  99. package/dist/esm/customHooks/performanceTracker.js +15 -3
  100. package/dist/esm/customHooks/reduxLogger.d.ts +2 -0
  101. package/dist/esm/customHooks/reduxLogger.js +7 -0
  102. package/dist/esm/helpers/index.js +10 -1
  103. package/dist/esm/helpers/settingsStore.d.ts +9 -0
  104. package/dist/esm/helpers/settingsStore.js +58 -3
  105. package/dist/esm/i18n/locales/en.json +96 -28
  106. package/dist/esm/index.d.ts +1 -0
  107. package/dist/esm/index.js +279 -59
  108. package/dist/esm/native/NativeInspector.d.ts +125 -0
  109. package/dist/esm/native/NativeInspector.js +289 -0
  110. package/dist/esm/native/NativeNetworkInspector.d.ts +22 -0
  111. package/dist/esm/native/NativeNetworkInspector.js +2 -0
  112. package/dist/esm/styles/AppColors.d.ts +28 -0
  113. package/dist/esm/styles/AppColors.js +30 -0
  114. package/dist/esm/styles/index.js +6 -6
  115. package/dist/esm/types/enums.d.ts +1 -1
  116. package/dist/esm/types/interfaces.d.ts +9 -0
  117. package/ios/NetworkInspectorModule.h +6 -0
  118. package/ios/NetworkInspectorModule.m +720 -5
  119. package/package.json +15 -3
  120. package/react-native-inapp-inspector.podspec +7 -2
  121. package/android/src/main/java/com/inappinspector/NetworkInspectorModule.java +0 -97
  122. package/android/src/main/java/com/inappinspector/NetworkInspectorPackage.java +0 -28
@@ -77,6 +77,8 @@ export declare function getCallerSourceFile(fallbackName?: string): string;
77
77
  export declare const getInitialRenderProfiles: () => ComponentRenderProfile[];
78
78
  export declare const getInitialPerformanceEvents: () => PerformanceEvent[];
79
79
  export declare const INITIAL_EVENTS: PerformanceEvent[];
80
+ export declare const setPerformanceModuleEnabled: (enabled: boolean) => void;
81
+ export declare const getPerformanceModuleEnabled: () => boolean;
80
82
  export declare const subscribeRenderProfiles: (listener: (profiles: ComponentRenderProfile[]) => void) => () => void;
81
83
  export declare const getRenderProfiles: () => ComponentRenderProfile[];
82
84
  export declare const registerComponentProfile: (profile: ComponentRenderProfile) => void;
@@ -129,7 +131,7 @@ export declare const useComponentProfiler: (componentName: string, options?: {
129
131
  sourceFile?: string;
130
132
  propsToCompare?: Record<string, any>;
131
133
  }) => void;
132
- export declare const usePerformanceTracker: () => {
134
+ export declare const usePerformanceTracker: (enabled?: boolean) => {
133
135
  isRecording: boolean;
134
136
  setIsRecording: import("react").Dispatch<import("react").SetStateAction<boolean>>;
135
137
  currentFps: number;
@@ -170,6 +170,11 @@ export function getCallerSourceFile(fallbackName) {
170
170
  export const getInitialRenderProfiles = () => [];
171
171
  export const getInitialPerformanceEvents = () => [];
172
172
  export const INITIAL_EVENTS = [];
173
+ let isPerformanceModuleEnabled = false;
174
+ export const setPerformanceModuleEnabled = (enabled) => {
175
+ isPerformanceModuleEnabled = enabled;
176
+ };
177
+ export const getPerformanceModuleEnabled = () => isPerformanceModuleEnabled;
173
178
  const globalRenderRegistry = new Map();
174
179
  const renderListeners = new Set();
175
180
  const notifyRenderListeners = () => {
@@ -190,10 +195,14 @@ export const subscribeRenderProfiles = (listener) => {
190
195
  };
191
196
  export const getRenderProfiles = () => Array.from(globalRenderRegistry.values());
192
197
  export const registerComponentProfile = (profile) => {
198
+ if (!isPerformanceModuleEnabled)
199
+ return;
193
200
  globalRenderRegistry.set(profile.name, profile);
194
201
  notifyRenderListeners();
195
202
  };
196
203
  export const trackComponentRender = (params) => {
204
+ if (!isPerformanceModuleEnabled)
205
+ return;
197
206
  const existing = globalRenderRegistry.get(params.name);
198
207
  const now = Date.now();
199
208
  const renderTimeMs = params.renderTimeMs ?? 1.5;
@@ -434,7 +443,8 @@ export const useComponentProfiler = (componentName, options) => {
434
443
  });
435
444
  });
436
445
  };
437
- export const usePerformanceTracker = () => {
446
+ export const usePerformanceTracker = (enabled = true) => {
447
+ const isTrackerActive = enabled && isPerformanceModuleEnabled;
438
448
  const [isRecording, setIsRecording] = useState(true);
439
449
  const [currentFps, setCurrentFps] = useState(60);
440
450
  const [minFps, setMinFps] = useState(60);
@@ -448,6 +458,8 @@ export const usePerformanceTracker = () => {
448
458
  const [renderProfiles, setRenderProfiles] = useState(() => getRenderProfiles());
449
459
  const [events, setEvents] = useState(() => getPerformanceEvents());
450
460
  useEffect(() => {
461
+ if (!isTrackerActive)
462
+ return;
451
463
  const unsubRender = subscribeRenderProfiles(profiles => {
452
464
  setRenderProfiles(profiles);
453
465
  });
@@ -458,13 +470,13 @@ export const usePerformanceTracker = () => {
458
470
  unsubRender();
459
471
  unsubEvents();
460
472
  };
461
- }, []);
473
+ }, [isTrackerActive]);
462
474
  const lastFrameTimeRef = useRef(Date.now());
463
475
  const rafIdRef = useRef(null);
464
476
  const appStartTimestampRef = useRef(Date.now());
465
477
  // Live Frame Measurement Loop
466
478
  useEffect(() => {
467
- if (!isRecording)
479
+ if (!isTrackerActive || !isRecording)
468
480
  return;
469
481
  let isMounted = true;
470
482
  let frameCount = 0;
@@ -1,5 +1,7 @@
1
1
  import { ReduxHistoryEntry } from '../types';
2
2
  export { ReduxHistoryEntry };
3
+ export declare const setReduxModuleEnabled: (enabled: boolean) => void;
4
+ export declare const getReduxModuleEnabled: () => boolean;
3
5
  export declare const isReduxConnected: () => boolean;
4
6
  export declare const getReduxState: () => any;
5
7
  export declare const setReduxAutoRefresh: (val: boolean) => void;
@@ -15,6 +15,11 @@ import { parseStackLine } from '../helpers';
15
15
  let currentReduxState = null;
16
16
  const listeners = new Set();
17
17
  let globalReduxAutoRefresh = true;
18
+ let isReduxModuleEnabled = false;
19
+ export const setReduxModuleEnabled = (enabled) => {
20
+ isReduxModuleEnabled = enabled;
21
+ };
22
+ export const getReduxModuleEnabled = () => isReduxModuleEnabled;
18
23
  let lastActionForReducer = {};
19
24
  let actionHistory = [];
20
25
  const MAX_HISTORY = 50;
@@ -163,6 +168,8 @@ function extractSliceName(actionType, affectedSlices) {
163
168
  return undefined;
164
169
  }
165
170
  function recordAction(action, prevState, nextState, rawStack) {
171
+ if (!isReduxModuleEnabled)
172
+ return;
166
173
  const stack = rawStack || new Error().stack || '';
167
174
  const type = actionTypeOf(action);
168
175
  const payload = action && typeof action === 'object' && action.payload !== undefined
@@ -156,9 +156,18 @@ export const getFetchCommand = (log) => {
156
156
  export const deduplicateLogs = (raw) => {
157
157
  const map = new Map();
158
158
  raw.forEach(entry => {
159
- if (!map.has(entry.id) || entry.status != null) {
159
+ if (!map.has(entry.id)) {
160
160
  map.set(entry.id, entry);
161
161
  }
162
+ else {
163
+ const existing = map.get(entry.id);
164
+ if (existing.status == null && entry.status != null) {
165
+ map.set(entry.id, entry);
166
+ }
167
+ else if ((entry.startTime ?? 0) >= (existing.startTime ?? 0)) {
168
+ map.set(entry.id, entry);
169
+ }
170
+ }
162
171
  });
163
172
  return Array.from(map.values()).sort((a, b) => b.id - a.id);
164
173
  };
@@ -6,3 +6,12 @@ export declare function saveSettings(settings: PersistedSettings): void;
6
6
  export declare function clearPersistedSettings(): Promise<void>;
7
7
  export declare const isPersistentStorageAvailable: () => boolean;
8
8
  export declare function getCustomStorage(): InspectorStorage | null;
9
+ export interface RamLimitsProfile {
10
+ maxNetworkLogs: number;
11
+ maxConsoleLogs: number;
12
+ maxAnalyticsEvents: number;
13
+ maxCrashRecords: number;
14
+ profileName: 'High-End' | 'Standard' | 'Compact' | 'Ultra-Light';
15
+ freeRamMb: number;
16
+ }
17
+ export declare function calculateRamBasedLimits(freeRamMb: number): RamLimitsProfile;
@@ -3,6 +3,7 @@
3
3
  // Backed by iOS Settings (NSUserDefaults) for iOS, or custom storage if passed (e.g. AsyncStorage/MMKV).
4
4
  // Contains an in-memory fallback for Android or Jest test environments.
5
5
  import { Platform, Settings } from 'react-native';
6
+ import { getNativeStorageItem, setNativeStorageItem, isNativeModuleAvailable, } from '../native/NativeInspector';
6
7
  // In-memory fallback (settings survive for the app session only).
7
8
  const memory = new Map();
8
9
  let customStorage = null;
@@ -19,6 +20,13 @@ export async function loadSettings() {
19
20
  const parsed = JSON.parse(raw);
20
21
  return parsed && typeof parsed === 'object' ? parsed : {};
21
22
  }
23
+ if (isNativeModuleAvailable()) {
24
+ const raw = await getNativeStorageItem(SETTINGS_KEY);
25
+ if (raw) {
26
+ const parsed = JSON.parse(raw);
27
+ return parsed && typeof parsed === 'object' ? parsed : {};
28
+ }
29
+ }
22
30
  if (Platform.OS === 'ios') {
23
31
  const raw = Settings.get(SETTINGS_KEY);
24
32
  if (!raw)
@@ -29,7 +37,7 @@ export async function loadSettings() {
29
37
  }
30
38
  return raw && typeof raw === 'object' ? raw : {};
31
39
  }
32
- // Android/fallback: memory
40
+ // In-memory fallback
33
41
  const raw = memory.get(SETTINGS_KEY);
34
42
  if (!raw)
35
43
  return {};
@@ -47,11 +55,13 @@ export function saveSettings(settings) {
47
55
  customStorage.setItem(SETTINGS_KEY, raw);
48
56
  return;
49
57
  }
58
+ if (isNativeModuleAvailable()) {
59
+ setNativeStorageItem(SETTINGS_KEY, raw);
60
+ }
50
61
  if (Platform.OS === 'ios') {
51
62
  Settings.set({ [SETTINGS_KEY]: raw });
52
63
  return;
53
64
  }
54
- // Android/fallback: memory
55
65
  memory.set(SETTINGS_KEY, raw);
56
66
  }
57
67
  catch {
@@ -69,6 +79,9 @@ export async function clearPersistedSettings() {
69
79
  }
70
80
  return;
71
81
  }
82
+ if (isNativeModuleAvailable()) {
83
+ await setNativeStorageItem(SETTINGS_KEY, null);
84
+ }
72
85
  if (Platform.OS === 'ios') {
73
86
  Settings.set({ [SETTINGS_KEY]: null });
74
87
  return;
@@ -80,8 +93,50 @@ export async function clearPersistedSettings() {
80
93
  }
81
94
  }
82
95
  export const isPersistentStorageAvailable = () => {
83
- return customStorage !== null || Platform.OS === 'ios';
96
+ return customStorage !== null || isNativeModuleAvailable() || Platform.OS === 'ios';
84
97
  };
85
98
  export function getCustomStorage() {
86
99
  return customStorage;
87
100
  }
101
+ export function calculateRamBasedLimits(freeRamMb) {
102
+ if (freeRamMb >= 3000) {
103
+ return {
104
+ maxNetworkLogs: 1000,
105
+ maxConsoleLogs: 1500,
106
+ maxAnalyticsEvents: 500,
107
+ maxCrashRecords: 100,
108
+ profileName: 'High-End',
109
+ freeRamMb,
110
+ };
111
+ }
112
+ else if (freeRamMb >= 1500) {
113
+ return {
114
+ maxNetworkLogs: 500,
115
+ maxConsoleLogs: 750,
116
+ maxAnalyticsEvents: 250,
117
+ maxCrashRecords: 50,
118
+ profileName: 'Standard',
119
+ freeRamMb,
120
+ };
121
+ }
122
+ else if (freeRamMb >= 600) {
123
+ return {
124
+ maxNetworkLogs: 200,
125
+ maxConsoleLogs: 300,
126
+ maxAnalyticsEvents: 100,
127
+ maxCrashRecords: 25,
128
+ profileName: 'Compact',
129
+ freeRamMb,
130
+ };
131
+ }
132
+ else {
133
+ return {
134
+ maxNetworkLogs: 100,
135
+ maxConsoleLogs: 150,
136
+ maxAnalyticsEvents: 50,
137
+ maxCrashRecords: 15,
138
+ profileName: 'Ultra-Light',
139
+ freeRamMb,
140
+ };
141
+ }
142
+ }
@@ -39,12 +39,35 @@
39
39
  "redux": "Redux"
40
40
  },
41
41
  "settings": {
42
- "mainTitle": "Settings",
42
+ "mainTitle": "Settings & Modules",
43
+ "mainSubtitle": "Manage modules and preferences",
43
44
  "requiredBadge": "REQUIRED",
44
45
  "defaultBadge": "DEFAULT",
45
46
  "notConnectedBadge": "NOT CONNECTED",
46
47
  "notDetectedBadge": "NOT DETECTED",
47
48
  "readOnlyBadge": "READ ONLY",
49
+ "coreBadge": "CORE",
50
+ "activeBadge": "ACTIVE",
51
+ "dormantBadge": "DORMANT",
52
+ "protectedBadge": "PROTECTED",
53
+ "modulesAndTools": "Modules & Tools",
54
+ "uiPreferences": "UI Preferences",
55
+ "zeroOverheadTitle": "Zero Background Overhead",
56
+ "zeroOverheadDesc": "Check the modules you wish to activate. Disabled modules consume 0% CPU & memory until saved.",
57
+ "unsavedPending": "● Unsaved selections pending",
58
+ "allSynchronized": "All modules synchronized",
59
+ "modulesActive": "{{active}} of {{total}} Modules Active",
60
+ "saveChanges": "Save Changes",
61
+ "settingsSaved": "Settings Saved",
62
+ "settingsSavedDesc": "Active module configurations have been successfully updated.",
63
+ "configure": "Configure",
64
+ "appearanceTheme": "APPEARANCE & THEME",
65
+ "windowLayout": "WINDOW & LAYOUT",
66
+ "startupDefault": "STARTUP & DEFAULT SCREEN",
67
+ "logFiltersDeduplication": "LOG FILTERS & DEDUPLICATION",
68
+ "resetSettings": "Reset All Settings",
69
+ "resetSettingsDesc": "Wipe customized preferences back to default",
70
+ "reset": "Reset",
48
71
  "reduxNotConnectedTip": "Redux store is not connected. Call connectReduxStore(store) or use inspectorReduxMiddleware to enable.",
49
72
  "analyticsNotConnectedTip": "Analytics is not initialized. Call setupAnalyticsLogger(analytics()) to enable.",
50
73
  "tabVisibility": "Tab Visibility",
@@ -55,7 +78,7 @@
55
78
  "title": "APIs Settings",
56
79
  "total": "Total: {{count}}",
57
80
  "maxRequestLogs": "Max Request Logs",
58
- "maxRequestLogsDescription": "How many network requests to keep in memory",
81
+ "maxRequestLogsDescription": "Buffer size of network requests preserved in memory",
59
82
  "clearNetworkLogs": "Clear Network Logs",
60
83
  "clearNetworkLogsDescription": "{{count}} requests stored",
61
84
  "networkLogsCleared": "Network logs cleared.",
@@ -69,56 +92,91 @@
69
92
  "title": "Logs Settings",
70
93
  "total": "Total: {{count}}",
71
94
  "maxConsoleLogs": "Max Console Logs",
72
- "maxConsoleLogsDescription": "How many console logs to keep in memory",
73
- "logLevels": "Log Levels",
74
- "logLevelsDescription": "Which console levels to capture",
75
- "showInfo": "Show info logs",
76
- "showWarn": "Show warn logs",
77
- "showError": "Show error logs",
95
+ "maxConsoleLogsDescription": "How many console messages to retain",
96
+ "logLevels": "Log Severities",
97
+ "logLevelsDescription": "Select which severities to capture in Logs",
98
+ "showInfo": "Show Info logs",
99
+ "showInfoDesc": "Informational logs & debug prints",
100
+ "showWarn": "Show Warning logs",
101
+ "showWarnDesc": "Warning notices & deprecations",
102
+ "showError": "Show Error logs",
103
+ "showErrorDesc": "Runtime errors & exceptions",
78
104
  "clearConsoleLogs": "Clear Console Logs",
79
105
  "clearConsoleLogsDescription": "{{count}} logs stored",
80
106
  "consoleLogsCleared": "Console logs cleared."
81
107
  },
82
108
  "analytics": {
83
109
  "title": "Analytics Settings",
84
- "total": "Total: {{count}}",
85
- "maxAnalyticsEvents": "Max Analytics Events",
86
- "maxAnalyticsEventsDescription": "How many analytics events to keep in memory",
87
- "clearAnalyticsEvents": "Clear Analytics Events",
88
- "clearAnalyticsEventsDescription": "{{count}} events stored",
110
+ "total": "Events: {{count}}",
111
+ "maxAnalyticsEvents": "Events Captured",
112
+ "maxAnalyticsEventsDescription": "{{count}} analytics events stored in buffer",
113
+ "clearAnalyticsEvents": "Clear Analytics History",
114
+ "clearAnalyticsEventsDescription": "Wipe all captured telemetry events",
89
115
  "analyticsEventsCleared": "Analytics events cleared."
90
116
  },
91
117
  "redux": {
92
118
  "title": "Redux Settings",
93
119
  "reducers": "Reducers: {{count}}",
94
120
  "autoRefresh": "Auto-refresh Store",
95
- "autoRefreshDescription": "Automatically capture Redux store state updates",
121
+ "autoRefreshDescription": "Capture Redux store state tree on every dispatch",
96
122
  "defaultJsonExpandDepth": "Default JSON Expand Depth",
97
123
  "defaultJsonExpandDepthDescription": "Initial depth of Redux state tree to auto-expand",
98
124
  "clearReduxState": "Clear Redux State",
99
- "clearReduxStateDescription": "Reset state snapshot in inspector",
100
- "clearReduxStateEmpty": "No store snapshot stored",
125
+ "clearReduxStateDescription": "Reset current state snapshot in inspector",
126
+ "clearReduxStateEmpty": "No store snapshot recorded",
101
127
  "reduxStateCleared": "Redux state snapshot cleared.",
102
128
  "clearReduxTimeline": "Clear Redux Timeline",
103
129
  "clearReduxTimelineDescription": "Remove all captured action history",
104
130
  "reduxTimelineCleared": "Redux action history cleared."
105
131
  },
132
+ "bundle": {
133
+ "title": "Bundle Settings",
134
+ "sourceBundler": "Metro Source Bundler",
135
+ "sourceBundlerDesc": "Parses live module trees and calculates binary size breakdowns",
136
+ "clearCache": "Clear Bundle Cache",
137
+ "clearCacheDesc": "Force re-fetching and parsing of JS bundle",
138
+ "cacheCleared": "Bundle analysis cache cleared."
139
+ },
140
+ "performance": {
141
+ "title": "Performance Settings",
142
+ "frameMeasurement": "Live Frame Measurement",
143
+ "frameMeasurementDesc": "Samples UI/JS frame rates & detects wasteful re-renders",
144
+ "clearEvents": "Clear Performance Events",
145
+ "clearEventsDesc": "Reset recorded jank and FPS drops history",
146
+ "eventsCleared": "Performance events cleared."
147
+ },
148
+ "crash": {
149
+ "title": "Crash Settings",
150
+ "maxCrashLogs": "Max Crash Logs",
151
+ "maxCrashLogsDesc": "How many crash records to preserve in history",
152
+ "globalGuard": "Global Crash Guard",
153
+ "globalGuardDesc": "Intercepts native, JS, and render errors directly",
154
+ "clearHistory": "Clear Crash History",
155
+ "clearHistoryDesc": "{{count}} crash logs stored",
156
+ "historyCleared": "Crash logs cleared."
157
+ },
106
158
  "general": {
107
- "darkMode": "Dark Mode",
108
- "darkModeDescription": "Switch the inspector to a dark color scheme",
109
- "modalHeight": "Modal Height",
110
- "modalHeightDescription": "Height of the inspector overlay",
111
- "modalAnimation": "Modal Animation",
112
- "modalAnimationDescription": "Animation used when opening the inspector",
159
+ "darkMode": "Dark Mode Theme",
160
+ "darkModeDescription": "Toggle sleek dark aesthetic or light contrast",
161
+ "modalHeight": "Inspector Window Height",
162
+ "modalHeightDescription": "Modal screen coverage percentage",
163
+ "modalAnimation": "Transition Animation",
164
+ "modalAnimationDescription": "Entrance and dismissal presentation style",
113
165
  "duplicateLogs": "Show Duplicate Logs",
114
- "duplicateLogsDescription": "Group consecutive identical console logs",
166
+ "duplicateLogsDescription": "Off: Identical repeated entries collapse into ×N badges",
167
+ "defaultOpeningTab": "Default Opening Tab",
168
+ "defaultOpeningTabDesc": "Initial tab active when launcher button is tapped",
169
+ "activeConsoleLogLevels": "Active Console Log Levels",
170
+ "activeConsoleLogLevelsDesc": "Select which severities to capture in Logs",
115
171
  "resetToDefaults": "Reset to Defaults",
116
172
  "resetToDefaultsDescription": "Restore all inspector settings",
117
173
  "resetConfirmationTitle": "Settings Reset",
118
174
  "resetConfirmationMessage": "All settings have been reset to default values.",
119
175
  "storageStatus": "Persistent Storage",
120
- "storageStatusEnabled": "Settings persist across app restarts",
121
- "storageStatusDisabled": "Using in-memory storage (Android)"
176
+ "storageStatusEnabled": "Settings Storage: Persistent ({{type}})",
177
+ "storageStatusEnabledDesc": "Your preferences and module visibility persist across app reboots.",
178
+ "storageStatusDisabled": "Settings Storage: In-Memory (Temporary)",
179
+ "storageStatusDisabledDesc": "Preferences reset on app kill. Pass custom storage to <NetworkInspector storage={...} /> to persist on Android."
122
180
  }
123
181
  },
124
182
  "network": {
@@ -178,10 +236,20 @@
178
236
  "noMatchingHeaders": "No matching headers",
179
237
  "diffHidden": "{ Diff hidden }",
180
238
  "noDiff": "No differences from previous API.",
239
+ "healthTitle": "Network Health & Telemetry",
240
+ "successRate": "Success Rate",
241
+ "avgLatency": "Avg Latency",
242
+ "p95Latency": "P95 Latency",
243
+ "bandwidth": "Bandwidth",
244
+ "fastest": "Fastest",
245
+ "slowest": "Slowest",
246
+ "timingWaterfall": "Timing Waterfall & Latency",
247
+ "throughput": "Throughput",
248
+ "performanceTier": "Performance Tier",
181
249
  "perf": {
182
- "fast": "Fast",
183
- "moderate": "Moderate",
184
- "slow": "Slow"
250
+ "fast": "Fast (< 200ms)",
251
+ "moderate": "Moderate (200-800ms)",
252
+ "slow": "Slow (> 800ms)"
185
253
  },
186
254
  "jsonViewer": {
187
255
  "pretty": "Pretty",
@@ -12,4 +12,5 @@ export { connectReduxStore, inspectorReduxMiddleware, getReduxState, subscribeRe
12
12
  export { getEventCategory, registerGAPlugin, type GAPlugin, } from './helpers/gaAnalyticsRegistry';
13
13
  export { usePerformanceTracker, useComponentProfiler, useNavigationProfiler, trackComponentRender, trackNavigationTransition, trackHeavyTask, measureAsync, getHermesMemoryStats, registerComponentProfile, subscribeRenderProfiles, getRenderProfiles, logPerformanceEvent, clearPerformanceEvents, subscribePerformanceEvents, getPerformanceEvents, getInitialRenderProfiles, getInitialPerformanceEvents, generateFixSnippet, } from './customHooks/performanceTracker';
14
14
  export { InspectLog, InspectTrackTime, InspectCatch, type InspectLogOptions, } from './decorators';
15
+ export { getNativeDeviceMetrics, enableNativeCrashProtection, subscribeNativeCrashes, showNativeFloatingButton, hideNativeFloatingButton, setNativeFloatingButtonBadge, subscribeNativeFloatingButtonPress, subscribeNativeDeviceShake, startNativeFpsMonitoring, stopNativeFpsMonitoring, getNativeFpsMetrics, getNativeStorageItem, setNativeStorageItem, isNativeModuleAvailable, type NativeDeviceMetrics, type NativeCrashEvent, type FloatingButtonOptions, type NativeFpsMetrics, } from './native/NativeInspector';
15
16
  export { ActiveTab, Method, StatusFilter, SortOrder, LocalFilter, ModalAnimationType, SettingsPage, SettingsSubTab, LogFilter, ConsoleLogType, AnalyticsEventSource, GAEventCategory, StackFrameType, DiffResultType, BundleSubTab, PerformanceSubTab, CrashType, CrashExportFormat, CrashDetailSubTab, CrashFilterType, BreadcrumbType, } from './types';