react-native-inapp-inspector 2.2.5 → 2.2.6

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 (36) hide show
  1. package/README.md +0 -10
  2. package/dist/commonjs/components/Inspector/InspectorHeader.js +0 -73
  3. package/dist/commonjs/components/Inspector/MainScreen.js +0 -4
  4. package/dist/commonjs/components/Inspector/SettingsPanel.js +2 -107
  5. package/dist/commonjs/constants/version.d.ts +1 -1
  6. package/dist/commonjs/constants/version.js +1 -1
  7. package/dist/commonjs/helpers/index.d.ts +0 -1
  8. package/dist/commonjs/helpers/index.js +0 -1
  9. package/dist/commonjs/index.d.ts +1 -1
  10. package/dist/commonjs/index.js +2 -19
  11. package/dist/esm/components/Inspector/InspectorHeader.js +0 -73
  12. package/dist/esm/components/Inspector/MainScreen.js +0 -4
  13. package/dist/esm/components/Inspector/SettingsPanel.js +2 -107
  14. package/dist/esm/constants/version.d.ts +1 -1
  15. package/dist/esm/constants/version.js +1 -1
  16. package/dist/esm/helpers/index.d.ts +0 -1
  17. package/dist/esm/helpers/index.js +0 -1
  18. package/dist/esm/index.d.ts +1 -1
  19. package/dist/esm/index.js +2 -12
  20. package/package.json +2 -2
  21. package/src/components/Inspector/InspectorHeader.tsx +0 -93
  22. package/src/components/Inspector/MainScreen.tsx +0 -4
  23. package/src/components/Inspector/SettingsPanel.tsx +2 -128
  24. package/src/constants/version.ts +1 -1
  25. package/src/helpers/index.ts +0 -1
  26. package/src/index.tsx +2 -24
  27. package/dist/commonjs/components/Inspector/TelemetryConsentModal.d.ts +0 -3
  28. package/dist/commonjs/components/Inspector/TelemetryConsentModal.js +0 -353
  29. package/dist/commonjs/helpers/telemetry.d.ts +0 -99
  30. package/dist/commonjs/helpers/telemetry.js +0 -398
  31. package/dist/esm/components/Inspector/TelemetryConsentModal.d.ts +0 -3
  32. package/dist/esm/components/Inspector/TelemetryConsentModal.js +0 -316
  33. package/dist/esm/helpers/telemetry.d.ts +0 -99
  34. package/dist/esm/helpers/telemetry.js +0 -380
  35. package/src/components/Inspector/TelemetryConsentModal.tsx +0 -357
  36. package/src/helpers/telemetry.ts +0 -505
package/README.md CHANGED
@@ -371,16 +371,6 @@ npm run android
371
371
 
372
372
  ---
373
373
 
374
- ## 🔒 Anonymous Telemetry
375
-
376
- `react-native-inapp-inspector` collects anonymous diagnostic usage telemetry (such as React Native framework version, OS platform, and feature interactions) to help maintainers prioritize features and track stability across architectures (e.g. Hermes vs. JSC, New Architecture vs. Paper).
377
-
378
- - **Zero PII**: No personal data, user identities, authentication tokens, device names, or network request payloads are ever collected.
379
- - **Fail-Safe & Non-Blocking**: Runs completely in the background without affecting app performance.
380
- - **User Consent Dialog**: On initial launch, an in-app consent dialog prompts the developer to allow or decline anonymous telemetry.
381
-
382
- ---
383
-
384
374
  ## 🤝 Contributing
385
375
 
386
376
  Contributions are welcome! Please check out our [Contributing Guidelines](CONTRIBUTING.md) to get started.
@@ -48,37 +48,11 @@ const AppFonts_1 = require("../../styles/AppFonts");
48
48
  const constants_1 = require("../../constants");
49
49
  const constants_2 = require("../../constants");
50
50
  const helpers_1 = require("../../helpers");
51
- const telemetry_1 = require("../../helpers/telemetry");
52
51
  const UpdateAvailableModal_1 = require("./UpdateAvailableModal");
53
52
  const NetworkIcons_1 = require("../NetworkIcons");
