react-native-inapp-inspector 2.3.14 → 2.3.16

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 (125) hide show
  1. package/README.md +1 -0
  2. package/dist/commonjs/components/AnimatedEntrance.js +3 -3
  3. package/dist/commonjs/components/ConsoleLogCard.js +174 -100
  4. package/dist/commonjs/components/Inspector/AnalyticsTab.js +0 -22
  5. package/dist/commonjs/components/Inspector/ConsoleTab.js +25 -38
  6. package/dist/commonjs/components/Inspector/CrashTab.js +19 -28
  7. package/dist/commonjs/components/Inspector/DeviceInfoTab.js +198 -98
  8. package/dist/commonjs/components/Inspector/FeedbackModal.d.ts +7 -0
  9. package/dist/commonjs/components/Inspector/FeedbackModal.js +552 -0
  10. package/dist/commonjs/components/Inspector/InspectorHeader.js +58 -6
  11. package/dist/commonjs/components/Inspector/MainScreen.js +100 -58
  12. package/dist/commonjs/components/Inspector/NetworkTab.js +26 -371
  13. package/dist/commonjs/components/Inspector/NpmStarPrompt.d.ts +3 -0
  14. package/dist/commonjs/components/Inspector/NpmStarPrompt.js +494 -0
  15. package/dist/commonjs/components/Inspector/PerformanceTab.js +40 -7
  16. package/dist/commonjs/components/Inspector/ReduxTab.js +3 -23
  17. package/dist/commonjs/components/Inspector/SettingsPanel.js +1035 -173
  18. package/dist/commonjs/components/Inspector/StorageTab.js +23 -28
  19. package/dist/commonjs/components/Inspector/TabBar.js +50 -15
  20. package/dist/commonjs/components/JsonViewer.js +14 -2
  21. package/dist/commonjs/components/LogCard.js +428 -227
  22. package/dist/commonjs/components/NetworkIcons.d.ts +5 -0
  23. package/dist/commonjs/components/NetworkIcons.js +33 -2
  24. package/dist/commonjs/constants/version.d.ts +1 -1
  25. package/dist/commonjs/constants/version.js +1 -1
  26. package/dist/commonjs/customHooks/analyticsLogger.js +1 -1
  27. package/dist/commonjs/customHooks/consoleLogger.js +34 -2
  28. package/dist/commonjs/customHooks/crashHandler.js +1 -1
  29. package/dist/commonjs/customHooks/networkLogger.js +184 -26
  30. package/dist/commonjs/helpers/index.d.ts +1 -0
  31. package/dist/commonjs/helpers/index.js +1 -0
  32. package/dist/commonjs/helpers/remoteConfig.d.ts +4 -0
  33. package/dist/commonjs/helpers/remoteConfig.js +165 -0
  34. package/dist/commonjs/helpers/searchQueryParser.d.ts +1 -1
  35. package/dist/commonjs/helpers/searchQueryParser.js +39 -291
  36. package/dist/commonjs/helpers/telemetry.d.ts +5 -0
  37. package/dist/commonjs/helpers/telemetry.js +339 -8
  38. package/dist/commonjs/index.d.ts +1 -0
  39. package/dist/commonjs/index.js +173 -29
  40. package/dist/commonjs/styles/AppFonts.d.ts +2 -0
  41. package/dist/commonjs/styles/AppFonts.js +1 -0
  42. package/dist/commonjs/styles/index.d.ts +22 -0
  43. package/dist/commonjs/styles/index.js +19 -0
  44. package/dist/commonjs/types/enums.d.ts +1 -0
  45. package/dist/commonjs/types/enums.js +1 -0
  46. package/dist/commonjs/types/interfaces.d.ts +12 -0
  47. package/dist/esm/components/AnimatedEntrance.js +3 -3
  48. package/dist/esm/components/ConsoleLogCard.js +141 -100
  49. package/dist/esm/components/Inspector/AnalyticsTab.js +1 -23
  50. package/dist/esm/components/Inspector/ConsoleTab.js +26 -39
  51. package/dist/esm/components/Inspector/CrashTab.js +20 -29
  52. package/dist/esm/components/Inspector/DeviceInfoTab.js +198 -98
  53. package/dist/esm/components/Inspector/FeedbackModal.d.ts +7 -0
  54. package/dist/esm/components/Inspector/FeedbackModal.js +515 -0
  55. package/dist/esm/components/Inspector/InspectorHeader.js +60 -8
  56. package/dist/esm/components/Inspector/MainScreen.js +101 -59
  57. package/dist/esm/components/Inspector/NetworkTab.js +27 -372
  58. package/dist/esm/components/Inspector/NpmStarPrompt.d.ts +3 -0
  59. package/dist/esm/components/Inspector/NpmStarPrompt.js +454 -0
  60. package/dist/esm/components/Inspector/PerformanceTab.js +40 -7
  61. package/dist/esm/components/Inspector/ReduxTab.js +4 -24
  62. package/dist/esm/components/Inspector/SettingsPanel.js +1038 -176
  63. package/dist/esm/components/Inspector/StorageTab.js +23 -28
  64. package/dist/esm/components/Inspector/TabBar.js +50 -15
  65. package/dist/esm/components/JsonViewer.js +14 -2
  66. package/dist/esm/components/LogCard.js +422 -221
  67. package/dist/esm/components/NetworkIcons.d.ts +5 -0
  68. package/dist/esm/components/NetworkIcons.js +26 -0
  69. package/dist/esm/constants/version.d.ts +1 -1
  70. package/dist/esm/constants/version.js +1 -1
  71. package/dist/esm/customHooks/analyticsLogger.js +1 -1
  72. package/dist/esm/customHooks/consoleLogger.js +34 -2
  73. package/dist/esm/customHooks/crashHandler.js +1 -1
  74. package/dist/esm/customHooks/networkLogger.js +184 -26
  75. package/dist/esm/helpers/index.d.ts +1 -0
  76. package/dist/esm/helpers/index.js +1 -0
  77. package/dist/esm/helpers/remoteConfig.d.ts +4 -0
  78. package/dist/esm/helpers/remoteConfig.js +160 -0
  79. package/dist/esm/helpers/searchQueryParser.d.ts +1 -1
  80. package/dist/esm/helpers/searchQueryParser.js +39 -291
  81. package/dist/esm/helpers/telemetry.d.ts +5 -0
  82. package/dist/esm/helpers/telemetry.js +332 -9
  83. package/dist/esm/index.d.ts +1 -0
  84. package/dist/esm/index.js +171 -29
  85. package/dist/esm/styles/AppFonts.d.ts +2 -0
  86. package/dist/esm/styles/AppFonts.js +1 -0
  87. package/dist/esm/styles/index.d.ts +22 -0
  88. package/dist/esm/styles/index.js +19 -0
  89. package/dist/esm/types/enums.d.ts +1 -0
  90. package/dist/esm/types/enums.js +1 -0
  91. package/dist/esm/types/interfaces.d.ts +12 -0
  92. package/package.json +1 -1
  93. package/src/components/AnimatedEntrance.tsx +3 -3
  94. package/src/components/ConsoleLogCard.tsx +154 -103
  95. package/src/components/Inspector/AnalyticsTab.tsx +0 -23
  96. package/src/components/Inspector/ConsoleTab.tsx +27 -41
  97. package/src/components/Inspector/CrashTab.tsx +19 -28
  98. package/src/components/Inspector/DeviceInfoTab.tsx +224 -102
  99. package/src/components/Inspector/FeedbackModal.tsx +626 -0
  100. package/src/components/Inspector/InspectorHeader.tsx +83 -5
  101. package/src/components/Inspector/MainScreen.tsx +61 -6
  102. package/src/components/Inspector/NetworkTab.tsx +70 -480
  103. package/src/components/Inspector/NpmStarPrompt.tsx +532 -0
  104. package/src/components/Inspector/PerformanceTab.tsx +44 -8
  105. package/src/components/Inspector/ReduxTab.tsx +9 -24
  106. package/src/components/Inspector/SettingsPanel.tsx +1162 -197
  107. package/src/components/Inspector/StorageTab.tsx +27 -30
  108. package/src/components/Inspector/TabBar.tsx +57 -20
  109. package/src/components/JsonViewer.tsx +15 -2
  110. package/src/components/LogCard.tsx +528 -339
  111. package/src/components/NetworkIcons.tsx +92 -0
  112. package/src/constants/version.ts +1 -1
  113. package/src/customHooks/analyticsLogger.ts +1 -1
  114. package/src/customHooks/consoleLogger.ts +36 -3
  115. package/src/customHooks/crashHandler.ts +1 -1
  116. package/src/customHooks/networkLogger.ts +214 -26
  117. package/src/helpers/index.ts +1 -0
  118. package/src/helpers/remoteConfig.ts +212 -0
  119. package/src/helpers/searchQueryParser.ts +42 -284
  120. package/src/helpers/telemetry.ts +381 -10
  121. package/src/index.tsx +374 -211
  122. package/src/styles/AppFonts.ts +2 -0
  123. package/src/styles/index.ts +20 -1
  124. package/src/types/enums.ts +1 -0
  125. package/src/types/interfaces.ts +12 -0
