react-native-inapp-inspector 2.2.0 → 2.2.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 (70) hide show
  1. package/android/src/main/java/com/inappinspector/NetworkInspectorModule.kt +28 -6
  2. package/dist/commonjs/analytics.d.ts +7 -0
  3. package/dist/commonjs/analytics.js +28 -0
  4. package/dist/commonjs/bundle.d.ts +6 -0
  5. package/dist/commonjs/bundle.js +20 -0
  6. package/dist/commonjs/console.d.ts +7 -0
  7. package/dist/commonjs/console.js +20 -0
  8. package/dist/commonjs/constants/version.d.ts +1 -1
  9. package/dist/commonjs/constants/version.js +1 -1
  10. package/dist/commonjs/crash.d.ts +7 -0
  11. package/dist/commonjs/crash.js +27 -0
  12. package/dist/commonjs/customHooks/analyticsLogger.d.ts +3 -0
  13. package/dist/commonjs/customHooks/analyticsLogger.js +23 -2
  14. package/dist/commonjs/customHooks/consoleLogger.d.ts +3 -0
  15. package/dist/commonjs/customHooks/consoleLogger.js +24 -4
  16. package/dist/commonjs/customHooks/crashHandler.d.ts +2 -0
  17. package/dist/commonjs/customHooks/crashHandler.js +15 -1
  18. package/dist/commonjs/customHooks/networkLogger.d.ts +3 -0
  19. package/dist/commonjs/customHooks/networkLogger.js +23 -2
  20. package/dist/commonjs/customHooks/performanceTracker.d.ts +3 -0
  21. package/dist/commonjs/customHooks/performanceTracker.js +34 -3
  22. package/dist/commonjs/customHooks/reduxLogger.d.ts +3 -0
  23. package/dist/commonjs/customHooks/reduxLogger.js +24 -4
  24. package/dist/commonjs/helpers/index.d.ts +1 -0
  25. package/dist/commonjs/helpers/index.js +1 -0
  26. package/dist/commonjs/helpers/memoryManager.d.ts +29 -0
  27. package/dist/commonjs/helpers/memoryManager.js +112 -0
  28. package/dist/commonjs/index.d.ts +7 -1
  29. package/dist/commonjs/index.js +36 -2
  30. package/dist/commonjs/network.d.ts +6 -0
  31. package/dist/commonjs/network.js +17 -0
  32. package/dist/commonjs/performance.d.ts +6 -0
  33. package/dist/commonjs/performance.js +33 -0
  34. package/dist/commonjs/redux.d.ts +5 -0
  35. package/dist/commonjs/redux.js +24 -0
  36. package/dist/esm/analytics.d.ts +7 -0
  37. package/dist/esm/analytics.js +6 -0
  38. package/dist/esm/bundle.d.ts +6 -0
  39. package/dist/esm/bundle.js +6 -0
  40. package/dist/esm/console.d.ts +7 -0
  41. package/dist/esm/console.js +6 -0
  42. package/dist/esm/constants/version.d.ts +1 -1
  43. package/dist/esm/constants/version.js +1 -1
  44. package/dist/esm/crash.d.ts +7 -0
  45. package/dist/esm/crash.js +6 -0
  46. package/dist/esm/customHooks/analyticsLogger.d.ts +3 -0
  47. package/dist/esm/customHooks/analyticsLogger.js +19 -1
  48. package/dist/esm/customHooks/consoleLogger.d.ts +3 -0
  49. package/dist/esm/customHooks/consoleLogger.js +20 -3
  50. package/dist/esm/customHooks/crashHandler.d.ts +2 -0
  51. package/dist/esm/customHooks/crashHandler.js +12 -0
  52. package/dist/esm/customHooks/networkLogger.d.ts +3 -0
  53. package/dist/esm/customHooks/networkLogger.js +19 -1
  54. package/dist/esm/customHooks/performanceTracker.d.ts +3 -0
  55. package/dist/esm/customHooks/performanceTracker.js +30 -2
  56. package/dist/esm/customHooks/reduxLogger.d.ts +3 -0
  57. package/dist/esm/customHooks/reduxLogger.js +20 -3
  58. package/dist/esm/helpers/index.d.ts +1 -0
  59. package/dist/esm/helpers/index.js +1 -0
  60. package/dist/esm/helpers/memoryManager.d.ts +29 -0
  61. package/dist/esm/helpers/memoryManager.js +104 -0
  62. package/dist/esm/index.d.ts +7 -1
  63. package/dist/esm/index.js +17 -3
  64. package/dist/esm/network.d.ts +6 -0
  65. package/dist/esm/network.js +5 -0
  66. package/dist/esm/performance.d.ts +6 -0
  67. package/dist/esm/performance.js +6 -0
  68. package/dist/esm/redux.d.ts +5 -0
  69. package/dist/esm/redux.js +5 -0
  70. package/package.json +53 -2
