react-native-inapp-inspector 2.3.5 → 2.3.7

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 (226) hide show
  1. package/dist/commonjs/analytics.d.ts +0 -4
  2. package/dist/commonjs/analytics.js +0 -4
  3. package/dist/commonjs/bundle.d.ts +0 -4
  4. package/dist/commonjs/bundle.js +0 -4
  5. package/dist/commonjs/components/AnalyticsDetail.js +18 -27
  6. package/dist/commonjs/components/AnalyticsEventCard.js +9 -12
  7. package/dist/commonjs/components/AnalyticsGraph.js +10 -15
  8. package/dist/commonjs/components/AppHeaderLogo.js +0 -3
  9. package/dist/commonjs/components/BrandCircleIcon.js +15 -15
  10. package/dist/commonjs/components/BrandSquareIcon.js +20 -20
  11. package/dist/commonjs/components/CodeSnippet.js +6 -19
  12. package/dist/commonjs/components/ConsoleLogCard.js +0 -1
  13. package/dist/commonjs/components/CopyButton.js +0 -4
  14. package/dist/commonjs/components/DiffViewer.js +0 -2
  15. package/dist/commonjs/components/DomainHeader.js +0 -4
  16. package/dist/commonjs/components/EmptyState.js +0 -3
  17. package/dist/commonjs/components/ErrorBoundary.js +5 -10
  18. package/dist/commonjs/components/HeadersSection.js +0 -5
  19. package/dist/commonjs/components/HighlightText.js +1 -4
  20. package/dist/commonjs/components/Inspector/AnalyticsFilterModal.js +11 -26
  21. package/dist/commonjs/components/Inspector/AnalyticsTab.js +34 -40
  22. package/dist/commonjs/components/Inspector/BundleTab.js +56 -84
  23. package/dist/commonjs/components/Inspector/ConsoleTab.js +7 -7
  24. package/dist/commonjs/components/Inspector/CrashDetail.js +18 -20
  25. package/dist/commonjs/components/Inspector/CrashFilterModal.js +0 -1
  26. package/dist/commonjs/components/Inspector/CrashTab.js +11 -20
  27. package/dist/commonjs/components/Inspector/DeviceInfoTab.js +12 -24
  28. package/dist/commonjs/components/Inspector/FabLauncher.js +1 -1
  29. package/dist/commonjs/components/Inspector/InspectorContext.js +0 -2
  30. package/dist/commonjs/components/Inspector/InspectorHeader.js +7 -8
  31. package/dist/commonjs/components/Inspector/LogDetail.js +27 -29
  32. package/dist/commonjs/components/Inspector/MainScreen.js +9 -10
  33. package/dist/commonjs/components/Inspector/NetworkDetail.js +10 -11
  34. package/dist/commonjs/components/Inspector/NetworkTab.js +14 -14
  35. package/dist/commonjs/components/Inspector/NpmUpdateToast.js +6 -9
  36. package/dist/commonjs/components/Inspector/PerformanceTab.js +30 -43
  37. package/dist/commonjs/components/Inspector/ReduxDetail.js +18 -34
  38. package/dist/commonjs/components/Inspector/ReduxTab.js +11 -20
  39. package/dist/commonjs/components/Inspector/SettingsPanel.js +32 -36
  40. package/dist/commonjs/components/Inspector/SkeletonPlaceholder.js +6 -6
  41. package/dist/commonjs/components/Inspector/StorageTab.js +14 -26
  42. package/dist/commonjs/components/Inspector/UpdateAvailableModal.js +5 -6
  43. package/dist/commonjs/components/JsonViewer.js +3 -10
  44. package/dist/commonjs/components/LogCard.js +7 -7
  45. package/dist/commonjs/components/MetaAccordion.js +1 -7
  46. package/dist/commonjs/components/NetworkIcons.js +12 -16
  47. package/dist/commonjs/components/SectionHeader.js +0 -4
  48. package/dist/commonjs/components/SkeletonPlaceholder.js +6 -6
  49. package/dist/commonjs/components/Slider.js +6 -6
  50. package/dist/commonjs/components/SourcePageCard.js +0 -4
  51. package/dist/commonjs/components/TreeNode.js +0 -4
  52. package/dist/commonjs/console.d.ts +0 -4
  53. package/dist/commonjs/console.js +0 -4
  54. package/dist/commonjs/constants/index.js +6 -9
  55. package/dist/commonjs/constants/telemetryConfig.d.ts +3 -0
  56. package/dist/commonjs/constants/telemetryConfig.js +6 -0
  57. package/dist/commonjs/constants/version.d.ts +1 -1
  58. package/dist/commonjs/constants/version.js +1 -3
  59. package/dist/commonjs/crash.d.ts +0 -4
  60. package/dist/commonjs/crash.js +0 -4
  61. package/dist/commonjs/customHooks/analyticsLogger.d.ts +0 -7
  62. package/dist/commonjs/customHooks/analyticsLogger.js +3 -59
  63. package/dist/commonjs/customHooks/bundleAnalyzer.d.ts +0 -9
  64. package/dist/commonjs/customHooks/bundleAnalyzer.js +3 -86
  65. package/dist/commonjs/customHooks/consoleLogger.js +0 -16
  66. package/dist/commonjs/customHooks/crashHandler.d.ts +0 -28
  67. package/dist/commonjs/customHooks/crashHandler.js +0 -55
  68. package/dist/commonjs/customHooks/logFilters.d.ts +0 -4
  69. package/dist/commonjs/customHooks/logFilters.js +0 -11
  70. package/dist/commonjs/customHooks/networkLogger.js +2 -13
  71. package/dist/commonjs/customHooks/performanceTracker.d.ts +0 -27
  72. package/dist/commonjs/customHooks/performanceTracker.js +0 -31
  73. package/dist/commonjs/customHooks/reduxLogger.d.ts +0 -12
  74. package/dist/commonjs/customHooks/reduxLogger.js +0 -51
  75. package/dist/commonjs/customHooks/storageInspector.d.ts +0 -40
  76. package/dist/commonjs/customHooks/storageInspector.js +1 -56
  77. package/dist/commonjs/decorators/index.d.ts +0 -37
  78. package/dist/commonjs/decorators/index.js +0 -42
  79. package/dist/commonjs/helpers/gaAnalyticsRegistry.d.ts +0 -10
  80. package/dist/commonjs/helpers/gaAnalyticsRegistry.js +0 -26
  81. package/dist/commonjs/helpers/index.d.ts +0 -7
  82. package/dist/commonjs/helpers/index.js +1 -42
  83. package/dist/commonjs/helpers/memoryManager.d.ts +0 -11
  84. package/dist/commonjs/helpers/memoryManager.js +0 -13
  85. package/dist/commonjs/helpers/searchQueryParser.d.ts +0 -4
  86. package/dist/commonjs/helpers/searchQueryParser.js +0 -18
  87. package/dist/commonjs/helpers/settingsStore.js +0 -8
  88. package/dist/commonjs/helpers/telemetry.d.ts +2 -0
  89. package/dist/commonjs/helpers/telemetry.js +136 -0
  90. package/dist/commonjs/i18n/index.d.ts +0 -9
  91. package/dist/commonjs/i18n/index.js +0 -15
  92. package/dist/commonjs/index.js +15 -97
  93. package/dist/commonjs/native/NativeInspector.d.ts +0 -54
  94. package/dist/commonjs/native/NativeInspector.js +0 -56
  95. package/dist/commonjs/network.d.ts +0 -4
  96. package/dist/commonjs/network.js +0 -4
  97. package/dist/commonjs/performance.d.ts +0 -4
  98. package/dist/commonjs/performance.js +0 -4
  99. package/dist/commonjs/redux.d.ts +0 -4
  100. package/dist/commonjs/redux.js +0 -4
  101. package/dist/commonjs/storage.d.ts +0 -4
  102. package/dist/commonjs/storage.js +0 -4
  103. package/dist/commonjs/styles/AppColors.d.ts +0 -3
  104. package/dist/commonjs/styles/AppColors.js +15 -30
  105. package/dist/commonjs/styles/AppFonts.d.ts +0 -4
  106. package/dist/commonjs/styles/AppFonts.js +0 -4
  107. package/dist/commonjs/styles/common.js +0 -11
  108. package/dist/commonjs/styles/index.js +0 -8
  109. package/dist/commonjs/types/enums.js +0 -3
  110. package/dist/commonjs/types/interfaces.d.ts +3 -3
  111. package/dist/esm/analytics.d.ts +0 -4
  112. package/dist/esm/analytics.js +0 -4
  113. package/dist/esm/bundle.d.ts +0 -4
  114. package/dist/esm/bundle.js +0 -4
  115. package/dist/esm/components/AnalyticsDetail.js +18 -27
  116. package/dist/esm/components/AnalyticsEventCard.js +9 -12
  117. package/dist/esm/components/AnalyticsGraph.js +10 -15
  118. package/dist/esm/components/AppHeaderLogo.js +0 -3
  119. package/dist/esm/components/BrandCircleIcon.js +15 -15
  120. package/dist/esm/components/BrandSquareIcon.js +20 -20
  121. package/dist/esm/components/CodeSnippet.js +6 -19
  122. package/dist/esm/components/ConsoleLogCard.js +0 -1
  123. package/dist/esm/components/CopyButton.js +0 -4
  124. package/dist/esm/components/DiffViewer.js +0 -2
  125. package/dist/esm/components/DomainHeader.js +0 -4
  126. package/dist/esm/components/EmptyState.js +0 -3
  127. package/dist/esm/components/ErrorBoundary.js +5 -10
  128. package/dist/esm/components/HeadersSection.js +0 -5
  129. package/dist/esm/components/HighlightText.js +1 -4
  130. package/dist/esm/components/Inspector/AnalyticsFilterModal.js +11 -26
  131. package/dist/esm/components/Inspector/AnalyticsTab.js +34 -40
  132. package/dist/esm/components/Inspector/BundleTab.js +56 -84
  133. package/dist/esm/components/Inspector/ConsoleTab.js +7 -7
  134. package/dist/esm/components/Inspector/CrashDetail.js +18 -20
  135. package/dist/esm/components/Inspector/CrashFilterModal.js +0 -1
  136. package/dist/esm/components/Inspector/CrashTab.js +11 -20
  137. package/dist/esm/components/Inspector/DeviceInfoTab.js +12 -24
  138. package/dist/esm/components/Inspector/FabLauncher.js +1 -1
  139. package/dist/esm/components/Inspector/InspectorContext.js +0 -2
  140. package/dist/esm/components/Inspector/InspectorHeader.js +7 -8
  141. package/dist/esm/components/Inspector/LogDetail.js +27 -29
  142. package/dist/esm/components/Inspector/MainScreen.js +9 -10
  143. package/dist/esm/components/Inspector/NetworkDetail.js +10 -11
  144. package/dist/esm/components/Inspector/NetworkTab.js +14 -14
  145. package/dist/esm/components/Inspector/NpmUpdateToast.js +6 -9
  146. package/dist/esm/components/Inspector/PerformanceTab.js +30 -43
  147. package/dist/esm/components/Inspector/ReduxDetail.js +18 -34
  148. package/dist/esm/components/Inspector/ReduxTab.js +11 -20
  149. package/dist/esm/components/Inspector/SettingsPanel.js +32 -36
  150. package/dist/esm/components/Inspector/SkeletonPlaceholder.js +6 -6
  151. package/dist/esm/components/Inspector/StorageTab.js +14 -26
  152. package/dist/esm/components/Inspector/UpdateAvailableModal.js +5 -6
  153. package/dist/esm/components/JsonViewer.js +3 -10
  154. package/dist/esm/components/LogCard.js +7 -7
  155. package/dist/esm/components/MetaAccordion.js +1 -7
  156. package/dist/esm/components/NetworkIcons.js +12 -16
  157. package/dist/esm/components/SectionHeader.js +0 -4
  158. package/dist/esm/components/SkeletonPlaceholder.js +6 -6
  159. package/dist/esm/components/Slider.js +6 -6
  160. package/dist/esm/components/SourcePageCard.js +0 -4
  161. package/dist/esm/components/TreeNode.js +0 -4
  162. package/dist/esm/console.d.ts +0 -4
  163. package/dist/esm/console.js +0 -4
  164. package/dist/esm/constants/index.js +6 -9
  165. package/dist/esm/constants/telemetryConfig.d.ts +3 -0
  166. package/dist/esm/constants/telemetryConfig.js +3 -0
  167. package/dist/esm/constants/version.d.ts +1 -1
  168. package/dist/esm/constants/version.js +1 -3
  169. package/dist/esm/crash.d.ts +0 -4
  170. package/dist/esm/crash.js +0 -4
  171. package/dist/esm/customHooks/analyticsLogger.d.ts +0 -7
  172. package/dist/esm/customHooks/analyticsLogger.js +3 -59
  173. package/dist/esm/customHooks/bundleAnalyzer.d.ts +0 -9
  174. package/dist/esm/customHooks/bundleAnalyzer.js +3 -86
  175. package/dist/esm/customHooks/consoleLogger.js +0 -16
  176. package/dist/esm/customHooks/crashHandler.d.ts +0 -28
  177. package/dist/esm/customHooks/crashHandler.js +0 -55
  178. package/dist/esm/customHooks/logFilters.d.ts +0 -4
  179. package/dist/esm/customHooks/logFilters.js +0 -11
  180. package/dist/esm/customHooks/networkLogger.js +2 -13
  181. package/dist/esm/customHooks/performanceTracker.d.ts +0 -27
  182. package/dist/esm/customHooks/performanceTracker.js +0 -31
  183. package/dist/esm/customHooks/reduxLogger.d.ts +0 -12
  184. package/dist/esm/customHooks/reduxLogger.js +0 -51
  185. package/dist/esm/customHooks/storageInspector.d.ts +0 -40
  186. package/dist/esm/customHooks/storageInspector.js +1 -56
  187. package/dist/esm/decorators/index.d.ts +0 -37
  188. package/dist/esm/decorators/index.js +0 -42
  189. package/dist/esm/helpers/gaAnalyticsRegistry.d.ts +0 -10
  190. package/dist/esm/helpers/gaAnalyticsRegistry.js +0 -26
  191. package/dist/esm/helpers/index.d.ts +0 -7
  192. package/dist/esm/helpers/index.js +1 -42
  193. package/dist/esm/helpers/memoryManager.d.ts +0 -11
  194. package/dist/esm/helpers/memoryManager.js +0 -13
  195. package/dist/esm/helpers/searchQueryParser.d.ts +0 -4
  196. package/dist/esm/helpers/searchQueryParser.js +0 -18
  197. package/dist/esm/helpers/settingsStore.js +0 -8
  198. package/dist/esm/helpers/telemetry.d.ts +2 -0
  199. package/dist/esm/helpers/telemetry.js +132 -0
  200. package/dist/esm/i18n/index.d.ts +0 -9
  201. package/dist/esm/i18n/index.js +0 -15
  202. package/dist/esm/index.js +15 -97
  203. package/dist/esm/native/NativeInspector.d.ts +0 -54
  204. package/dist/esm/native/NativeInspector.js +0 -56
  205. package/dist/esm/network.d.ts +0 -4
  206. package/dist/esm/network.js +0 -4
  207. package/dist/esm/performance.d.ts +0 -4
  208. package/dist/esm/performance.js +0 -4
  209. package/dist/esm/redux.d.ts +0 -4
  210. package/dist/esm/redux.js +0 -4
  211. package/dist/esm/storage.d.ts +0 -4
  212. package/dist/esm/storage.js +0 -4
  213. package/dist/esm/styles/AppColors.d.ts +0 -3
  214. package/dist/esm/styles/AppColors.js +15 -30
  215. package/dist/esm/styles/AppFonts.d.ts +0 -4
  216. package/dist/esm/styles/AppFonts.js +0 -4
  217. package/dist/esm/styles/common.js +0 -11
  218. package/dist/esm/styles/index.js +0 -8
  219. package/dist/esm/types/enums.js +0 -3
  220. package/dist/esm/types/interfaces.d.ts +3 -3
  221. package/package.json +2 -2
  222. package/src/constants/telemetryConfig.ts +6 -0
  223. package/src/constants/version.ts +1 -1
  224. package/src/helpers/telemetry.ts +161 -0
  225. package/src/index.tsx +15 -1
  226. package/src/types/interfaces.ts +3 -0