package/dist/esm/index.js CHANGED
@@ -12,15 +12,16 @@ import { setupNetworkLogger, clearNetworkLogs, subscribeNetworkLogs, setNetworkM
12
12
  import { setupConsoleLogger, clearConsoleLogs, subscribeConsoleLogs, setConsoleModuleEnabled, } from './customHooks/consoleLogger';
13
13
  import { IGNORED_LOG_PREFIXES } from './customHooks/logFilters';
14
14
  import { setupGlobalCrashHandler, subscribeCrashEvents, getCrashRecords, clearCrashRecords, setMaxCrashLogsLimit, setCrashModuleEnabled, } from './customHooks/crashHandler';
15
- import { trackActiveTelemetryHeartbeat, setTelemetryEnabled, } from './helpers/telemetry';
15
+ import { trackActiveTelemetryHeartbeat, setTelemetryEnabled, trackInspectorTabView, trackInspectorScreenView, } from './helpers/telemetry';
16
16
  import { subscribeAnalyticsEvents, clearAnalyticsEvents, autoSetupAnalyticsLogger, isAnalyticsConnected, setAnalyticsModuleEnabled, } from './customHooks/analyticsLogger';
17
17
  import { getReduxState, subscribeReduxState, setReduxAutoRefresh, getLastActionForReducer, clearActionHistory, isReduxConnected, setReduxModuleEnabled, } from './customHooks/reduxLogger';
18
18
  import { setPerformanceModuleEnabled } from './customHooks/performanceTracker';
19
19
  import { setBundleModuleEnabled } from './customHooks/bundleAnalyzer';
20
20
  import { showNativeFloatingButton, hideNativeFloatingButton, setNativeFloatingButtonBadge, subscribeNativeFloatingButtonPress, subscribeNativeDeviceShake, isNativeModuleAvailable, } from './native/NativeInspector';
21
+ import { fetchRemoteConfigModuleStatus, } from './helpers/remoteConfig';
21
22
  import { LIB_VERSION } from './constants';
22
23
  import { toggleGlobalTheme } from './styles';
23
- const NetworkInspector = ({ enabled = true, storage, navigationRef, appIcon, environment, initialVisible = false, visible: controlledVisible, }) => {
24
+ const NetworkInspector = ({ enabled = true, storage, navigationRef, appIcon, environment, initialVisible = false, visible: controlledVisible, remoteConfig, }) => {
24
25
  setCustomStorage(storage || null);
25
26
  const [isDark, setIsDark] = useState(false);
26
27
  const [reduxState, setReduxState] = useState(null);
@@ -127,7 +128,7 @@ const NetworkInspector = ({ enabled = true, storage, navigationRef, appIcon, env
127
128
  const [maxConsoleLogs, setMaxConsoleLogs] = useState(100);
128
129
  const [showConsoleLevels, setShowConsoleLevels] = useState({
129
130
  info: true,
130
- warn: false,
131
+ warn: true,
131
132
  error: true,
132
133
  });
133
134
  const visibleConsoleLogs = useMemo(() => {
@@ -155,8 +156,9 @@ const NetworkInspector = ({ enabled = true, storage, navigationRef, appIcon, env
155
156
  return filtered.slice(0, maxConsoleLogs);
156
157
  }, [consoleLogs, showConsoleLevels, maxConsoleLogs]);
157
158
  const [logSearch, setLogSearch] = useState('');
158
- const [logFilters, setLogFilters] = useState(new Set(['user-log']));
159
+ const [logFilters, setLogFilters] = useState(new Set(['all']));
159
160
  const [settingsPage, setSettingsPage] = useState(null);
161
+ const [isFeedbackOpen, setIsFeedbackOpen] = useState(false);
160
162
  const [settingsActiveSubTab, setSettingsActiveSubTab] = useState('module');
161
163
  const [tabVisibility, setTabVisibility] = useState({
162
164
  apis: true,
@@ -170,8 +172,8 @@ const NetworkInspector = ({ enabled = true, storage, navigationRef, appIcon, env
170
172
  storage: false,
171
173
  debugging: false,
172
174
  });
173
- const [maxNetworkLogs, setMaxNetworkLogs] = useState(100);
174
- const [maxAnalyticsEventsLimit, setMaxAnalyticsEventsLimit] = useState(75);
175
+ const [maxNetworkLogs, setMaxNetworkLogs] = useState(250);
176
+ const [maxAnalyticsEventsLimit, setMaxAnalyticsEventsLimit] = useState(150);
175
177
  const [isAutoRamLimitEnabled, setIsAutoRamLimitEnabled] = useState(true);
176
178
  const [deviceFreeRamMb, setDeviceFreeRamMb] = useState(1800);
177
179
  const [reduxAutoRefresh, setReduxAutoRefreshState] = useState(true);
@@ -309,6 +311,25 @@ const NetworkInspector = ({ enabled = true, storage, navigationRef, appIcon, env
309
311
  cancelled = true;
310
312
  };
311
313
  }, []);
314
+ useEffect(() => {
315
+ let isMounted = true;
316
+ if (remoteConfig === false)
317
+ return;
318
+ fetchRemoteConfigModuleStatus(typeof remoteConfig === 'object' ? remoteConfig : undefined)
319
+ .then(remoteModules => {
320
+ if (isMounted && remoteModules) {
321
+ setTabVisibility(prev => ({
322
+ ...prev,
323
+ ...remoteModules,
324
+ apis: remoteModules.apis ?? true,
325
+ }));
326
+ }
327
+ })
328
+ .catch(() => { });
329
+ return () => {
330
+ isMounted = false;
331
+ };
332
+ }, [remoteConfig]);
312
333
  useEffect(() => {
313
334
  if (!settingsHydratedRef.current)
314
335
  return;
@@ -448,6 +469,7 @@ const NetworkInspector = ({ enabled = true, storage, navigationRef, appIcon, env
448
469
  setActiveTab(key);
449
470
  loadNativePage(key);
450
471
  }
472
+ trackInspectorTabView(key);
451
473
  }, [loadNativePage]);
452
474
  const [selectedEvent, setSelectedEvent] = useState(null);
453
475
  const [analyticsSearch, setAnalyticsSearch] = useState('');
@@ -758,10 +780,12 @@ const NetworkInspector = ({ enabled = true, storage, navigationRef, appIcon, env
758
780
  useEffect(() => {
759
781
  isVisibleRefObj.current = visible;
760
782
  if (visible) {
783
+ trackInspectorScreenView('InspectorModal');
761
784
  const target = defaultTab === 'apis' || tabVisibility?.[defaultTab]
762
785
  ? defaultTab
763
786
  : 'apis';
764
787
  setActiveTab(target);
788
+ trackInspectorTabView(target);
765
789
  if (latestNetworkLogsRef.current.length > 0) {
766
790
  const deduped = deduplicateLogs(latestNetworkLogsRef.current);
767
791
  const incoming = new Set(deduped.map(l => l.id));
@@ -1366,27 +1390,18 @@ const NetworkInspector = ({ enabled = true, storage, navigationRef, appIcon, env
1366
1390
  log.caller || '',
1367
1391
  log.type || '',
1368
1392
  log.sourceMethod || '',
1393
+ log.stack || '',
1369
1394
  ].join(' ').toLowerCase();
1370
1395
  return queryTokens.every(token => {
1371
- if (token.startsWith('level:') || token.startsWith('is:') || token.startsWith('type:')) {
1372
- const flag = token.replace(/^(level:|is:|type:)/, '').trim();
1373
- if (flag === 'error' || flag === 'err')
1374
- return log.type === 'error';
1375
- if (flag === 'warn' || flag === 'warning')
1376
- return log.type === 'warn';
1377
- if (flag === 'info')
1378
- return log.type === 'info';
1379
- if (flag === 'log')
1380
- return log.sourceMethod === 'log';
1381
- if (flag === 'analytics')
1382
- return (log.message || '').toLowerCase().includes('[analytics');
1383
- }
1384
1396
  if (token === 'error' || token === 'err') {
1385
1397
  return log.type === 'error' || searchTarget.includes(token);
1386
1398
  }
1387
1399
  if (token === 'warn' || token === 'warning') {
1388
1400
  return log.type === 'warn' || searchTarget.includes(token);
1389
1401
  }
1402
+ if (token === 'info') {
1403
+ return log.type === 'info' || searchTarget.includes(token);
1404
+ }
1390
1405
  return searchTarget.includes(token);
1391
1406
  });
1392
1407
  });
@@ -1431,8 +1446,20 @@ const NetworkInspector = ({ enabled = true, storage, navigationRef, appIcon, env
1431
1446
  log.caller || '',
1432
1447
  log.type || '',
1433
1448
  log.sourceMethod || '',
1449
+ log.stack || '',
1434
1450
  ].join(' ').toLowerCase();
1435
- return queryTokens.every(token => searchTarget.includes(token));
1451
+ return queryTokens.every(token => {
1452
+ if (token === 'error' || token === 'err') {
1453
+ return log.type === 'error' || searchTarget.includes(token);
1454
+ }
1455
+ if (token === 'warn' || token === 'warning') {
1456
+ return log.type === 'warn' || searchTarget.includes(token);
1457
+ }
1458
+ if (token === 'info') {
1459
+ return log.type === 'info' || searchTarget.includes(token);
1460
+ }
1461
+ return searchTarget.includes(token);
1462
+ });
1436
1463
  });
1437
1464
  }
1438
1465
  const total = visibleConsoleLogs.length;
@@ -1446,14 +1473,15 @@ const NetworkInspector = ({ enabled = true, storage, navigationRef, appIcon, env
1446
1473
  };
1447
1474
  }, [visibleConsoleLogs, logSearch]);
1448
1475
  function closeModal() {
1449
- animateNextLayout();
1450
1476
  setVisible(false);
1451
- setSelected(null);
1452
- setSelectedEvent(null);
1453
- setSelectedLog(null);
1454
- setSelectedReduxSlice(null);
1455
- setSelectedReduxAction(null);
1456
- setSelectedCrash(null);
1477
+ setTimeout(() => {
1478
+ setSelected(null);
1479
+ setSelectedEvent(null);
1480
+ setSelectedLog(null);
1481
+ setSelectedReduxSlice(null);
1482
+ setSelectedReduxAction(null);
1483
+ setSelectedCrash(null);
1484
+ }, 300);
1457
1485
  }
1458
1486
  function handleClearAll() {
1459
1487
  clearNetworkLogs();
@@ -1463,13 +1491,17 @@ const NetworkInspector = ({ enabled = true, storage, navigationRef, appIcon, env
1463
1491
  setCollapsedSections(new Set());
1464
1492
  setStatusFilters(new Set());
1465
1493
  setMethodFilters(new Set());
1494
+ setSearch('');
1466
1495
  prevLogIdsRef.current = new Set();
1467
1496
  logRouteMapRef.current = new Map();
1468
1497
  clearAnalyticsEvents();
1469
1498
  setAnalyticsEvents([]);
1499
+ setAnalyticsSearch('');
1470
1500
  prevEventIdsRef.current = new Set();
1471
1501
  clearConsoleLogs();
1472
1502
  setConsoleLogs([]);
1503
+ setLogFilters(new Set(['all']));
1504
+ setLogSearch('');
1473
1505
  }
1474
1506
  function handleDelete() {
1475
1507
  if (activeTab === 'logs') {
@@ -1583,7 +1615,7 @@ const NetworkInspector = ({ enabled = true, storage, navigationRef, appIcon, env
1583
1615
  return next;
1584
1616
  });
1585
1617
  }, []);
1586
- const contextValue = {
1618
+ const contextValue = useMemo(() => ({
1587
1619
  visible,
1588
1620
  setVisible,
1589
1621
  closeModal,
@@ -1614,6 +1646,8 @@ const NetworkInspector = ({ enabled = true, storage, navigationRef, appIcon, env
1614
1646
  setShowHeaderInfo,
1615
1647
  settingsPage,
1616
1648
  setSettingsPage,
1649
+ isFeedbackOpen,
1650
+ setIsFeedbackOpen,
1617
1651
  updateAvailable,
1618
1652
  latestNpmVersion,
1619
1653
  clearAnim,
@@ -1750,7 +1784,114 @@ const NetworkInspector = ({ enabled = true, storage, navigationRef, appIcon, env
1750
1784
  setReduxAutoRefreshState,
1751
1785
  reduxExpandDepth,
1752
1786
  setReduxExpandDepth,
1753
- };
1787
+ }), [
1788
+ visible,
1789
+ closeModal,
1790
+ isReady,
1791
+ enabled,
1792
+ appIcon,
1793
+ environment,
1794
+ modalHeightPercent,
1795
+ modalAnimationType,
1796
+ hasNavigationContext,
1797
+ setNavState,
1798
+ activeTab,
1799
+ switchActiveTab,
1800
+ tabVisibility,
1801
+ toggleTabVisibility,
1802
+ lastReadApisCount,
1803
+ lastReadLogsCount,
1804
+ selected,
1805
+ selectedEvent,
1806
+ selectedLog,
1807
+ showHeaderInfo,
1808
+ settingsPage,
1809
+ isFeedbackOpen,
1810
+ updateAvailable,
1811
+ latestNpmVersion,
1812
+ clearAnim,
1813
+ activePulseAnim,
1814
+ unreadPulseAnim,
1815
+ runClearAllWithAnimation,
1816
+ useNativeFab,
1817
+ fabPan,
1818
+ fabPanResponder,
1819
+ pulseAnim,
1820
+ fabShineAnim,
1821
+ logs,
1822
+ filteredLogs,
1823
+ groupedData,
1824
+ search,
1825
+ searchScope,
1826
+ isRegexSearch,
1827
+ isCaseSensitive,
1828
+ quickFilter,
1829
+ statusFilters,
1830
+ methodFilters,
1831
+ availableMethods,
1832
+ sortOrder,
1833
+ selectedLogs,
1834
+ toggleSelect,
1835
+ minStart,
1836
+ totalRange,
1837
+ newLogIds,
1838
+ toggleSectionFilter,
1839
+ toggleSectionCollapse,
1840
+ handleDelete,
1841
+ isNetworkPaused,
1842
+ detailTitle,
1843
+ detailDisplayUrl,
1844
+ apiDetailActiveTab,
1845
+ detailSearch,
1846
+ reqExpanded,
1847
+ resExpanded,
1848
+ showReqDiff,
1849
+ showResDiff,
1850
+ prevRequestData,
1851
+ prevResponseData,
1852
+ consoleLogs,
1853
+ visibleConsoleLogs,
1854
+ filteredConsoleLogs,
1855
+ logSearch,
1856
+ logFilters,
1857
+ logCounts,
1858
+ logSortOrder,
1859
+ isConsolePaused,
1860
+ analyticsEvents,
1861
+ filteredAnalyticsEvents,
1862
+ analyticsSearch,
1863
+ analyticsFilters,
1864
+ isAnalyticsFilterApplied,
1865
+ resetAnalyticsFilters,
1866
+ newEventIds,
1867
+ isAnalyticsLayoutReady,
1868
+ analyticsHeaderExpanded,
1869
+ isAnalyticsPaused,
1870
+ reduxState,
1871
+ reduxLastActionMap,
1872
+ reduxSearch,
1873
+ selectedReduxSlice,
1874
+ selectedReduxAction,
1875
+ reduxActiveSubTab,
1876
+ crashRecords,
1877
+ selectedCrash,
1878
+ lastReadCrashesCount,
1879
+ maxCrashLogs,
1880
+ settingsActiveSubTab,
1881
+ defaultTab,
1882
+ isDark,
1883
+ showDuplicateLogs,
1884
+ showUpdateToast,
1885
+ showConsoleLevels,
1886
+ storage,
1887
+ maxNetworkLogs,
1888
+ maxConsoleLogs,
1889
+ maxAnalyticsEventsLimit,
1890
+ isAutoRamLimitEnabled,
1891
+ deviceFreeRamMb,
1892
+ reduxAutoRefresh,
1893
+ reduxExpandDepth,
1894
+ ]);
1754
1895
  return (<InspectorContext.Provider value={contextValue}>
1755
1896
  <MainScreen />
1756
1897
  </InspectorContext.Provider>);
@@ -1807,4 +1948,5 @@ export { ActiveTab, Method, StatusFilter, SortOrder, LocalFilter, ModalAnimation
1807
1948
  export { AppFonts, setAppFonts, } from './styles/AppFonts';
1808
1949
  export { AppColors, setAppColors, getThemeColors, updateAppColorsTheme, } from './styles/AppColors';
1809
1950
  export { t, i18n, useTranslation, setLanguage, addTranslations, setTranslations, I18nextProvider, } from './i18n';
1951
+ export { fetchRemoteConfigModuleStatus, isFirebaseRemoteConfigAvailable, } from './helpers/remoteConfig';
1810
1952
  export { LIB_VERSION } from './constants/version';
@@ -1,12 +1,14 @@
1
1
  export interface AppFontConfig {
2
2
  interRegular?: string;
3
3
  interMedium?: string;
4
+ interSemiBold?: string;
4
5
  interBold?: string;
5
6
  Sfprotext?: string;
6
7
  }
7
8
  export declare const AppFonts: {
8
9
  interRegular: string;
9
10
  interMedium: string;
11
+ interSemiBold: string;
10
12
  interBold: string;
11
13
  Sfprotext: string;
12
14
  };
@@ -1,6 +1,7 @@
1
1
  export const AppFonts = {
2
2
  interRegular: 'Inter-Regular',
3
3
  interMedium: 'Inter-Medium',
4
+ interSemiBold: 'Inter-SemiBold',
4
5
  interBold: 'Inter-Bold',
5
6
  Sfprotext: 'Inter-Regular',
6
7
  };
@@ -149,6 +149,28 @@ export declare const getRawStyles: (colors: typeof AppColors) => {
149
149
  listContent: {
150
150
  paddingBottom: number;
151
151
  };
152
+ supportFab: {
153
+ position: string;
154
+ bottom: number;
155
+ right: number;
156
+ width: number;
157
+ height: number;
158
+ borderRadius: number;
159
+ backgroundColor: string;
160
+ alignItems: string;
161
+ justifyContent: string;
162
+ shadowColor: string;
163
+ shadowOffset: {
164
+ width: number;
165
+ height: number;
166
+ };
167
+ shadowOpacity: number;
168
+ shadowRadius: number;
169
+ elevation: number;
170
+ zIndex: number;
171
+ borderWidth: number;
172
+ borderColor: string;
173
+ };
152
174
  scrollTopBtn: {
153
175
  position: string;
154
176
  bottom: number;
@@ -137,6 +137,25 @@ export const getRawStyles = (colors) => ({
137
137
  letterSpacing: 0.2,
138
138
  },
139
139
  listContent: { paddingBottom: Platform.OS === 'ios' ? 44 : 32 },
140
+ supportFab: {
141
+ position: 'absolute',
142
+ bottom: 22,
143
+ right: 16,
144
+ width: 42,
145
+ height: 42,
146
+ borderRadius: 21,
147
+ backgroundColor: colors.purple,
148
+ alignItems: 'center',
149
+ justifyContent: 'center',
150
+ shadowColor: colors.purple,
151
+ shadowOffset: { width: 0, height: 4 },
152
+ shadowOpacity: 0.45,
153
+ shadowRadius: 8,
154
+ elevation: 14,
155
+ zIndex: 999,
156
+ borderWidth: 1.5,
157
+ borderColor: 'rgba(255, 255, 255, 0.25)',
158
+ },
140
159
  scrollTopBtn: {
141
160
  position: 'absolute',
142
161
  bottom: 22,
@@ -67,6 +67,7 @@ export declare const SettingsSubTab: {
67
67
  readonly Module: "module";
68
68
  readonly Ui: "ui";
69
69
  readonly Limits: "limits";
70
+ readonly About: "about";
70
71
  };
71
72
  export type SettingsSubTab = (typeof SettingsSubTab)[keyof typeof SettingsSubTab];
72
73
  export declare const LogFilter: {
@@ -60,6 +60,7 @@ export const SettingsSubTab = {
60
60
  Module: 'module',
61
61
  Ui: 'ui',
62
62
  Limits: 'limits',
63
+ About: 'about',
63
64
  };
64
65
  export const LogFilter = {
65
66
  All: 'all',
@@ -151,8 +151,17 @@ export interface PersistedSettings {
151
151
  reduxExpandDepth?: number;
152
152
  showDuplicateLogs?: boolean;
153
153
  showUpdateToast?: boolean;
154
+ useNativeFab?: boolean;
155
+ shakeToOpen?: boolean;
154
156
  telemetryClientId?: string;
157
+ telemetryDeviceId?: string;
158
+ deviceRegistered?: boolean;
159
+ deviceFirstSeen?: number;
155
160
  telemetryLastPing?: number;
161
+ telemetryLastActive?: number;
162
+ starPromptActioned?: boolean;
163
+ starPromptLastShown?: number;
164
+ starPromptFirstSeen?: number;
156
165
  }
157
166
  export interface NetworkInspectorProps {
158
167
  enabled?: boolean;
@@ -163,6 +172,7 @@ export interface NetworkInspectorProps {
163
172
  environment?: 'DEV' | 'UAT' | 'PrePROD' | 'PROD' | 'QA' | 'Staging' | string;
164
173
  initialVisible?: boolean;
165
174
  visible?: boolean;
175
+ remoteConfig?: boolean | any;
166
176
  }
167
177
  export interface NavigationTrackerProps {
168
178
  onStateChange: (state: any) => void;
@@ -198,6 +208,8 @@ export interface InspectorContextValue {
198
208
  setShowHeaderInfo: React.Dispatch<React.SetStateAction<boolean>>;
199
209
  settingsPage: SettingsPage;
200
210
  setSettingsPage: React.Dispatch<React.SetStateAction<SettingsPage>>;
211
+ isFeedbackOpen: boolean;
212
+ setIsFeedbackOpen: React.Dispatch<React.SetStateAction<boolean>>;
201
213
  updateAvailable: boolean;
202
214
  latestNpmVersion: string | null;
203
215
  clearAnim: Animated.Value;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-inapp-inspector",
3
- "version": "2.3.14",
3
+ "version": "2.3.16",
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,16 +23,16 @@ const AnimatedEntrance = React.memo(function AnimatedEntrance({
23
23
  }
24
24
 
25
25
  const progress = useRef(new Animated.Value(0)).current;
26
+ const initialIndex = useRef(index).current;
26
27
 
27
28
  useEffect(() => {
28
- progress.setValue(0);
29
29
  Animated.timing(progress, {
30
30
  toValue: 1,
31
31
  duration,
32
- delay: delay + Math.min(index, 12) * 18,
32
+ delay: delay + Math.min(initialIndex, 8) * 12,
33
33
  useNativeDriver: true,
34
34
  }).start();
35
- }, [delay, duration, index, progress]);
35
+ }, []);
36
36
 
37
37
  return (
38
38
  <Animated.View