54
53
  const InspectorHeader = react_1.default.memo(() => {
55
54
  const { modalHeightPercent, appIcon, selected, setSelected, selectedEvent, setSelectedEvent, selectedLog, setSelectedLog, selectedReduxSlice, setSelectedReduxSlice, selectedReduxAction, setSelectedReduxAction, reduxState, reduxLastActionMap, showHeaderInfo, setShowHeaderInfo, updateAvailable, latestNpmVersion, clearAnim, activePulseAnim, unreadPulseAnim, runClearAllWithAnimation, settingsPage, setSettingsPage, resetToDefaults, closeModal, detailTitle, activeTab, environment, visible, selectedCrash, setSelectedCrash, } = (0, InspectorContext_1.useInspector)();
56
55
  const [showUpdateModal, setShowUpdateModal] = react_1.default.useState(false);
57
- const [isTelemetryActive, setIsTelemetryActive] = react_1.default.useState(false);
58
- const telemetryPulseAnim = react_1.default.useRef(new react_native_1.Animated.Value(1)).current;
59
- react_1.default.useEffect(() => {
60
- (0, telemetry_1.getTelemetryConsentStatus)().then(status => {
61
- setIsTelemetryActive(status === 'granted');
62
- });
63
- }, [visible]);
64
- react_1.default.useEffect(() => {
65
- if (!isTelemetryActive)
66
- return;
67
- const pulse = react_native_1.Animated.loop(react_native_1.Animated.sequence([
68
- react_native_1.Animated.timing(telemetryPulseAnim, {
69
- toValue: 2.2,
70
- duration: 1500,
71
- useNativeDriver: true,
72
- }),
73
- react_native_1.Animated.timing(telemetryPulseAnim, {
74
- toValue: 1,
75
- duration: 0,
76
- useNativeDriver: true,
77
- }),
78
- ]));
79
- pulse.start();
80
- return () => pulse.stop();
81
- }, [isTelemetryActive, telemetryPulseAnim]);
82
56
  const envConfig = (0, react_1.useMemo)(() => {
83
57
  const rawEnv = (environment || (__DEV__ ? 'DEV' : 'PROD')).trim();
84
58
  const clean = rawEnv.toUpperCase();
@@ -371,53 +345,6 @@ const InspectorHeader = react_1.default.memo(() => {
371
345
 
372
346
  </react_native_1.Text>)}
373
347
  </react_native_1.Pressable>
374
-
375
- {isTelemetryActive && (<react_native_1.Pressable onPress={() => react_native_1.Alert.alert('Anonymous Telemetry Active', 'Anonymous diagnostics (such as React Native version, JavaScript engine, and device model) are currently enabled to help improve library tooling.\n\nNo user data or network payloads are captured. You can toggle this anytime in Settings.', [{ text: 'Got it' }])} style={{
376
- flexDirection: 'row',
377
- alignItems: 'center',
378
- backgroundColor: 'rgba(16, 185, 129, 0.22)',
379
- borderRadius: 5,
380
- paddingHorizontal: 5.5,
381
- paddingVertical: 2,
382
- gap: 4.5,
383
- borderWidth: 1,
384
- borderColor: 'rgba(52, 211, 153, 0.45)',
385
- flexShrink: 0,
386
- }}>
387
- <react_native_1.View style={{
388
- width: 6,
389
- height: 6,
390
- alignItems: 'center',
391
- justifyContent: 'center',
392
- }}>
393
- <react_native_1.Animated.View style={{
394
- position: 'absolute',
395
- width: 6,
396
- height: 6,
397
- borderRadius: 3,
398
- backgroundColor: '#34D399',
399
- opacity: telemetryPulseAnim.interpolate({
400
- inputRange: [1, 2.2],
401
- outputRange: [0.8, 0],
402
- }),
403
- transform: [{ scale: telemetryPulseAnim }],
404
- }}/>
405
- <react_native_1.View style={{
406
- width: 4,
407
- height: 4,
408
- borderRadius: 2,
409
- backgroundColor: '#10B981',
410
- }}/>
411
- </react_native_1.View>
412
- <react_native_1.Text style={{
413
- fontFamily: AppFonts_1.AppFonts.interBold,
414
- fontSize: 9,
415
- color: '#6EE7B7',
416
- letterSpacing: 0.2,
417
- }}>
418
- LIVE
419
- </react_native_1.Text>
420
- </react_native_1.Pressable>)}
421
348
  </react_native_1.View>
422
349
  </react_native_1.View>
423
350
  </react_native_1.View>) : null}
@@ -58,7 +58,6 @@ const CrashDetail_1 = __importDefault(require("./CrashDetail"));
58
58
  const DeviceInfoTab_1 = __importDefault(require("./DeviceInfoTab"));
59
59
  const StorageTab_1 = __importDefault(require("./StorageTab"));
60
60
  const SettingsPanel_1 = __importDefault(require("./SettingsPanel"));
61
- const TelemetryConsentModal_1 = __importDefault(require("./TelemetryConsentModal"));
62
61
  const NpmUpdateToast_1 = __importDefault(require("./NpmUpdateToast"));
63
62
  const Toast_1 = __importDefault(require("../Toast"));
64
63
  const styles_1 = __importDefault(require("../../styles"));
@@ -214,9 +213,6 @@ const MainScreen = () => {
214
213
 
215
214
  {/* NPM Version Update Toast with timeout progress bar */}
216
215
  <NpmUpdateToast_1.default />
217
-
218
- {/* Anonymous Telemetry Consent Dialog shown ONLY when inspector is active */}
219
- <TelemetryConsentModal_1.default />
220
216
  </react_native_1.View>
221
217
  </react_native_1.View>
222
218
  </ErrorBoundary_1.default>)}
@@ -55,7 +55,6 @@ const performanceTracker_1 = require("../../customHooks/performanceTracker");
55
55
  const reduxLogger_1 = require("../../customHooks/reduxLogger");
56
56
  const analyticsLogger_2 = require("../../customHooks/analyticsLogger");
57
57
  const i18n_1 = require("../../i18n");
58
- const telemetry_1 = require("../../helpers/telemetry");
59
58
  const NetworkIcons_1 = require("../NetworkIcons");
60
59
  const constants_1 = require("../../constants");
61
60
  const helpers_1 = require("../../helpers");
@@ -65,20 +64,6 @@ const SettingsPanel = () => {
65
64
  const { t } = (0, i18n_1.useTranslation)();
66
65
  const { settingsPage, setSettingsPage, settingsActiveSubTab, setSettingsActiveSubTab, tabVisibility, toggleTabVisibility, defaultTab, setDefaultTab, isDark, setIsDark, modalHeightPercent, setModalHeightPercent, modalAnimationType, setModalAnimationType, showDuplicateLogs, setShowDuplicateLogs, showUpdateToast, setShowUpdateToast, showConsoleLevels, setShowConsoleLevels, resetToDefaults, storage, logs, consoleLogs, analyticsEvents, reduxState, maxNetworkLogs, setMaxNetworkLogs, maxConsoleLogs, setMaxConsoleLogs, maxAnalyticsEventsLimit, setMaxAnalyticsEventsLimit, isAutoRamLimitEnabled, setIsAutoRamLimitEnabled, deviceFreeRamMb, reduxAutoRefresh, setReduxAutoRefreshState, reduxExpandDepth, setReduxExpandDepth, switchActiveTab, setSelected, setSelectedEvent, setReduxState, crashRecords, maxCrashLogs, setMaxCrashLogs, updateAvailable, latestNpmVersion, } = (0, InspectorContext_1.useInspector)();
67
66
  const [stagedHeight, setStagedHeight] = (0, react_1.useState)(modalHeightPercent);
68
- const [telemetryConsent, setTelemetryConsentState] = (0, react_1.useState)(true);
69
- (0, react_1.useEffect)(() => {
70
- (0, telemetry_1.getTelemetryConsentStatus)().then(status => {
71
- setTelemetryConsentState(status === 'granted');
72
- });
73
- }, []);
74
- const handleToggleTelemetry = async () => {
75
- const nextVal = !telemetryConsent;
76
- setTelemetryConsentState(nextVal);
77
- await (0, telemetry_1.setTelemetryConsent)(nextVal);
78
- if (nextVal) {
79
- (0, telemetry_1.sendSessionTelemetryPing)({ force: true });
80
- }
81
- };
82
67
  (0, react_1.useEffect)(() => {
83
68
  setStagedHeight(modalHeightPercent);
84
69
  }, [modalHeightPercent]);
@@ -1235,97 +1220,7 @@ const SettingsPanel = () => {
1235
1220
  </react_native_1.View>
1236
1221
  </react_native_1.View>
1237
1222
 
1238
- {/* Section 4: Privacy & Diagnostics */}
1239
- <react_native_1.View style={{
1240
- backgroundColor: AppColors_1.AppColors.primaryLight,
1241
- borderRadius: 14,
1242
- borderWidth: 1,
1243
- borderColor: AppColors_1.AppColors.grayBorderSecondary,
1244
- overflow: 'hidden',
1245
- padding: 14,
1246
- gap: 12,
1247
- }}>
1248
- <react_native_1.Text style={{
1249
- fontFamily: AppFonts_1.AppFonts.interBold,
1250
- fontSize: 11,
1251
- lineHeight: 14,
1252
- color: AppColors_1.AppColors.grayTextWeak,
1253
- letterSpacing: 0.8,
1254
- }}>
1255
- PRIVACY & ANONYMOUS DIAGNOSTICS
1256
- </react_native_1.Text>
1257
-
1258
- <react_native_1.View style={{
1259
- flexDirection: 'row',
1260
- alignItems: 'center',
1261
- justifyContent: 'space-between',
1262
- }}>
1263
- <react_native_1.View style={{
1264
- flexDirection: 'row',
1265
- alignItems: 'center',
1266
- gap: 10,
1267
- flex: 1,
1268
- marginRight: 10,
1269
- }}>
1270
- <react_native_1.View style={{
1271
- width: 32,
1272
- height: 32,
1273
- borderRadius: 8,
1274
- backgroundColor: AppColors_1.AppColors.purpleShade50,
1275
- alignItems: 'center',
1276
- justifyContent: 'center',
1277
- }}>
1278
- <NetworkIcons_1.ShieldAlertIcon color={AppColors_1.AppColors.purple} size={15}/>
1279
- </react_native_1.View>
1280
- <react_native_1.View style={{ flex: 1 }}>
1281
- <react_native_1.Text style={{
1282
- fontFamily: AppFonts_1.AppFonts.interBold,
1283
- fontSize: 13.5,
1284
- lineHeight: 18,
1285
- color: AppColors_1.AppColors.primaryBlack,
1286
- }}>
1287
- Help Improve In-App Inspector
1288
- </react_native_1.Text>
1289
- <react_native_1.Text style={{
1290
- fontFamily: AppFonts_1.AppFonts.interRegular,
1291
- fontSize: 11,
1292
- lineHeight: 15,
1293
- color: AppColors_1.AppColors.grayText,
1294
- marginTop: 1,
1295
- }}>
1296
- Share non-identifiable technical metrics (RN version, JS
1297
- engine, device model). No user data or network payloads
1298
- are captured.
1299
- </react_native_1.Text>
1300
- </react_native_1.View>
1301
- </react_native_1.View>
1302
-
1303
- <TouchableScale_1.default accessible={true} accessibilityRole="switch" accessibilityLabel="Toggle Anonymous Telemetry" accessibilityState={{ checked: telemetryConsent }} onPress={handleToggleTelemetry} style={{
1304
- width: 42,
1305
- height: 24,
1306
- borderRadius: 12,
1307
- backgroundColor: telemetryConsent
1308
- ? AppColors_1.AppColors.purple
1309
- : AppColors_1.AppColors.grayBorderSecondary,
1310
- padding: 2,
1311
- justifyContent: 'center',
1312
- alignItems: telemetryConsent ? 'flex-end' : 'flex-start',
1313
- }}>
1314
- <react_native_1.View style={{
1315
- width: 20,
1316
- height: 20,
1317
- borderRadius: 10,
1318
- backgroundColor: AppColors_1.AppColors.white,
1319
- shadowColor: AppColors_1.AppColors.black,
1320
- shadowOpacity: 0.18,
1321
- shadowRadius: 2,
1322
- shadowOffset: { width: 0, height: 1 },
1323
- }}/>
1324
- </TouchableScale_1.default>
1325
- </react_native_1.View>
1326
- </react_native_1.View>
1327
-
1328
- {/* Section 5: Notifications & Toasts */}
1223
+ {/* Section 4: Notifications & Toasts */}
1329
1224
  <react_native_1.View style={{
1330
1225
  backgroundColor: AppColors_1.AppColors.primaryLight,
1331
1226
  borderRadius: 14,
@@ -1414,7 +1309,7 @@ const SettingsPanel = () => {
1414
1309
  </react_native_1.View>
1415
1310
  </react_native_1.View>
1416
1311
 
1417
- {/* Section 6: NPM Package & Updates */}
1312
+ {/* Section 5: NPM Package & Updates */}
1418
1313
  <react_native_1.View style={{
1419
1314
  backgroundColor: AppColors_1.AppColors.primaryLight,
1420
1315
  borderRadius: 14,
@@ -1 +1 @@
1
- export declare const LIB_VERSION = "2.2.5";
1
+ export declare const LIB_VERSION = "2.2.6";
@@ -3,4 +3,4 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.LIB_VERSION = void 0;
4
4
  // AUTO-GENERATED FILE — do not edit by hand.
5
5
  // Regenerated from package.json on every build by scripts/gen-version.js.
6
- exports.LIB_VERSION = '2.2.5';
6
+ exports.LIB_VERSION = '2.2.6';
@@ -1,6 +1,5 @@
1
1
  import { NetworkLog, RouteInfo, DiffResult, JsonContent, StackFrameType } from '../types';
2
2
  export * from './searchQueryParser';
3
- export * from './telemetry';
4
3
  export * from './memoryManager';
5
4
  export declare const getDomainColor: (domain: string) => string;
6
5
  export declare const formatDateTime: (timestamp: number) => string;
@@ -26,7 +26,6 @@ const AppColors_1 = require("../styles/AppColors");
26
26
  // Constants
27
27
  const constants_1 = require("../constants");
28
28
  __exportStar(require("./searchQueryParser"), exports);
29
- __exportStar(require("./telemetry"), exports);
30
29
  __exportStar(require("./memoryManager"), exports);
31
30
  const getDomainColor = (domain) => {
32
31
  if (!domain)
@@ -13,7 +13,7 @@ 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, setupMemoryWarningHandler, pruneAllLogs, subscribeMemoryWarning, type MemoryPruneSummary, } from './helpers';
16
+ export { setupMemoryWarningHandler, pruneAllLogs, subscribeMemoryWarning, type MemoryPruneSummary, } from './helpers';
17
17
  export { setMaxNetworkLogsLimit, getMaxNetworkLogsLimit, pruneNetworkLogs, } from './customHooks/networkLogger';
18
18
  export { setMaxConsoleLogsLimit, getMaxConsoleLogsLimit, pruneConsoleLogs, } from './customHooks/consoleLogger';
19
19
  export { setMaxReduxHistoryLimit, getMaxReduxHistoryLimit, pruneReduxHistory, } from './customHooks/reduxLogger';
@@ -37,8 +37,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
37
37
  };
38
38
  Object.defineProperty(exports, "__esModule", { value: true });
39
39
  exports.registerComponentProfile = exports.getHermesMemoryStats = exports.measureAsync = exports.trackHeavyTask = exports.trackNavigationTransition = exports.trackComponentRender = exports.useNavigationProfiler = exports.useComponentProfiler = exports.usePerformanceTracker = exports.registerGAPlugin = exports.getEventCategory = exports.getLastActionForReducer = exports.clearActionHistory = exports.getActionHistory = exports.subscribeReduxState = exports.getReduxState = exports.inspectorReduxMiddleware = exports.connectReduxStore = exports.ErrorBoundary = exports.CrashTab = exports.computeCrashFingerprint = exports.recordUserActionBreadcrumb = exports.recordReduxBreadcrumb = exports.recordNetworkBreadcrumb = exports.recordNavigationBreadcrumb = exports.addCrashBreadcrumb = exports.recordCustomCrash = exports.parseCrashStackTrace = exports.exportCrashReport = exports.simulateTestCrash = exports.clearCrashRecords = exports.getCrashRecords = exports.emitCrashEvent = exports.subscribeCrashEvents = exports.setupGlobalCrashHandler = exports.getCollectionEnabled = exports.getDefaultEventParameters = exports.getCurrentUserId = exports.getCurrentUserProperties = exports.clearAnalyticsEvents = exports.subscribeAnalyticsEvents = exports.logAnalyticsEvent = exports.setupAnalyticsLogger = exports.subscribeConsoleLogs = exports.clearConsoleLogs = exports.setupConsoleLogger = exports.addAxiosInterceptors = exports.subscribeNetworkLogs = exports.clearNetworkLogs = exports.setupNetworkLogger = void 0;
40
- exports.pruneCrashRecords = exports.getMaxCrashLogsLimit = exports.pruneAnalyticsLogs = exports.getMaxAnalyticsLogsLimit = exports.setMaxAnalyticsLogsLimit = exports.pruneReduxHistory = exports.getMaxReduxHistoryLimit = exports.setMaxReduxHistoryLimit = exports.pruneConsoleLogs = exports.getMaxConsoleLogsLimit = exports.setMaxConsoleLogsLimit = exports.pruneNetworkLogs = exports.getMaxNetworkLogsLimit = exports.setMaxNetworkLogsLimit = exports.subscribeMemoryWarning = exports.pruneAllLogs = exports.setupMemoryWarningHandler = exports.GA4_API_SECRET = exports.GA4_MEASUREMENT_ID = exports.trackLogExport = exports.trackTabSwitch = exports.trackInspectorOpen = exports.trackTelemetryEvent = exports.sendSessionTelemetryPing = exports.isNativeModuleAvailable = exports.setNativeStorageItem = exports.getNativeStorageItem = exports.getNativeFpsMetrics = exports.stopNativeFpsMonitoring = exports.startNativeFpsMonitoring = exports.subscribeNativeDeviceShake = exports.subscribeNativeFloatingButtonPress = exports.setNativeFloatingButtonBadge = exports.hideNativeFloatingButton = exports.showNativeFloatingButton = exports.subscribeNativeCrashes = exports.enableNativeCrashProtection = exports.getNativeDeviceMetrics = exports.InspectCatch = exports.InspectTrackTime = exports.InspectLog = exports.generateFixSnippet = exports.getInitialPerformanceEvents = exports.getInitialRenderProfiles = exports.getPerformanceEvents = exports.subscribePerformanceEvents = exports.clearPerformanceEvents = exports.logPerformanceEvent = exports.getRenderProfiles = exports.subscribeRenderProfiles = void 0;
41
- exports.BreadcrumbType = exports.CrashFilterType = exports.CrashDetailSubTab = exports.CrashExportFormat = exports.CrashType = exports.PerformanceSubTab = exports.BundleSubTab = exports.DiffResultType = exports.StackFrameType = exports.GAEventCategory = exports.AnalyticsEventSource = exports.ConsoleLogType = exports.LogFilter = exports.SettingsSubTab = exports.SettingsPage = exports.ModalAnimationType = exports.LocalFilter = exports.SortOrder = exports.StatusFilter = exports.Method = exports.ActiveTab = exports.subscribeToStorageChanges = exports.clearStorageDriver = exports.removeStorageEntry = exports.setStorageEntry = exports.fetchStorageEntries = exports.getRegisteredMMKVInstanceIds = exports.isMMKVConnected = exports.isAsyncStorageConnected = exports.connectMMKV = exports.connectAsyncStorage = exports.BrandCircleIcon = exports.BrandSquareIcon = exports.prunePerformanceEvents = exports.getMaxPerformanceEventsLimit = exports.setMaxPerformanceEventsLimit = void 0;
40
+ exports.connectMMKV = exports.connectAsyncStorage = exports.BrandCircleIcon = exports.BrandSquareIcon = exports.prunePerformanceEvents = exports.getMaxPerformanceEventsLimit = exports.setMaxPerformanceEventsLimit = exports.pruneCrashRecords = exports.getMaxCrashLogsLimit = exports.pruneAnalyticsLogs = exports.getMaxAnalyticsLogsLimit = exports.setMaxAnalyticsLogsLimit = exports.pruneReduxHistory = exports.getMaxReduxHistoryLimit = exports.setMaxReduxHistoryLimit = exports.pruneConsoleLogs = exports.getMaxConsoleLogsLimit = exports.setMaxConsoleLogsLimit = exports.pruneNetworkLogs = exports.getMaxNetworkLogsLimit = exports.setMaxNetworkLogsLimit = exports.subscribeMemoryWarning = exports.pruneAllLogs = exports.setupMemoryWarningHandler = exports.isNativeModuleAvailable = exports.setNativeStorageItem = exports.getNativeStorageItem = exports.getNativeFpsMetrics = exports.stopNativeFpsMonitoring = exports.startNativeFpsMonitoring = exports.subscribeNativeDeviceShake = exports.subscribeNativeFloatingButtonPress = exports.setNativeFloatingButtonBadge = exports.hideNativeFloatingButton = exports.showNativeFloatingButton = exports.subscribeNativeCrashes = exports.enableNativeCrashProtection = exports.getNativeDeviceMetrics = exports.InspectCatch = exports.InspectTrackTime = exports.InspectLog = exports.generateFixSnippet = exports.getInitialPerformanceEvents = exports.getInitialRenderProfiles = exports.getPerformanceEvents = exports.subscribePerformanceEvents = exports.clearPerformanceEvents = exports.logPerformanceEvent = exports.getRenderProfiles = exports.subscribeRenderProfiles = void 0;
41
+ exports.BreadcrumbType = exports.CrashFilterType = exports.CrashDetailSubTab = exports.CrashExportFormat = exports.CrashType = exports.PerformanceSubTab = exports.BundleSubTab = exports.DiffResultType = exports.StackFrameType = exports.GAEventCategory = exports.AnalyticsEventSource = exports.ConsoleLogType = exports.LogFilter = exports.SettingsSubTab = exports.SettingsPage = exports.ModalAnimationType = exports.LocalFilter = exports.SortOrder = exports.StatusFilter = exports.Method = exports.ActiveTab = exports.subscribeToStorageChanges = exports.clearStorageDriver = exports.removeStorageEntry = exports.setStorageEntry = exports.fetchStorageEntries = exports.getRegisteredMMKVInstanceIds = exports.isMMKVConnected = exports.isAsyncStorageConnected = void 0;
42
42
  const react_1 = __importStar(require("react"));
43
43
  const react_native_1 = require("react-native");
44
44
  const native_1 = require("@react-navigation/native");
@@ -758,14 +758,6 @@ const NetworkInspector = ({ enabled = true, isEnabled = true, storage, navigatio
758
758
  }, [unreadPulseAnim]);
759
759
  const isNativeModule = (0, react_1.useMemo)(() => (0, NativeInspector_2.isNativeModuleAvailable)(), []);
760
760
  const useNativeFab = (react_native_1.Platform.OS === 'ios' || react_native_1.Platform.OS === 'android') && isNativeModule;
761
- // Send anonymous initialization heartbeat to GA4 Measurement Protocol
762
- (0, react_1.useEffect)(() => {
763
- (0, helpers_1.sendSessionTelemetryPing)({
764
- environment,
765
- hasNavigation: Boolean(navigationRef),
766
- hasAppIcon: Boolean(appIcon),
767
- });
768
- }, [environment, navigationRef, appIcon]);
769
761
  // 100% Native Main-Thread Floating Button Lifecycle
770
762
  (0, react_1.useEffect)(() => {
771
763
  if (!useNativeFab || !isEnabled || !enabled) {
@@ -820,8 +812,6 @@ const NetworkInspector = ({ enabled = true, isEnabled = true, storage, navigatio
820
812
  ? defaultTab
821
813
  : 'apis';
822
814
  setActiveTab(target);
823
- // Track inspector opened event in GA4
824
- (0, helpers_1.trackInspectorOpen)({ activeTab: target });
825
815
  // Instant synchronization of data collected while modal was closed
826
816
  if (latestNetworkLogsRef.current.length > 0) {
827
817
  const deduped = (0, helpers_1.deduplicateLogs)(latestNetworkLogsRef.current);
@@ -1942,13 +1932,6 @@ Object.defineProperty(exports, "getNativeStorageItem", { enumerable: true, get:
1942
1932
  Object.defineProperty(exports, "setNativeStorageItem", { enumerable: true, get: function () { return NativeInspector_3.setNativeStorageItem; } });
1943
1933
  Object.defineProperty(exports, "isNativeModuleAvailable", { enumerable: true, get: function () { return NativeInspector_3.isNativeModuleAvailable; } });
1944
1934
  var helpers_2 = require("./helpers");
1945
- Object.defineProperty(exports, "sendSessionTelemetryPing", { enumerable: true, get: function () { return helpers_2.sendSessionTelemetryPing; } });
1946
- Object.defineProperty(exports, "trackTelemetryEvent", { enumerable: true, get: function () { return helpers_2.trackTelemetryEvent; } });
1947
- Object.defineProperty(exports, "trackInspectorOpen", { enumerable: true, get: function () { return helpers_2.trackInspectorOpen; } });
1948
- Object.defineProperty(exports, "trackTabSwitch", { enumerable: true, get: function () { return helpers_2.trackTabSwitch; } });
1949
- Object.defineProperty(exports, "trackLogExport", { enumerable: true, get: function () { return helpers_2.trackLogExport; } });
1950
- Object.defineProperty(exports, "GA4_MEASUREMENT_ID", { enumerable: true, get: function () { return helpers_2.GA4_MEASUREMENT_ID; } });
1951
- Object.defineProperty(exports, "GA4_API_SECRET", { enumerable: true, get: function () { return helpers_2.GA4_API_SECRET; } });
1952
1935
  Object.defineProperty(exports, "setupMemoryWarningHandler", { enumerable: true, get: function () { return helpers_2.setupMemoryWarningHandler; } });
1953
1936
  Object.defineProperty(exports, "pruneAllLogs", { enumerable: true, get: function () { return helpers_2.pruneAllLogs; } });
1954
1937
  Object.defineProperty(exports, "subscribeMemoryWarning", { enumerable: true, get: function () { return helpers_2.subscribeMemoryWarning; } });
@@ -10,37 +10,11 @@ import { AppFonts } from '../../styles/AppFonts';
10
10
  import { METHOD_COLORS } from '../../constants';
11
11
  import { LIB_VERSION } from '../../constants';
12
12
  import { getStatusColor, getAppName, formatTime, getSize } from '../../helpers';
13
- import { getTelemetryConsentStatus } from '../../helpers/telemetry';
14
13
  import { UpdateAvailableModal } from './UpdateAvailableModal';
15
14
  import { WhiteBackNavigation, TrashIcon, SettingsIcon, CloseWhite, ClockIcon, SizeIcon, AppleIcon, AndroidIcon, NpmIcon, ResetIcon, BoltIcon, } from '../NetworkIcons';
16
15
  const InspectorHeader = React.memo(() => {
17
16
  const { modalHeightPercent, appIcon, selected, setSelected, selectedEvent, setSelectedEvent, selectedLog, setSelectedLog, selectedReduxSlice, setSelectedReduxSlice, selectedReduxAction, setSelectedReduxAction, reduxState, reduxLastActionMap, showHeaderInfo, setShowHeaderInfo, updateAvailable, latestNpmVersion, clearAnim, activePulseAnim, unreadPulseAnim, runClearAllWithAnimation, settingsPage, setSettingsPage, resetToDefaults, closeModal, detailTitle, activeTab, environment, visible, selectedCrash, setSelectedCrash, } = useInspector();
18
17
  const [showUpdateModal, setShowUpdateModal] = React.useState(false);
19
- const [isTelemetryActive, setIsTelemetryActive] = React.useState(false);
20
- const telemetryPulseAnim = React.useRef(new Animated.Value(1)).current;
21
- React.useEffect(() => {
22
- getTelemetryConsentStatus().then(status => {
23
- setIsTelemetryActive(status === 'granted');
24
- });
25
- }, [visible]);
26
- React.useEffect(() => {
27
- if (!isTelemetryActive)
28
- return;
29
- const pulse = Animated.loop(Animated.sequence([
30
- Animated.timing(telemetryPulseAnim, {
31
- toValue: 2.2,
32
- duration: 1500,
33
- useNativeDriver: true,
34
- }),
35
- Animated.timing(telemetryPulseAnim, {
36
- toValue: 1,
37
- duration: 0,
38
- useNativeDriver: true,
39
- }),
40
- ]));
41
- pulse.start();
42
- return () => pulse.stop();
43
- }, [isTelemetryActive, telemetryPulseAnim]);
44
18
  const envConfig = useMemo(() => {
45
19
  const rawEnv = (environment || (__DEV__ ? 'DEV' : 'PROD')).trim();
46
20
  const clean = rawEnv.toUpperCase();
@@ -333,53 +307,6 @@ const InspectorHeader = React.memo(() => {
333
307
 
334
308
  </Text>)}
335
309
  </Pressable>
336
-
337
- {isTelemetryActive && (<Pressable onPress={() => Alert.alert('Anonymous Telemetry Active', 'Anonymous diagnostics (such as React Native version, JavaScript engine, and device model) are currently enabled to help improve library tooling.\n\nNo user data or network payloads are captured. You can toggle this anytime in Settings.', [{ text: 'Got it' }])} style={{
338
- flexDirection: 'row',
339
- alignItems: 'center',
340
- backgroundColor: 'rgba(16, 185, 129, 0.22)',
341
- borderRadius: 5,
342
- paddingHorizontal: 5.5,
343
- paddingVertical: 2,
344
- gap: 4.5,
345
- borderWidth: 1,
346
- borderColor: 'rgba(52, 211, 153, 0.45)',
347
- flexShrink: 0,
348
- }}>
349
- <View style={{
350
- width: 6,
351
- height: 6,
352
- alignItems: 'center',
353
- justifyContent: 'center',
354
- }}>
355
- <Animated.View style={{
356
- position: 'absolute',
357
- width: 6,
358
- height: 6,
359
- borderRadius: 3,
360
- backgroundColor: '#34D399',
361
- opacity: telemetryPulseAnim.interpolate({
362
- inputRange: [1, 2.2],
363
- outputRange: [0.8, 0],
364
- }),
365
- transform: [{ scale: telemetryPulseAnim }],
366
- }}/>
367
- <View style={{
368
- width: 4,
369
- height: 4,
370
- borderRadius: 2,
371
- backgroundColor: '#10B981',
372
- }}/>
373
- </View>
374
- <Text style={{
375
- fontFamily: AppFonts.interBold,
376
- fontSize: 9,
377
- color: '#6EE7B7',
378
- letterSpacing: 0.2,
379
- }}>
380
- LIVE
381
- </Text>
382
- </Pressable>)}
383
310
  </View>
384
311
  </View>
385
312
  </View>) : null}
@@ -20,7 +20,6 @@ import CrashDetail from './CrashDetail';
20
20
  import DeviceInfoTab from './DeviceInfoTab';
21
21
  import StorageTab from './StorageTab';
22
22
  import SettingsPanel from './SettingsPanel';
23
- import TelemetryConsentModal from './TelemetryConsentModal';
24
23
  import NpmUpdateToast from './NpmUpdateToast';
25
24
  import Toast from '../Toast';
26
25
  import styles from '../../styles';
@@ -176,9 +175,6 @@ const MainScreen = () => {
176
175
 
177
176
  {/* NPM Version Update Toast with timeout progress bar */}
178
177
  <NpmUpdateToast />
179
-
180
- {/* Anonymous Telemetry Consent Dialog shown ONLY when inspector is active */}
181
- <TelemetryConsentModal />
182
178
  </View>
183
179
  </View>
184
180
  </ErrorBoundary>)}
@@ -17,7 +17,6 @@ import { clearPerformanceEvents } from '../../customHooks/performanceTracker';
17
17
  import { isReduxConnected } from '../../customHooks/reduxLogger';
18
18
  import { isAnalyticsConnected } from '../../customHooks/analyticsLogger';
19
19
  import { useTranslation } from '../../i18n';
20
- import { getTelemetryConsentStatus, setTelemetryConsent, sendSessionTelemetryPing, } from '../../helpers/telemetry';
21
20
  import { SignalIcon, TerminalIcon, AnalyticsIcon, SettingsIcon, SunIcon, MoonIcon, ScreenIcon, MotionIcon, LayersIcon, EyeIcon, CheckIcon, TrashIcon, PackageIcon, ReduxIcon, PerformanceIcon, CrashIcon, ShieldAlertIcon, ForwardChevronIcon, ChevronDownIcon, NpmIcon, BoltIcon, BrainIcon, SmartphoneIcon, DatabaseIcon, } from '../NetworkIcons';
22
21
  import { LIB_VERSION } from '../../constants';
23
22
  import { copyToClipboard } from '../../helpers';
@@ -27,20 +26,6 @@ const SettingsPanel = () => {
27
26
  const { t } = useTranslation();
28
27
  const { settingsPage, setSettingsPage, settingsActiveSubTab, setSettingsActiveSubTab, tabVisibility, toggleTabVisibility, defaultTab, setDefaultTab, isDark, setIsDark, modalHeightPercent, setModalHeightPercent, modalAnimationType, setModalAnimationType, showDuplicateLogs, setShowDuplicateLogs, showUpdateToast, setShowUpdateToast, showConsoleLevels, setShowConsoleLevels, resetToDefaults, storage, logs, consoleLogs, analyticsEvents, reduxState, maxNetworkLogs, setMaxNetworkLogs, maxConsoleLogs, setMaxConsoleLogs, maxAnalyticsEventsLimit, setMaxAnalyticsEventsLimit, isAutoRamLimitEnabled, setIsAutoRamLimitEnabled, deviceFreeRamMb, reduxAutoRefresh, setReduxAutoRefreshState, reduxExpandDepth, setReduxExpandDepth, switchActiveTab, setSelected, setSelectedEvent, setReduxState, crashRecords, maxCrashLogs, setMaxCrashLogs, updateAvailable, latestNpmVersion, } = useInspector();
29
28
  const [stagedHeight, setStagedHeight] = useState(modalHeightPercent);
30
- const [telemetryConsent, setTelemetryConsentState] = useState(true);
31
- useEffect(() => {
32
- getTelemetryConsentStatus().then(status => {
33
- setTelemetryConsentState(status === 'granted');
34
- });
35
- }, []);
36
- const handleToggleTelemetry = async () => {
37
- const nextVal = !telemetryConsent;
38
- setTelemetryConsentState(nextVal);
39
- await setTelemetryConsent(nextVal);
40
- if (nextVal) {
41
- sendSessionTelemetryPing({ force: true });
42
- }
43
- };
44
29
  useEffect(() => {
45
30
  setStagedHeight(modalHeightPercent);
46
31
  }, [modalHeightPercent]);
@@ -1197,97 +1182,7 @@ const SettingsPanel = () => {
1197
1182
  </View>
1198
1183
  </View>
1199
1184
 
1200
- {/* Section 4: Privacy & Diagnostics */}
1201
- <View style={{
1202
- backgroundColor: AppColors.primaryLight,
1203
- borderRadius: 14,
1204
- borderWidth: 1,
1205
- borderColor: AppColors.grayBorderSecondary,
1206
- overflow: 'hidden',
1207
- padding: 14,
1208
- gap: 12,
1209
- }}>
1210
- <Text style={{
1211
- fontFamily: AppFonts.interBold,
1212
- fontSize: 11,
1213
- lineHeight: 14,
1214
- color: AppColors.grayTextWeak,
1215
- letterSpacing: 0.8,
1216
- }}>
1217
- PRIVACY & ANONYMOUS DIAGNOSTICS
1218
- </Text>
1219
-
1220
- <View style={{
1221
- flexDirection: 'row',
1222
- alignItems: 'center',
1223
- justifyContent: 'space-between',
1224
- }}>
1225
- <View style={{
1226
- flexDirection: 'row',
1227
- alignItems: 'center',
1228
- gap: 10,
1229
- flex: 1,
1230
- marginRight: 10,
1231
- }}>
1232
- <View style={{
1233
- width: 32,
1234
- height: 32,
1235
- borderRadius: 8,
1236
- backgroundColor: AppColors.purpleShade50,
1237
- alignItems: 'center',
1238
- justifyContent: 'center',
1239
- }}>
1240
- <ShieldAlertIcon color={AppColors.purple} size={15}/>
1241
- </View>
1242
- <View style={{ flex: 1 }}>
1243
- <Text style={{
1244
- fontFamily: AppFonts.interBold,
1245
- fontSize: 13.5,
1246
- lineHeight: 18,
1247
- color: AppColors.primaryBlack,
1248
- }}>
1249
- Help Improve In-App Inspector
1250
- </Text>
1251
- <Text style={{
1252
- fontFamily: AppFonts.interRegular,
1253
- fontSize: 11,
1254
- lineHeight: 15,
1255
- color: AppColors.grayText,
1256
- marginTop: 1,
1257
- }}>
1258
- Share non-identifiable technical metrics (RN version, JS
1259
- engine, device model). No user data or network payloads
1260
- are captured.
1261
- </Text>
1262
- </View>
1263
- </View>
1264
-
1265
- <TouchableScale accessible={true} accessibilityRole="switch" accessibilityLabel="Toggle Anonymous Telemetry" accessibilityState={{ checked: telemetryConsent }} onPress={handleToggleTelemetry} style={{
1266
- width: 42,
1267
- height: 24,
1268
- borderRadius: 12,
1269
- backgroundColor: telemetryConsent
1270
- ? AppColors.purple
1271
- : AppColors.grayBorderSecondary,
1272
- padding: 2,
1273
- justifyContent: 'center',
1274
- alignItems: telemetryConsent ? 'flex-end' : 'flex-start',
1275
- }}>
1276
- <View style={{
1277
- width: 20,
1278
- height: 20,
1279
- borderRadius: 10,
1280
- backgroundColor: AppColors.white,
1281
- shadowColor: AppColors.black,
1282
- shadowOpacity: 0.18,
1283
- shadowRadius: 2,
1284
- shadowOffset: { width: 0, height: 1 },
1285
- }}/>
1286
- </TouchableScale>
1287
- </View>
1288
- </View>
1289
-
1290
- {/* Section 5: Notifications & Toasts */}
1185
+ {/* Section 4: Notifications & Toasts */}
1291
1186
  <View style={{
1292
1187
  backgroundColor: AppColors.primaryLight,
1293
1188
  borderRadius: 14,
@@ -1376,7 +1271,7 @@ const SettingsPanel = () => {
1376
1271
  </View>
1377
1272
  </View>
1378
1273
 
1379
- {/* Section 6: NPM Package & Updates */}
1274
+ {/* Section 5: NPM Package & Updates */}
1380
1275
  <View style={{
1381
1276
  backgroundColor: AppColors.primaryLight,
1382
1277
  borderRadius: 14,
@@ -1 +1 @@
1
- export declare const LIB_VERSION = "2.2.5";
1
+ export declare const LIB_VERSION = "2.2.6";
@@ -1,3 +1,3 @@
1
1
  // AUTO-GENERATED FILE — do not edit by hand.
2
2
  // Regenerated from package.json on every build by scripts/gen-version.js.
3
- export const LIB_VERSION = '2.2.5';
3
+ export const LIB_VERSION = '2.2.6';
@@ -1,6 +1,5 @@
1
1
  import { NetworkLog, RouteInfo, DiffResult, JsonContent, StackFrameType } from '../types';
2
2
  export * from './searchQueryParser';
3
- export * from './telemetry';
4
3
  export * from './memoryManager';
5
4
  export declare const getDomainColor: (domain: string) => string;
6
5
  export declare const formatDateTime: (timestamp: number) => string;
@@ -6,7 +6,6 @@ import { AppColors } from '../styles/AppColors';
6
6
  // Constants
7
7
  import { DOMAIN_COLORS, DURATION_FAST_MS, DURATION_SLOW_MS } from '../constants';
8
8
  export * from './searchQueryParser';
9
- export * from './telemetry';
10
9
  export * from './memoryManager';
11
10
  export const getDomainColor = (domain) => {
12
11
  if (!domain)