@@ -10,10 +10,8 @@ import { copyToClipboard } from '../../helpers';
10
10
  import { PackageIcon, SearchIcon, ClearIcon, CircleAlertIcon, LayersIcon, TimelineIcon, LiveStateIcon, StorageIcon, MetadataIcon, FolderIcon, FolderOpenIcon, TrashIcon, LightbulbIcon, SparkleIcon, ClockIcon, RefreshCcwIcon, ExternalLinkIcon, DownloadIcon, } from '../NetworkIcons';
11
11
  import Svg, { Path, Rect, Circle, Ellipse, G, Defs, LinearGradient, Stop, } from 'react-native-svg';
12
12
  import { analyzeHostAppBundle, getCachedBundleAnalysis, getInitialBundleAnalysis, getHostScriptURL, } from '../../customHooks/bundleAnalyzer';
13
- // ─── High-Fidelity Vector Package & NPM Logos ────────────────────────────────
14
13
  const PackageLogoRenderer = ({ name, size = 28 }) => {
15
14
  const lowerName = name.toLowerCase();
16
- // 1. React & React Native (Official Cyan Atom Orbital)
17
15
  if (lowerName === 'react' ||
18
16
  (lowerName.includes('react-native') &&
19
17
  !lowerName.includes('svg') &&
@@ -31,7 +29,6 @@ const PackageLogoRenderer = ({ name, size = 28 }) => {
31
29
  </Svg>
32
30
  </View>);
33
31
  }
34
- // 2. React Navigation (Official Violet/Cyan Compass)
35
32
  if (lowerName.includes('navigation')) {
36
33
  return (<View style={[
37
34
  bundleStyles.pkgLogoWrap,
@@ -44,7 +41,6 @@ const PackageLogoRenderer = ({ name, size = 28 }) => {
44
41
  </Svg>
45
42
  </View>);
46
43
  }
47
- // 3. React Native SVG (Bezier Path Vector Art)
48
44
  if (lowerName.includes('svg')) {
49
45
  return (<View style={[
50
46
  bundleStyles.pkgLogoWrap,
@@ -58,7 +54,6 @@ const PackageLogoRenderer = ({ name, size = 28 }) => {
58
54
  </Svg>
59
55
  </View>);
60
56
  }
61
- // 4. Axios (Official Indigo & Cyan Network Adapter)
62
57
  if (lowerName.includes('axios')) {
63
58
  return (<View style={[
64
59
  bundleStyles.pkgLogoWrap,
@@ -70,7 +65,6 @@ const PackageLogoRenderer = ({ name, size = 28 }) => {
70
65
  </Svg>
71
66
  </View>);
72
67
  }
73
- // 5. React Native Screens (Software Mansion Deep Indigo Stack)
74
68
  if (lowerName.includes('screens') || lowerName.includes('software-mansion')) {
75
69
  return (<View style={[
76
70
  bundleStyles.pkgLogoWrap,
@@ -87,7 +81,6 @@ const PackageLogoRenderer = ({ name, size = 28 }) => {
87
81
  </Svg>
88
82
  </View>);
89
83
  }
90
- // 6. Linear Gradient (Vibrant Color Spectrum)
91
84
  if (lowerName.includes('gradient')) {
92
85
  return (<View style={[
93
86
  bundleStyles.pkgLogoWrap,
@@ -105,7 +98,6 @@ const PackageLogoRenderer = ({ name, size = 28 }) => {
105
98
  </Svg>
106
99
  </View>);
107
100
  }
108
- // 7. i18next & Translations (Emerald Globe)
109
101
  if (lowerName.includes('i18n')) {
110
102
  return (<View style={[
111
103
  bundleStyles.pkgLogoWrap,
@@ -118,7 +110,6 @@ const PackageLogoRenderer = ({ name, size = 28 }) => {
118
110
  </Svg>
119
111
  </View>);
120
112
  }
121
- // 8. Official Red NPM Logo Box (Universal Default NPM Branding)
122
113
  return (<View style={[
123
114
  bundleStyles.pkgLogoWrap,
124
115
  { width: size, height: size, backgroundColor: AppColors.npmRed },
@@ -205,10 +196,8 @@ const BundleCategoryIcon = ({ type, size = 16, color = AppColors.purple }) => {
205
196
  {renderGlyph()}
206
197
  </Svg>);
207
198
  };
208
- // ─── Media File Thumbnail Component ──────────────────────────────────────────
209
199
  const MediaPreviewThumbnail = ({ file }) => {
210
200
  const [loadError, setLoadError] = useState(false);
211
- // 1. If it's an SVG file, render an inline vector thumbnail preview
212
201
  if (file.ext === 'SVG' || file.name.toLowerCase().endsWith('.svg')) {
213
202
  return (<View style={[
214
203
  bundleStyles.mediaThumbWrap,
@@ -227,7 +216,7 @@ const MediaPreviewThumbnail = ({ file }) => {
227
216
  </LinearGradient>
228
217
  </Defs>
229
218
  <Circle cx="50" cy="50" r="44" fill="url(#svgGradThumb)"/>
230
- {/* Vector bezier path pen graphic */}
219
+
231
220
  <Path d="M25 70 C35 30, 65 30, 75 70" stroke={AppColors.white} strokeWidth="8" strokeLinecap="round"/>
232
221
  <Circle cx="25" cy="70" r="7" fill={AppColors.white}/>
233
222
  <Circle cx="75" cy="70" r="7" fill={AppColors.white}/>
@@ -235,7 +224,6 @@ const MediaPreviewThumbnail = ({ file }) => {
235
224
  </Svg>
236
225
  </View>);
237
226
  }
238
- // 2. Raster Image (PNG, JPG, WebP) with valid preview URI
239
227
  if (file.category === 'image' && file.previewUri && !loadError) {
240
228
  return (<View style={bundleStyles.mediaThumbWrap}>
241
229
  <Image source={{ uri: file.previewUri }} style={bundleStyles.mediaThumbImg} resizeMode="cover" onError={() => setLoadError(true)}/>
@@ -303,7 +291,6 @@ function buildBundleFileTree(files) {
303
291
  children,
304
292
  });
305
293
  }
306
- // Sort folders first, then files alphabetically
307
294
  return nodes.sort((a, b) => {
308
295
  if (a.isFolder && !b.isFolder)
309
296
  return -1;
@@ -316,7 +303,6 @@ function buildBundleFileTree(files) {
316
303
  }
317
304
  export const downloadBundleFile = async (file, scriptURL) => {
318
305
  let content = '';
319
- // 1. Attempt to fetch real source code from Metro dev server dynamically
320
306
  try {
321
307
  let devServerOrigin = '';
322
308
  const activeUrl = scriptURL || getHostScriptURL();
@@ -339,7 +325,6 @@ export const downloadBundleFile = async (file, scriptURL) => {
339
325
  }
340
326
  }
341
327
  catch { }
342
- // 2. If dev server direct fetch is unavailable, provide structured module descriptor with full path
343
328
  if (!content) {
344
329
  content = `// ─────────────────────────────────────────────────────────────
345
330
  // File: ${file.name}
@@ -363,7 +348,6 @@ export default {
363
348
  };
364
349
  `;
365
350
  }
366
- // 3. Trigger native Share / Download sheet
367
351
  try {
368
352
  await Share.share(Platform.OS === 'ios'
369
353
  ? {
@@ -378,7 +362,6 @@ export default {
378
362
  });
379
363
  }
380
364
  catch { }
381
- // 4. Also copy directly to clipboard for quick paste in VS Code or external editor
382
365
  try {
383
366
  copyToClipboard(content, file.name);
384
367
  }
@@ -428,7 +411,6 @@ const BundleTreeNodeView = ({ node, level, search, totalBundleKb, expandedFolder
428
411
  </View>)}
429
412
  </View>);
430
413
  }
431
- // File item inside tree
432
414
  const file = node.fileItem;
433
415
  if (!file)
434
416
  return null;
@@ -527,7 +509,6 @@ const BundleTab = React.memo(() => {
527
509
  const [prodPlatform, setProdPlatform] = useState('ios');
528
510
  const [search, setSearch] = useState('');
529
511
  const [activeCategory, setActiveCategory] = useState('ALL');
530
- // ─── Live Host App Bundle Analysis (fetched from Metro / runtime) ─────────
531
512
  const [analysis, setAnalysis] = useState(() => getCachedBundleAnalysis() || getInitialBundleAnalysis());
532
513
  const [isAnalyzing, setIsAnalyzing] = useState(false);
533
514
  const refreshAnalysis = useCallback(() => {
@@ -559,12 +540,9 @@ const BundleTab = React.memo(() => {
559
540
  mounted = false;
560
541
  };
561
542
  }, []);
562
- // Check if Hermes is running
563
543
  const isHermes = Boolean(global.HermesInternal);
564
- // Dynamic files & packages derived from the analyzed host bundle
565
544
  const bundleFiles = useMemo(() => (analysis ? analysis.files : []), [analysis]);
566
545
  const bundlePackages = useMemo(() => (analysis ? analysis.packages : []), [analysis]);
567
- // Comprehensive bundle summary (full Metro bundle calculation e.g. 6.0 MB)
568
546
  const summary = useMemo(() => {
569
547
  const totalKb = analysis?.totalDevKb ||
570
548
  (analysis?.totalDevBytes
@@ -673,7 +651,6 @@ const BundleTab = React.memo(() => {
673
651
  },
674
652
  };
675
653
  }, [analysis, bundleFiles, bundlePackages]);
676
- // Filtered files
677
654
  const filteredFiles = useMemo(() => {
678
655
  return bundleFiles.filter(file => {
679
656
  const matchSearch = !search ||
@@ -694,7 +671,6 @@ const BundleTab = React.memo(() => {
694
671
  const filteredTotalKb = useMemo(() => {
695
672
  return filteredFiles.reduce((acc, f) => acc + f.sizeKb, 0);
696
673
  }, [filteredFiles]);
697
- // Tree View State & Node Generation (Top folders expanded by default)
698
674
  const [filesViewMode, setFilesViewMode] = useState('tree');
699
675
  const [expandedFolders, setExpandedFolders] = useState({});
700
676
  const fileTreeNodes = useMemo(() => {
@@ -738,7 +714,6 @@ const BundleTab = React.memo(() => {
738
714
  const collapseAllFolders = useCallback(() => {
739
715
  setExpandedFolders({});
740
716
  }, []);
741
- // Filtered Packages
742
717
  const filteredPackages = useMemo(() => {
743
718
  if (!search)
744
719
  return bundlePackages;
@@ -750,7 +725,6 @@ const BundleTab = React.memo(() => {
750
725
  const packagesTotalKb = useMemo(() => {
751
726
  return filteredPackages.reduce((acc, p) => acc + p.sizeKb, 0);
752
727
  }, [filteredPackages]);
753
- // Media files (Images + Fonts)
754
728
  const mediaFiles = useMemo(() => {
755
729
  return bundleFiles.filter(f => f.category === 'image' || f.category === 'font');
756
730
  }, [bundleFiles]);
@@ -790,7 +764,7 @@ const BundleTab = React.memo(() => {
790
764
  },
791
765
  ];
792
766
  return (<View style={{ flex: 1, backgroundColor: AppColors.grayBackground }}>
793
- {/* ─── Top Sub-Tabs Navigation Bar (Scrollable Pill Bar + Dynamic Refresh) ─── */}
767
+
794
768
  <View style={bundleStyles.topTabWrap}>
795
769
  <ScrollView horizontal showsHorizontalScrollIndicator={false} style={{ flex: 1 }} contentContainerStyle={bundleStyles.subTabsScroll}>
796
770
  {subTabs.map(tab => {
@@ -814,11 +788,11 @@ const BundleTab = React.memo(() => {
814
788
  </TouchableScale>
815
789
  </View>
816
790
 
817
- {/* ══════════════════════════════════════════════════════════════════════ */}
818
- {/* ── 1. TAB: OVERVIEW & TREEMAP ───────────────────────────────────────── */}
819
- {/* ══════════════════════════════════════════════════════════════════════ */}
791
+
792
+
793
+
820
794
  {activeSubTab === 'overview' && (<ScrollView style={{ flex: 1 }} contentContainerStyle={bundleStyles.contentContainer} keyboardShouldPersistTaps="handled">
821
- {/* Hero Overview Card */}
795
+
822
796
  <View style={bundleStyles.heroCard}>
823
797
  <View style={bundleStyles.heroTopRow}>
824
798
  <View style={bundleStyles.heroIconWrap}>
@@ -887,7 +861,7 @@ const BundleTab = React.memo(() => {
887
861
  <CopyButton value={() => ({ ...summary, bundle: analysis })} label={t('bundle.bundleOverviewJson')}/>
888
862
  </View>
889
863
 
890
- {/* 4-Stat Metric Grid */}
864
+
891
865
  <View style={bundleStyles.metricsGrid}>
892
866
  <View style={bundleStyles.metricBox}>
893
867
  <Text style={bundleStyles.metricLabel}>
@@ -968,7 +942,7 @@ const BundleTab = React.memo(() => {
968
942
  </View>
969
943
  </View>
970
944
 
971
- {/* Live analysis unavailable warning */}
945
+
972
946
  {analysis && !analysis.isLive && (<View style={bundleStyles.liveWarningCard}>
973
947
  <View style={{
974
948
  flexDirection: 'row',
@@ -1010,7 +984,7 @@ const BundleTab = React.memo(() => {
1010
984
  </View>
1011
985
  </View>)}
1012
986
 
1013
- {/* Visual Type Distribution Ratio Bar */}
987
+
1014
988
  <View style={bundleStyles.sectionCard}>
1015
989
  <View style={bundleStyles.sectionHeaderRow}>
1016
990
  <View style={{ flex: 1, paddingRight: 4 }}>
@@ -1040,7 +1014,7 @@ const BundleTab = React.memo(() => {
1040
1014
  })} label={t('bundle.treemapJson')}/>
1041
1015
  </View>
1042
1016
 
1043
- {/* Stacked Colored Bar for Full 6.0 MB Bundle */}
1017
+
1044
1018
  <View style={bundleStyles.treemapBar}>
1045
1019
  <View style={{
1046
1020
  flex: summary.nodeModulesPct,
@@ -1064,7 +1038,7 @@ const BundleTab = React.memo(() => {
1064
1038
  }}/>
1065
1039
  </View>
1066
1040
 
1067
- {/* Legend Grid */}
1041
+
1068
1042
  <View style={bundleStyles.legendGrid}>
1069
1043
  <View style={bundleStyles.legendItem}>
1070
1044
  <BundleCategoryIcon type="javascript" size={13} color={AppColors.indigo500}/>
@@ -1117,7 +1091,7 @@ const BundleTab = React.memo(() => {
1117
1091
  </View>
1118
1092
  </View>
1119
1093
 
1120
- {/* Detailed Category Footprint Cards */}
1094
+
1121
1095
  <View style={bundleStyles.sectionCard}>
1122
1096
  <View style={bundleStyles.sectionHeaderRow}>
1123
1097
  <Text style={bundleStyles.sectionTitle}>
@@ -1181,7 +1155,7 @@ const BundleTab = React.memo(() => {
1181
1155
  </View>
1182
1156
  </View>
1183
1157
 
1184
- {/* Modern Rounded Progress Bar */}
1158
+
1185
1159
  <View style={bundleStyles.catProgressTrack}>
1186
1160
  <View style={[
1187
1161
  bundleStyles.catProgressBar,
@@ -1190,7 +1164,7 @@ const BundleTab = React.memo(() => {
1190
1164
  </View>
1191
1165
  </Pressable>))}
1192
1166
 
1193
- {/* Executive Total Summation Card */}
1167
+
1194
1168
  <View style={bundleStyles.totalSummaryCard}>
1195
1169
  <View style={bundleStyles.totalSummaryRow}>
1196
1170
  <View style={bundleStyles.totalSummaryLabelWrap}>
@@ -1216,7 +1190,7 @@ const BundleTab = React.memo(() => {
1216
1190
  </View>
1217
1191
  </View>
1218
1192
 
1219
- {/* 4-Pill Chip Breakdown */}
1193
+
1220
1194
  <View style={bundleStyles.totalFormulaGrid}>
1221
1195
  <View style={bundleStyles.totalChip}>
1222
1196
  <View style={[
@@ -1261,7 +1235,7 @@ const BundleTab = React.memo(() => {
1261
1235
  </View>
1262
1236
  </View>
1263
1237
 
1264
- {/* Detailed Subsystem Architecture Split-up */}
1238
+
1265
1239
  <View style={bundleStyles.sectionCard}>
1266
1240
  <View style={bundleStyles.sectionHeaderRow}>
1267
1241
  <View style={{ flex: 1, paddingRight: 4 }}>
@@ -1287,7 +1261,7 @@ const BundleTab = React.memo(() => {
1287
1261
  })} label="Subsystem Split JSON"/>
1288
1262
  </View>
1289
1263
 
1290
- {/* 1. NPM Dependencies Layer */}
1264
+
1291
1265
  <View style={bundleStyles.subsystemCard}>
1292
1266
  <View style={bundleStyles.subsystemHeader}>
1293
1267
  <View style={{ flexDirection: 'row', alignItems: 'center', gap: 6 }}>
@@ -1342,7 +1316,7 @@ const BundleTab = React.memo(() => {
1342
1316
  </View>
1343
1317
  </View>
1344
1318
 
1345
- {/* 2. App Source Code Layer */}
1319
+
1346
1320
  <View style={bundleStyles.subsystemCard}>
1347
1321
  <View style={bundleStyles.subsystemHeader}>
1348
1322
  <View style={{ flexDirection: 'row', alignItems: 'center', gap: 6 }}>
@@ -1396,7 +1370,7 @@ const BundleTab = React.memo(() => {
1396
1370
  </View>
1397
1371
  </View>
1398
1372
 
1399
- {/* 3. Hermes Optimization & Bytecode Engine */}
1373
+
1400
1374
  <View style={bundleStyles.subsystemCard}>
1401
1375
  <View style={bundleStyles.subsystemHeader}>
1402
1376
  <View style={{ flexDirection: 'row', alignItems: 'center', gap: 6 }}>
@@ -1445,7 +1419,7 @@ const BundleTab = React.memo(() => {
1445
1419
  </View>
1446
1420
  </View>
1447
1421
 
1448
- {/* 4. Assets & Media Layer */}
1422
+
1449
1423
  <View style={bundleStyles.subsystemCard}>
1450
1424
  <View style={bundleStyles.subsystemHeader}>
1451
1425
  <View style={{ flexDirection: 'row', alignItems: 'center', gap: 6 }}>
@@ -1502,11 +1476,11 @@ const BundleTab = React.memo(() => {
1502
1476
  </View>
1503
1477
  </ScrollView>)}
1504
1478
 
1505
- {/* ══════════════════════════════════════════════════════════════════════ */}
1506
- {/* ── 2. TAB: PRODUCTION BUILDS & PLATFORMS ───────────────────────────── */}
1507
- {/* ══════════════════════════════════════════════════════════════════════ */}
1479
+
1480
+
1481
+
1508
1482
  {activeSubTab === 'production' && (<ScrollView style={{ flex: 1 }} contentContainerStyle={bundleStyles.contentContainer} keyboardShouldPersistTaps="handled">
1509
- {/* Platform Segmented Switcher (Horizontally Scrollable) */}
1483
+
1510
1484
  <ScrollView horizontal showsHorizontalScrollIndicator={false} contentContainerStyle={bundleStyles.prodPlatformScroll}>
1511
1485
  {[
1512
1486
  {
@@ -1551,7 +1525,7 @@ const BundleTab = React.memo(() => {
1551
1525
  })}
1552
1526
  </ScrollView>
1553
1527
 
1554
- {/* Production Platform Metrics Hero */}
1528
+
1555
1529
  {analysis && (<View style={bundleStyles.heroCard}>
1556
1530
  <View style={bundleStyles.heroTopRow}>
1557
1531
  <View style={bundleStyles.heroIconWrap}>
@@ -1576,7 +1550,7 @@ const BundleTab = React.memo(() => {
1576
1550
  <CopyButton value={() => analysis.production[prodPlatform]} label="Production Binary JSON"/>
1577
1551
  </View>
1578
1552
 
1579
- {/* 4-Stat Balanced 2x2 Metric Grid */}
1553
+
1580
1554
  <View style={bundleStyles.metricsGrid}>
1581
1555
  <View style={bundleStyles.metricBox}>
1582
1556
  <Text style={bundleStyles.metricLabel}>INSTALL SIZE</Text>
@@ -1642,7 +1616,7 @@ const BundleTab = React.memo(() => {
1642
1616
  </View>
1643
1617
  </View>)}
1644
1618
 
1645
- {/* Component Breakdown Cards */}
1619
+
1646
1620
  {analysis && (<View style={bundleStyles.sectionCard}>
1647
1621
  <View style={bundleStyles.sectionHeaderRow}>
1648
1622
  <View style={{ flex: 1, paddingRight: 4 }}>
@@ -1657,7 +1631,7 @@ const BundleTab = React.memo(() => {
1657
1631
  <CopyButton value={() => analysis.production[prodPlatform].components} label="Components JSON"/>
1658
1632
  </View>
1659
1633
 
1660
- {/* Visual Binary Component Ratio Bar */}
1634
+
1661
1635
  <View style={bundleStyles.prodTreemapBar}>
1662
1636
  {analysis.production[prodPlatform].components.map((comp, cIdx) => (<View key={cIdx} style={{
1663
1637
  flex: Math.max(comp.pct, 2),
@@ -1666,7 +1640,7 @@ const BundleTab = React.memo(() => {
1666
1640
  }}/>))}
1667
1641
  </View>
1668
1642
 
1669
- {/* Production Binary Legend */}
1643
+
1670
1644
  <View style={[bundleStyles.legendGrid, { marginBottom: 12 }]}>
1671
1645
  {analysis.production[prodPlatform].components.map((comp, cIdx) => (<View key={cIdx} style={bundleStyles.legendItem}>
1672
1646
  <View style={{
@@ -1764,7 +1738,7 @@ const BundleTab = React.memo(() => {
1764
1738
  </View>) : null}
1765
1739
  </View>))}
1766
1740
 
1767
- {/* Total Platform Binary Summary with JS Source Bundle Comparison */}
1741
+
1768
1742
  <View style={bundleStyles.totalSummaryCard}>
1769
1743
  <View style={bundleStyles.totalSummaryRow}>
1770
1744
  <View style={bundleStyles.totalSummaryLabelWrap}>
@@ -1790,7 +1764,7 @@ const BundleTab = React.memo(() => {
1790
1764
  </View>
1791
1765
  </View>
1792
1766
 
1793
- {/* Platform Metric Grid Chips */}
1767
+
1794
1768
  <View style={bundleStyles.totalFormulaGrid}>
1795
1769
  <View style={bundleStyles.totalChip}>
1796
1770
  <View style={[
@@ -1827,11 +1801,11 @@ const BundleTab = React.memo(() => {
1827
1801
  </View>)}
1828
1802
  </ScrollView>)}
1829
1803
 
1830
- {/* ══════════════════════════════════════════════════════════════════════ */}
1831
- {/* ── 2. TAB: FILES BREAKDOWN ─────────────────────────────────────────── */}
1832
- {/* ══════════════════════════════════════════════════════════════════════ */}
1804
+
1805
+
1806
+
1833
1807
  {activeSubTab === 'files' && (<View style={{ flex: 1 }}>
1834
- {/* Search & Category Filter */}
1808
+
1835
1809
  <View style={bundleStyles.filterContainer}>
1836
1810
  <View style={bundleStyles.searchRow}>
1837
1811
  <SearchIcon color={AppColors.grayTextWeak} size={15}/>
@@ -1842,7 +1816,7 @@ const BundleTab = React.memo(() => {
1842
1816
  <CopyButton value={() => filteredFiles} label={t('bundle.filteredFilesJson')}/>
1843
1817
  </View>
1844
1818
 
1845
- {/* Category Filter Chips */}
1819
+
1846
1820
  <ScrollView horizontal showsHorizontalScrollIndicator={false} contentContainerStyle={bundleStyles.categoryPillsScroll}>
1847
1821
  {CATEGORY_TABS.map(tab => {
1848
1822
  const isActive = activeCategory === tab.key;
@@ -1879,9 +1853,9 @@ const BundleTab = React.memo(() => {
1879
1853
  </ScrollView>
1880
1854
  </View>
1881
1855
 
1882
- {/* Files List / Tree Content */}
1856
+
1883
1857
  <ScrollView style={{ flex: 1 }} contentContainerStyle={bundleStyles.contentContainer} keyboardShouldPersistTaps="handled">
1884
- {/* View Mode Toggle Header Bar */}
1858
+
1885
1859
  <View style={bundleStyles.treeHeaderRow}>
1886
1860
  <View style={bundleStyles.viewModeToggleGroup}>
1887
1861
  <TouchableScale accessible={true} accessibilityRole="button" accessibilityLabel="Tree folder view" accessibilityState={{ selected: filesViewMode === 'tree' }} onPress={() => setFilesViewMode('tree')} style={[
@@ -1932,12 +1906,10 @@ const BundleTab = React.memo(() => {
1932
1906
  </Text>)}
1933
1907
  </View>
1934
1908
 
1935
- {/* ── MODE 1: DIRECTORY TREE VIEW ── */}
1909
+
1936
1910
  {filesViewMode === 'tree' ? (<View style={bundleStyles.treeRootCard}>
1937
1911
  {fileTreeNodes.map((node, nIdx) => (<BundleTreeNodeView key={node.id} node={node} level={0} search={search} totalBundleKb={summary.totalKb} expandedFolders={expandedFolders} toggleFolder={toggleFolder} isLastChild={nIdx === fileTreeNodes.length - 1} onDownload={f => downloadBundleFile(f, analysis?.scriptURL)}/>))}
1938
- </View>) : (
1939
- /* ── MODE 2: FLAT LIST VIEW ── */
1940
- filteredFiles.map((file, index) => {
1912
+ </View>) : (filteredFiles.map((file, index) => {
1941
1913
  const categoryMeta = CATEGORY_COLORS[file.category] || CATEGORY_COLORS.typescript;
1942
1914
  const pctOfTotal = ((file.sizeKb / summary.totalKb) *
1943
1915
  100).toFixed(1);
@@ -2042,7 +2014,7 @@ const BundleTab = React.memo(() => {
2042
2014
  }))}
2043
2015
  </ScrollView>
2044
2016
 
2045
- {/* Sticky Total Bundle Size Footer */}
2017
+
2046
2018
  <View style={bundleStyles.stickyFooterBar}>
2047
2019
  <View style={{ flexDirection: 'row', alignItems: 'center', gap: 6 }}>
2048
2020
  <LayersIcon color={AppColors.purple} size={14}/>
@@ -2062,9 +2034,9 @@ const BundleTab = React.memo(() => {
2062
2034
  </View>
2063
2035
  </View>)}
2064
2036
 
2065
- {/* ══════════════════════════════════════════════════════════════════════ */}
2066
- {/* ── 3. TAB: PACKAGES & NODE_MODULES ─────────────────────────────────── */}
2067
- {/* ══════════════════════════════════════════════════════════════════════ */}
2037
+
2038
+
2039
+
2068
2040
  {activeSubTab === 'packages' && (<View style={{ flex: 1 }}>
2069
2041
  <ScrollView style={{ flex: 1 }} contentContainerStyle={bundleStyles.contentContainer} keyboardShouldPersistTaps="handled">
2070
2042
  <View style={bundleStyles.filterContainer}>
@@ -2098,7 +2070,7 @@ const BundleTab = React.memo(() => {
2098
2070
  backgroundColor: AppColors.errorCardBg,
2099
2071
  },
2100
2072
  ]}>
2101
- {/* Header Row: #s.no + Logo + Package Name + Version Pill + Update/Deprecated Badges + Size & Copy */}
2073
+
2102
2074
  <View style={bundleStyles.fileCardTop}>
2103
2075
  <View style={bundleStyles.sNoBadge}>
2104
2076
  <Text style={bundleStyles.sNoText}>#{index + 1}</Text>
@@ -2181,7 +2153,7 @@ const BundleTab = React.memo(() => {
2181
2153
  </View>
2182
2154
  </View>
2183
2155
 
2184
- {/* Subtitle Row: Category Chip + Description */}
2156
+
2185
2157
  <View style={{
2186
2158
  flexDirection: 'row',
2187
2159
  alignItems: 'center',
@@ -2205,7 +2177,7 @@ const BundleTab = React.memo(() => {
2205
2177
  </Text>
2206
2178
  </View>
2207
2179
 
2208
- {/* Deprecation Warning Banner if deprecated */}
2180
+
2209
2181
  {pkg.isDeprecated && pkg.deprecationReason && (<View style={bundleStyles.deprecationBox}>
2210
2182
  <View style={{
2211
2183
  flexDirection: 'row',
@@ -2231,7 +2203,7 @@ const BundleTab = React.memo(() => {
2231
2203
  ]}/>
2232
2204
  </View>
2233
2205
 
2234
- {/* Footer Row: Type Tag + Last Active + NPM Link Button */}
2206
+
2235
2207
  <View style={{
2236
2208
  flexDirection: 'row',
2237
2209
  justifyContent: 'space-between',
@@ -2285,7 +2257,7 @@ const BundleTab = React.memo(() => {
2285
2257
  })}
2286
2258
  </ScrollView>
2287
2259
 
2288
- {/* Sticky Total Package Size Footer */}
2260
+
2289
2261
  <View style={bundleStyles.stickyFooterBar}>
2290
2262
  <View style={{ flexDirection: 'row', alignItems: 'center', gap: 6 }}>
2291
2263
  <PackageIcon color={AppColors.purple} size={14}/>
@@ -2304,9 +2276,9 @@ const BundleTab = React.memo(() => {
2304
2276
  </View>
2305
2277
  </View>)}
2306
2278
 
2307
- {/* ══════════════════════════════════════════════════════════════════════ */}
2308
- {/* ── 4. TAB: MEDIA & ASSET AUDITOR ───────────────────────────────────── */}
2309
- {/* ══════════════════════════════════════════════════════════════════════ */}
2279
+
2280
+
2281
+
2310
2282
  {activeSubTab === 'media' && (<View style={{ flex: 1 }}>
2311
2283
  <ScrollView style={{ flex: 1 }} contentContainerStyle={bundleStyles.contentContainer} keyboardShouldPersistTaps="handled">
2312
2284
  <View style={bundleStyles.tipsCard}>
@@ -2403,7 +2375,7 @@ const BundleTab = React.memo(() => {
2403
2375
  </View>))}
2404
2376
  </ScrollView>
2405
2377
 
2406
- {/* Sticky Total Media Size Footer */}
2378
+
2407
2379
  <View style={bundleStyles.stickyFooterBar}>
2408
2380
  <View style={{ flexDirection: 'row', alignItems: 'center', gap: 6 }}>
2409
2381
  <StorageIcon color={AppColors.purple} size={14}/>
@@ -2420,9 +2392,9 @@ const BundleTab = React.memo(() => {
2420
2392
  </View>
2421
2393
  </View>)}
2422
2394
 
2423
- {/* ══════════════════════════════════════════════════════════════════════ */}
2424
- {/* ── 5. TAB: OPTIMIZER CHECKLIST ─────────────────────────────────────── */}
2425
- {/* ══════════════════════════════════════════════════════════════════════ */}
2395
+
2396
+
2397
+
2426
2398
  {activeSubTab === 'optimizer' && (<ScrollView style={{ flex: 1 }} contentContainerStyle={bundleStyles.contentContainer} keyboardShouldPersistTaps="handled">
2427
2399
  <View style={bundleStyles.tipsCard}>
2428
2400
  <View style={{
@@ -125,7 +125,7 @@ const ConsoleTab = React.memo(() => {
125
125
  </View>
126
126
  </View>
127
127
 
128
- {/* Quick Tag Search Suggestions Bar */}
128
+
129
129
  {(isSearchFocused || logSearch.length > 0) && (<ScrollView horizontal showsHorizontalScrollIndicator={false} style={{ marginBottom: 6, maxHeight: 30 }} contentContainerStyle={{
130
130
  paddingHorizontal: 16,
131
131
  flexDirection: 'row',
@@ -175,7 +175,7 @@ const ConsoleTab = React.memo(() => {
175
175
  alignItems: 'center',
176
176
  gap: 8,
177
177
  }}>
178
- {/* All Filter */}
178
+
179
179
  {(() => {
180
180
  const active = logFilters.has('all');
181
181
  return (<TouchableScale onPress={() => {
@@ -218,7 +218,7 @@ const ConsoleTab = React.memo(() => {
218
218
  </TouchableScale>);
219
219
  })()}
220
220
 
221
- {/* User Log / Standard Log Filter */}
221
+
222
222
  {(() => {
223
223
  const active = logFilters.has('user-log');
224
224
  return (<TouchableScale onPress={() => {
@@ -270,7 +270,7 @@ const ConsoleTab = React.memo(() => {
270
270
  </TouchableScale>);
271
271
  })()}
272
272
 
273
- {/* Info Filter */}
273
+
274
274
  {(() => {
275
275
  const active = logFilters.has('info');
276
276
  return (<TouchableScale onPress={() => {
@@ -322,7 +322,7 @@ const ConsoleTab = React.memo(() => {
322
322
  </TouchableScale>);
323
323
  })()}
324
324
 
325
- {/* Warning Filter */}
325
+
326
326
  {(() => {
327
327
  const active = logFilters.has('warn');
328
328
  return (<TouchableScale onPress={() => {
@@ -374,7 +374,7 @@ const ConsoleTab = React.memo(() => {
374
374
  </TouchableScale>);
375
375
  })()}
376
376
 
377
- {/* Error Filter */}
377
+
378
378
  {(() => {
379
379
  const active = logFilters.has('error');
380
380
  return (<TouchableScale onPress={() => {
@@ -426,7 +426,7 @@ const ConsoleTab = React.memo(() => {
426
426
  </TouchableScale>);
427
427
  })()}
428
428
 
429
- {/* Analytics Filter */}
429
+
430
430
  {(() => {
431
431
  const active = logFilters.has('analytics');
432
432
  return (<TouchableScale onPress={() => {