@@ -687,6 +687,34 @@ export const usePerformanceTracker = (enabled = true) => {
687
687
  };
688
688
  const globalPerformanceEvents = [...INITIAL_EVENTS];
689
689
  const performanceListeners = new Set();
690
+ let maxPerformanceEventsLimit = 100;
691
+ export const setMaxPerformanceEventsLimit = (limit) => {
692
+ maxPerformanceEventsLimit = Math.max(10, limit);
693
+ if (globalPerformanceEvents.length > maxPerformanceEventsLimit) {
694
+ globalPerformanceEvents.length = maxPerformanceEventsLimit;
695
+ performanceListeners.forEach(listener => {
696
+ try {
697
+ listener([...globalPerformanceEvents]);
698
+ }
699
+ catch { }
700
+ });
701
+ }
702
+ };
703
+ export const getMaxPerformanceEventsLimit = () => maxPerformanceEventsLimit;
704
+ export const prunePerformanceEvents = (targetCount) => {
705
+ const countToKeep = targetCount !== undefined ? Math.max(0, targetCount) : Math.floor(globalPerformanceEvents.length / 2);
706
+ const pruned = globalPerformanceEvents.length - countToKeep;
707
+ if (pruned > 0) {
708
+ globalPerformanceEvents.length = countToKeep;
709
+ performanceListeners.forEach(listener => {
710
+ try {
711
+ listener([...globalPerformanceEvents]);
712
+ }
713
+ catch { }
714
+ });
715
+ }
716
+ return Math.max(0, pruned);
717
+ };
690
718
  export const logPerformanceEvent = (event) => {
691
719
  const fullEvent = {
692
720
  id: event.id ||
@@ -696,8 +724,8 @@ export const logPerformanceEvent = (event) => {
696
724
  ...event,
697
725
  };
698
726
  globalPerformanceEvents.unshift(fullEvent);
699
- if (globalPerformanceEvents.length > 100) {
700
- globalPerformanceEvents.pop();
727
+ if (globalPerformanceEvents.length > maxPerformanceEventsLimit) {
728
+ globalPerformanceEvents.length = maxPerformanceEventsLimit;
701
729
  }
702
730
  performanceListeners.forEach(listener => {
703
731
  try {
@@ -2,6 +2,9 @@ import { ReduxHistoryEntry } from '../types';
2
2
  export { ReduxHistoryEntry };
3
3
  export declare const setReduxModuleEnabled: (enabled: boolean) => void;
4
4
  export declare const getReduxModuleEnabled: () => boolean;
5
+ export declare const setMaxReduxHistoryLimit: (limit: number) => void;
6
+ export declare const getMaxReduxHistoryLimit: () => number;
7
+ export declare const pruneReduxHistory: (targetCount?: number) => number;
5
8
  export declare const isReduxConnected: () => boolean;
6
9
  export declare const getReduxState: () => any;
7
10
  export declare const setReduxAutoRefresh: (val: boolean) => void;
@@ -22,8 +22,25 @@ export const setReduxModuleEnabled = (enabled) => {
22
22
  export const getReduxModuleEnabled = () => isReduxModuleEnabled;
23
23
  let lastActionForReducer = {};
24
24
  let actionHistory = [];
25
- const MAX_HISTORY = 50;
25
+ let maxReduxHistoryLimit = 50;
26
26
  let historyIdSeq = 0;
27
+ export const setMaxReduxHistoryLimit = (limit) => {
28
+ maxReduxHistoryLimit = Math.max(10, limit);
29
+ if (actionHistory.length > maxReduxHistoryLimit) {
30
+ actionHistory = actionHistory.slice(0, maxReduxHistoryLimit);
31
+ notify();
32
+ }
33
+ };
34
+ export const getMaxReduxHistoryLimit = () => maxReduxHistoryLimit;
35
+ export const pruneReduxHistory = (targetCount) => {
36
+ const countToKeep = targetCount !== undefined ? Math.max(0, targetCount) : Math.floor(actionHistory.length / 2);
37
+ const pruned = actionHistory.length - countToKeep;
38
+ if (pruned > 0) {
39
+ actionHistory = actionHistory.slice(0, countToKeep);
40
+ notify();
41
+ }
42
+ return Math.max(0, pruned);
43
+ };
27
44
  // Guards against double-instrumentation (e.g. connectReduxStore called twice,
28
45
  // or middleware + connect used together) which previously produced duplicate
29
46
  // timeline entries and inconsistent counts.
@@ -219,8 +236,8 @@ function recordAction(action, prevState, nextState, rawStack) {
219
236
  originType: origin.originType,
220
237
  sliceName,
221
238
  });
222
- if (actionHistory.length > MAX_HISTORY) {
223
- actionHistory.length = MAX_HISTORY;
239
+ if (actionHistory.length > maxReduxHistoryLimit) {
240
+ actionHistory.length = maxReduxHistoryLimit;
224
241
  }
225
242
  if (globalReduxAutoRefresh) {
226
243
  currentReduxState = nextState;
@@ -1,6 +1,7 @@
1
1
  import { NetworkLog, RouteInfo, DiffResult, JsonContent, StackFrameType } from '../types';
2
2
  export * from './searchQueryParser';
3
3
  export * from './telemetry';
4
+ export * from './memoryManager';
4
5
  export declare const getDomainColor: (domain: string) => string;
5
6
  export declare const formatDateTime: (timestamp: number) => string;
6
7
  export declare const formatTimestamp: (timestamp: number) => string;
@@ -7,6 +7,7 @@ import { AppColors } from '../styles/AppColors';
7
7
  import { DOMAIN_COLORS, DURATION_FAST_MS, DURATION_SLOW_MS } from '../constants';
8
8
  export * from './searchQueryParser';
9
9
  export * from './telemetry';
10
+ export * from './memoryManager';
10
11
  export const getDomainColor = (domain) => {
11
12
  if (!domain)
12
13
  return DOMAIN_COLORS[0];
@@ -0,0 +1,29 @@
1
+ export interface MemoryPruneSummary {
2
+ timestamp: number;
3
+ prunedNetwork: number;
4
+ prunedConsole: number;
5
+ prunedRedux: number;
6
+ prunedAnalytics: number;
7
+ prunedCrashes: number;
8
+ prunedPerformance: number;
9
+ totalPruned: number;
10
+ triggeredBy: 'memory-warning' | 'manual' | 'ram-threshold';
11
+ }
12
+ type MemoryWarningListener = (summary: MemoryPruneSummary) => void;
13
+ /**
14
+ * Prunes all in-memory log stores to prevent OOM / memory pressure.
15
+ * Keeps targetRetentionPct (default: 50%) of existing logs.
16
+ */
17
+ export declare const pruneAllLogs: (triggeredBy?: MemoryPruneSummary["triggeredBy"], targetRetentionPct?: number) => MemoryPruneSummary;
18
+ /**
19
+ * Starts listening to OS memory pressure warnings via AppState 'memoryWarning'.
20
+ * Automatically prunes logs and notifies subscribers when memory is constrained.
21
+ */
22
+ export declare const setupMemoryWarningHandler: () => (() => void);
23
+ /**
24
+ * Subscribes to memory prune events.
25
+ */
26
+ export declare const subscribeMemoryWarning: (listener: MemoryWarningListener) => (() => void);
27
+ export declare const getLastPruneTimestamp: () => number;
28
+ export declare const isMemoryHandlerActive: () => boolean;
29
+ export {};
@@ -0,0 +1,104 @@
1
+ import { AppState } from 'react-native';
2
+ import { pruneNetworkLogs } from '../customHooks/networkLogger';
3
+ import { pruneConsoleLogs } from '../customHooks/consoleLogger';
4
+ import { pruneReduxHistory } from '../customHooks/reduxLogger';
5
+ import { pruneAnalyticsLogs } from '../customHooks/analyticsLogger';
6
+ import { pruneCrashRecords, addCrashBreadcrumb } from '../customHooks/crashHandler';
7
+ import { prunePerformanceEvents } from '../customHooks/performanceTracker';
8
+ import { showToast } from './toast';
9
+ const memoryListeners = new Set();
10
+ let appStateSubscription = null;
11
+ let isMemoryWarningHandlerActive = false;
12
+ let lastPruneTimestamp = 0;
13
+ /**
14
+ * Prunes all in-memory log stores to prevent OOM / memory pressure.
15
+ * Keeps targetRetentionPct (default: 50%) of existing logs.
16
+ */
17
+ export const pruneAllLogs = (triggeredBy = 'manual', targetRetentionPct = 0.5) => {
18
+ const targetPct = Math.max(0.1, Math.min(1.0, targetRetentionPct));
19
+ const prunedNetwork = pruneNetworkLogs(undefined);
20
+ const prunedConsole = pruneConsoleLogs(undefined);
21
+ const prunedRedux = pruneReduxHistory(undefined);
22
+ const prunedAnalytics = pruneAnalyticsLogs(undefined);
23
+ const prunedCrashes = pruneCrashRecords(undefined);
24
+ const prunedPerformance = prunePerformanceEvents(undefined);
25
+ const totalPruned = prunedNetwork +
26
+ prunedConsole +
27
+ prunedRedux +
28
+ prunedAnalytics +
29
+ prunedCrashes +
30
+ prunedPerformance;
31
+ lastPruneTimestamp = Date.now();
32
+ // Trigger Hermes/V8 Garbage Collection if exposed
33
+ if (typeof globalThis.gc === 'function') {
34
+ try {
35
+ globalThis.gc();
36
+ }
37
+ catch { }
38
+ }
39
+ const summary = {
40
+ timestamp: lastPruneTimestamp,
41
+ prunedNetwork,
42
+ prunedConsole,
43
+ prunedRedux,
44
+ prunedAnalytics,
45
+ prunedCrashes,
46
+ prunedPerformance,
47
+ totalPruned,
48
+ triggeredBy,
49
+ };
50
+ try {
51
+ addCrashBreadcrumb('system', `[MemoryManager] Low memory auto-prune executed (${triggeredBy}). Freed ${totalPruned} log records.`, summary);
52
+ }
53
+ catch { }
54
+ memoryListeners.forEach(listener => {
55
+ try {
56
+ listener(summary);
57
+ }
58
+ catch { }
59
+ });
60
+ return summary;
61
+ };
62
+ /**
63
+ * Starts listening to OS memory pressure warnings via AppState 'memoryWarning'.
64
+ * Automatically prunes logs and notifies subscribers when memory is constrained.
65
+ */
66
+ export const setupMemoryWarningHandler = () => {
67
+ if (isMemoryWarningHandlerActive) {
68
+ return () => { };
69
+ }
70
+ isMemoryWarningHandlerActive = true;
71
+ try {
72
+ appStateSubscription = AppState.addEventListener('memoryWarning', (state) => {
73
+ const summary = pruneAllLogs('memory-warning', 0.5);
74
+ try {
75
+ showToast(`Memory Warning: Auto-pruned ${summary.totalPruned} inspector logs`);
76
+ }
77
+ catch { }
78
+ });
79
+ }
80
+ catch (e) {
81
+ // AppState memoryWarning might not be supported on all mock/test platforms
82
+ }
83
+ return () => {
84
+ if (appStateSubscription) {
85
+ try {
86
+ appStateSubscription.remove();
87
+ }
88
+ catch { }
89
+ appStateSubscription = null;
90
+ }
91
+ isMemoryWarningHandlerActive = false;
92
+ };
93
+ };
94
+ /**
95
+ * Subscribes to memory prune events.
96
+ */
97
+ export const subscribeMemoryWarning = (listener) => {
98
+ memoryListeners.add(listener);
99
+ return () => {
100
+ memoryListeners.delete(listener);
101
+ };
102
+ };
103
+ export const getLastPruneTimestamp = () => lastPruneTimestamp;
104
+ export const isMemoryHandlerActive = () => isMemoryWarningHandlerActive;
@@ -13,6 +13,12 @@ export { getEventCategory, registerGAPlugin, type GAPlugin, } from './helpers/ga
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
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';
16
- export { sendSessionTelemetryPing, trackTelemetryEvent, trackInspectorOpen, trackTabSwitch, trackLogExport, GA4_MEASUREMENT_ID, GA4_API_SECRET, } from './helpers';
16
+ export { sendSessionTelemetryPing, trackTelemetryEvent, trackInspectorOpen, trackTabSwitch, trackLogExport, GA4_MEASUREMENT_ID, GA4_API_SECRET, setupMemoryWarningHandler, pruneAllLogs, subscribeMemoryWarning, type MemoryPruneSummary, } from './helpers';
17
+ export { setMaxNetworkLogsLimit, getMaxNetworkLogsLimit, pruneNetworkLogs, } from './customHooks/networkLogger';
18
+ export { setMaxConsoleLogsLimit, getMaxConsoleLogsLimit, pruneConsoleLogs, } from './customHooks/consoleLogger';
19
+ export { setMaxReduxHistoryLimit, getMaxReduxHistoryLimit, pruneReduxHistory, } from './customHooks/reduxLogger';
20
+ export { setMaxAnalyticsLogsLimit, getMaxAnalyticsLogsLimit, pruneAnalyticsLogs, } from './customHooks/analyticsLogger';
21
+ export { getMaxCrashLogsLimit, pruneCrashRecords, } from './customHooks/crashHandler';
22
+ export { setMaxPerformanceEventsLimit, getMaxPerformanceEventsLimit, prunePerformanceEvents, } from './customHooks/performanceTracker';
17
23
  export { BrandSquareIcon, BrandCircleIcon, } from './components/NetworkIcons';
18
24
  export { ActiveTab, Method, StatusFilter, SortOrder, LocalFilter, ModalAnimationType, SettingsPage, SettingsSubTab, LogFilter, ConsoleLogType, AnalyticsEventSource, GAEventCategory, StackFrameType, DiffResultType, BundleSubTab, PerformanceSubTab, CrashType, CrashExportFormat, CrashDetailSubTab, CrashFilterType, BreadcrumbType, } from './types';
package/dist/esm/index.js CHANGED
@@ -8,12 +8,12 @@ import ErrorBoundary from './components/ErrorBoundary';
8
8
  import MainScreen from './components/Inspector/MainScreen';
9
9
  import { InspectorContext, animateNextLayout, } from './components/Inspector/InspectorContext';
10
10
  // Helpers
11
- import { formatDisplayUrl, getNavigationInfo, deduplicateLogs, getDomainColor, getEventCategory, matchNetworkLogQuery, sendSessionTelemetryPing, trackInspectorOpen, } from './helpers';
11
+ import { formatDisplayUrl, getNavigationInfo, deduplicateLogs, getDomainColor, getEventCategory, matchNetworkLogQuery, sendSessionTelemetryPing, trackInspectorOpen, setupMemoryWarningHandler, } from './helpers';
12
12
  // #5 — settings persistence
13
13
  import { loadSettings, saveSettings, setCustomStorage, clearPersistedSettings, calculateRamBasedLimits, } from './helpers/settingsStore';
14
14
  import { getNativeSystemMetrics, pushNativeLogRecord, fetchNativeCachedPage, } from './native/NativeInspector';
15
15
  // Network
16
- import { setupNetworkLogger, clearNetworkLogs, subscribeNetworkLogs, setNetworkModuleEnabled, } from './customHooks/networkLogger';
16
+ import { setupNetworkLogger, clearNetworkLogs, subscribeNetworkLogs, setNetworkModuleEnabled, setMaxNetworkLogsLimit, } from './customHooks/networkLogger';
17
17
  // Console
18
18
  import { setupConsoleLogger, clearConsoleLogs, subscribeConsoleLogs, setConsoleModuleEnabled, } from './customHooks/consoleLogger';
19
19
  import { IGNORED_LOG_PREFIXES } from './customHooks/logFilters';
@@ -826,6 +826,7 @@ const NetworkInspector = ({ enabled = true, isEnabled = true, storage, navigatio
826
826
  setupConsoleLogger();
827
827
  autoSetupAnalyticsLogger();
828
828
  setupGlobalCrashHandler();
829
+ const cleanupMemoryWarning = setupMemoryWarningHandler();
829
830
  const isVisibleRef = isVisibleRefObj;
830
831
  const unsubscribeCrash = subscribeCrashEvents(crashInfo => {
831
832
  if (crashInfo.message === '__CLEARED__') {
@@ -977,8 +978,15 @@ const NetworkInspector = ({ enabled = true, isEnabled = true, storage, navigatio
977
978
  clearTimeout(consoleTimeoutId);
978
979
  unsubscribeRedux();
979
980
  unsubscribeCrash();
981
+ cleanupMemoryWarning();
980
982
  };
981
983
  }, []);
984
+ useEffect(() => {
985
+ setMaxNetworkLogsLimit(maxNetworkLogs);
986
+ }, [maxNetworkLogs]);
987
+ useEffect(() => {
988
+ setMaxCrashLogsLimit(maxCrashLogs);
989
+ }, [maxCrashLogs]);
982
990
  useEffect(() => {
983
991
  if (!isNetworkPaused && latestNetworkLogsRef.current.length > 0) {
984
992
  const deduped = deduplicateLogs(latestNetworkLogsRef.current);
@@ -1812,6 +1820,12 @@ export { getEventCategory, registerGAPlugin, } from './helpers/gaAnalyticsRegist
1812
1820
  export { usePerformanceTracker, useComponentProfiler, useNavigationProfiler, trackComponentRender, trackNavigationTransition, trackHeavyTask, measureAsync, getHermesMemoryStats, registerComponentProfile, subscribeRenderProfiles, getRenderProfiles, logPerformanceEvent, clearPerformanceEvents, subscribePerformanceEvents, getPerformanceEvents, getInitialRenderProfiles, getInitialPerformanceEvents, generateFixSnippet, } from './customHooks/performanceTracker';
1813
1821
  export { InspectLog, InspectTrackTime, InspectCatch, } from './decorators';
1814
1822
  export { getNativeDeviceMetrics, enableNativeCrashProtection, subscribeNativeCrashes, showNativeFloatingButton, hideNativeFloatingButton, setNativeFloatingButtonBadge, subscribeNativeFloatingButtonPress, subscribeNativeDeviceShake, startNativeFpsMonitoring, stopNativeFpsMonitoring, getNativeFpsMetrics, getNativeStorageItem, setNativeStorageItem, isNativeModuleAvailable, } from './native/NativeInspector';
1815
- export { sendSessionTelemetryPing, trackTelemetryEvent, trackInspectorOpen, trackTabSwitch, trackLogExport, GA4_MEASUREMENT_ID, GA4_API_SECRET, } from './helpers';
1823
+ export { sendSessionTelemetryPing, trackTelemetryEvent, trackInspectorOpen, trackTabSwitch, trackLogExport, GA4_MEASUREMENT_ID, GA4_API_SECRET, setupMemoryWarningHandler, pruneAllLogs, subscribeMemoryWarning, } from './helpers';
1824
+ export { setMaxNetworkLogsLimit, getMaxNetworkLogsLimit, pruneNetworkLogs, } from './customHooks/networkLogger';
1825
+ export { setMaxConsoleLogsLimit, getMaxConsoleLogsLimit, pruneConsoleLogs, } from './customHooks/consoleLogger';
1826
+ export { setMaxReduxHistoryLimit, getMaxReduxHistoryLimit, pruneReduxHistory, } from './customHooks/reduxLogger';
1827
+ export { setMaxAnalyticsLogsLimit, getMaxAnalyticsLogsLimit, pruneAnalyticsLogs, } from './customHooks/analyticsLogger';
1828
+ export { getMaxCrashLogsLimit, pruneCrashRecords, } from './customHooks/crashHandler';
1829
+ export { setMaxPerformanceEventsLimit, getMaxPerformanceEventsLimit, prunePerformanceEvents, } from './customHooks/performanceTracker';
1816
1830
  export { BrandSquareIcon, BrandCircleIcon, } from './components/NetworkIcons';
1817
1831
  export { ActiveTab, Method, StatusFilter, SortOrder, LocalFilter, ModalAnimationType, SettingsPage, SettingsSubTab, LogFilter, ConsoleLogType, AnalyticsEventSource, GAEventCategory, StackFrameType, DiffResultType, BundleSubTab, PerformanceSubTab, CrashType, CrashExportFormat, CrashDetailSubTab, CrashFilterType, BreadcrumbType, } from './types';
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Sub-module entry point: react-native-inapp-inspector/network
3
+ * Clean tree-shaking & isolated network logger without UI or React Context dependencies.
4
+ */
5
+ export { setupNetworkLogger, clearNetworkLogs, subscribeNetworkLogs, getNetworkLogs, setNetworkModuleEnabled, getNetworkModuleEnabled, setMaxNetworkLogsLimit, getMaxNetworkLogsLimit, pruneNetworkLogs, } from './customHooks/networkLogger';
6
+ export type { NetworkLog, Method, StatusFilter, SortOrder, } from './types';
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Sub-module entry point: react-native-inapp-inspector/network
3
+ * Clean tree-shaking & isolated network logger without UI or React Context dependencies.
4
+ */
5
+ export { setupNetworkLogger, clearNetworkLogs, subscribeNetworkLogs, getNetworkLogs, setNetworkModuleEnabled, getNetworkModuleEnabled, setMaxNetworkLogsLimit, getMaxNetworkLogsLimit, pruneNetworkLogs, } from './customHooks/networkLogger';
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Sub-module entry point: react-native-inapp-inspector/performance
3
+ * Clean tree-shaking & isolated performance tracker and profiler.
4
+ */
5
+ export { usePerformanceTracker, useComponentProfiler, useNavigationProfiler, trackComponentRender, trackNavigationTransition, trackHeavyTask, measureAsync, getHermesMemoryStats, registerComponentProfile, subscribeRenderProfiles, getRenderProfiles, logPerformanceEvent, clearPerformanceEvents, subscribePerformanceEvents, getPerformanceEvents, getInitialRenderProfiles, getInitialPerformanceEvents, generateFixSnippet, setPerformanceModuleEnabled, getPerformanceModuleEnabled, setMaxPerformanceEventsLimit, getMaxPerformanceEventsLimit, prunePerformanceEvents, type PerformanceEvent, type LiveMemoryStats, type ComponentRenderProfile, type CoreMobileVitals, type PerformanceFixKey, } from './customHooks/performanceTracker';
6
+ export { PerformanceSubTab, } from './types';
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Sub-module entry point: react-native-inapp-inspector/performance
3
+ * Clean tree-shaking & isolated performance tracker and profiler.
4
+ */
5
+ export { usePerformanceTracker, useComponentProfiler, useNavigationProfiler, trackComponentRender, trackNavigationTransition, trackHeavyTask, measureAsync, getHermesMemoryStats, registerComponentProfile, subscribeRenderProfiles, getRenderProfiles, logPerformanceEvent, clearPerformanceEvents, subscribePerformanceEvents, getPerformanceEvents, getInitialRenderProfiles, getInitialPerformanceEvents, generateFixSnippet, setPerformanceModuleEnabled, getPerformanceModuleEnabled, setMaxPerformanceEventsLimit, getMaxPerformanceEventsLimit, prunePerformanceEvents, } from './customHooks/performanceTracker';
6
+ export { PerformanceSubTab, } from './types';
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Sub-module entry point: react-native-inapp-inspector/redux
3
+ * Clean tree-shaking & isolated Redux middleware and state inspector.
4
+ */
5
+ export { connectReduxStore, inspectorReduxMiddleware, getReduxState, subscribeReduxState, getActionHistory, clearActionHistory, getLastActionForReducer, clearLastActionForReducer, setReduxAutoRefresh, getReduxAutoRefresh, isReduxConnected, setReduxModuleEnabled, getReduxModuleEnabled, setMaxReduxHistoryLimit, getMaxReduxHistoryLimit, pruneReduxHistory, type ReduxHistoryEntry, } from './customHooks/reduxLogger';
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Sub-module entry point: react-native-inapp-inspector/redux
3
+ * Clean tree-shaking & isolated Redux middleware and state inspector.
4
+ */
5
+ export { connectReduxStore, inspectorReduxMiddleware, getReduxState, subscribeReduxState, getActionHistory, clearActionHistory, getLastActionForReducer, clearLastActionForReducer, setReduxAutoRefresh, getReduxAutoRefresh, isReduxConnected, setReduxModuleEnabled, getReduxModuleEnabled, setMaxReduxHistoryLimit, getMaxReduxHistoryLimit, pruneReduxHistory, } from './customHooks/reduxLogger';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-inapp-inspector",
3
- "version": "2.2.0",
3
+ "version": "2.2.2",
4
4
  "description": "The zero-config, all-in-one in-app debugger for React Native & Expo. Inspect Network (fetch/axios), Console logs, Stack Traces, Redux State, Firebase Analytics, and JS Bundle size directly on device.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -23,7 +23,57 @@
23
23
  "import": "./dist/esm/index.js",
24
24
  "require": "./dist/commonjs/index.js",
25
25
  "default": "./dist/commonjs/index.js"
26
- }
26
+ },
27
+ "./network": {
28
+ "react-native": "./dist/commonjs/network.js",
29
+ "types": "./dist/commonjs/network.d.ts",
30
+ "import": "./dist/esm/network.js",
31
+ "require": "./dist/commonjs/network.js",
32
+ "default": "./dist/commonjs/network.js"
33
+ },
34
+ "./redux": {
35
+ "react-native": "./dist/commonjs/redux.js",
36
+ "types": "./dist/commonjs/redux.d.ts",
37
+ "import": "./dist/esm/redux.js",
38
+ "require": "./dist/commonjs/redux.js",
39
+ "default": "./dist/commonjs/redux.js"
40
+ },
41
+ "./console": {
42
+ "react-native": "./dist/commonjs/console.js",
43
+ "types": "./dist/commonjs/console.d.ts",
44
+ "import": "./dist/esm/console.js",
45
+ "require": "./dist/commonjs/console.js",
46
+ "default": "./dist/commonjs/console.js"
47
+ },
48
+ "./crash": {
49
+ "react-native": "./dist/commonjs/crash.js",
50
+ "types": "./dist/commonjs/crash.d.ts",
51
+ "import": "./dist/esm/crash.js",
52
+ "require": "./dist/commonjs/crash.js",
53
+ "default": "./dist/commonjs/crash.js"
54
+ },
55
+ "./analytics": {
56
+ "react-native": "./dist/commonjs/analytics.js",
57
+ "types": "./dist/commonjs/analytics.d.ts",
58
+ "import": "./dist/esm/analytics.js",
59
+ "require": "./dist/commonjs/analytics.js",
60
+ "default": "./dist/commonjs/analytics.js"
61
+ },
62
+ "./performance": {
63
+ "react-native": "./dist/commonjs/performance.js",
64
+ "types": "./dist/commonjs/performance.d.ts",
65
+ "import": "./dist/esm/performance.js",
66
+ "require": "./dist/commonjs/performance.js",
67
+ "default": "./dist/commonjs/performance.js"
68
+ },
69
+ "./bundle": {
70
+ "react-native": "./dist/commonjs/bundle.js",
71
+ "types": "./dist/commonjs/bundle.d.ts",
72
+ "import": "./dist/esm/bundle.js",
73
+ "require": "./dist/commonjs/bundle.js",
74
+ "default": "./dist/commonjs/bundle.js"
75
+ },
76
+ "./package.json": "./package.json"
27
77
  },
28
78
  "files": [
29
79
  "dist",
@@ -44,6 +94,7 @@
44
94
  "clean": "rm -rf dist",
45
95
  "prebuild": "node scripts/gen-version.js",
46
96
  "build": "npm run clean && tsc && tsc -p tsconfig.esm.json && node scripts/inject-telemetry.js",
97
+ "prepare": "npm run build",
47
98
  "watch": "tsc -w",
48
99
  "prepack": "npm run build",
49
100
  "publish": "node release.cjs",