react-native-inapp-inspector 1.1.17 → 1.1.18
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.
- package/dist/commonjs/components/Inspector/BundleTab.d.ts +5 -0
- package/dist/commonjs/components/Inspector/BundleTab.js +176 -46
- package/dist/commonjs/components/Inspector/MainScreen.js +7 -0
- package/dist/commonjs/components/Inspector/PerformanceTab.d.ts +22 -0
- package/dist/commonjs/components/Inspector/PerformanceTab.js +1143 -0
- package/dist/commonjs/components/Inspector/SettingsPanel.js +5 -0
- package/dist/commonjs/components/Inspector/TabBar.js +7 -0
- package/dist/commonjs/components/NetworkIcons.d.ts +1 -0
- package/dist/commonjs/components/NetworkIcons.js +10 -1
- package/dist/commonjs/constants/version.d.ts +1 -1
- package/dist/commonjs/constants/version.js +1 -1
- package/dist/commonjs/index.js +6 -3
- package/dist/commonjs/types/enums.d.ts +2 -2
- package/dist/esm/components/Inspector/BundleTab.d.ts +5 -0
- package/dist/esm/components/Inspector/BundleTab.js +177 -47
- package/dist/esm/components/Inspector/MainScreen.js +7 -0
- package/dist/esm/components/Inspector/PerformanceTab.d.ts +22 -0
- package/dist/esm/components/Inspector/PerformanceTab.js +1105 -0
- package/dist/esm/components/Inspector/SettingsPanel.js +6 -1
- package/dist/esm/components/Inspector/TabBar.js +8 -1
- package/dist/esm/components/NetworkIcons.d.ts +1 -0
- package/dist/esm/components/NetworkIcons.js +8 -0
- package/dist/esm/constants/version.d.ts +1 -1
- package/dist/esm/constants/version.js +1 -1
- package/dist/esm/index.js +6 -3
- package/dist/esm/types/enums.d.ts +2 -2
- package/package.json +1 -1
|
@@ -26,6 +26,11 @@ export interface BundlePackageItem {
|
|
|
26
26
|
color: string;
|
|
27
27
|
description: string;
|
|
28
28
|
logoUri?: string;
|
|
29
|
+
latestVersion?: string;
|
|
30
|
+
isDeprecated?: boolean;
|
|
31
|
+
deprecationReason?: string;
|
|
32
|
+
lastActive?: string;
|
|
33
|
+
npmUrl?: string;
|
|
29
34
|
}
|
|
30
35
|
export interface TreeNode {
|
|
31
36
|
id: string;
|
|
@@ -632,6 +632,7 @@ const BUNDLE_PACKAGES_DATA = [
|
|
|
632
632
|
id: 'pkg-1',
|
|
633
633
|
name: 'react-native',
|
|
634
634
|
version: '0.85.3',
|
|
635
|
+
latestVersion: '0.85.3',
|
|
635
636
|
sizeKb: 680,
|
|
636
637
|
percentage: 38.5,
|
|
637
638
|
type: 'direct',
|
|
@@ -639,11 +640,15 @@ const BUNDLE_PACKAGES_DATA = [
|
|
|
639
640
|
color: '#38BDF8',
|
|
640
641
|
description: 'React Native runtime, Fabric UI engine, Native Bridge, and Turbomodules.',
|
|
641
642
|
logoUri: 'https://upload.wikimedia.org/wikipedia/commons/thumb/a/a7/React-icon.svg/512px-React-icon.svg.png',
|
|
643
|
+
lastActive: '3 days ago',
|
|
644
|
+
npmUrl: 'https://www.npmjs.com/package/react-native',
|
|
645
|
+
isDeprecated: false,
|
|
642
646
|
},
|
|
643
647
|
{
|
|
644
648
|
id: 'pkg-2',
|
|
645
649
|
name: '@react-navigation/native-stack',
|
|
646
650
|
version: '^7.16.0',
|
|
651
|
+
latestVersion: '7.16.0',
|
|
647
652
|
sizeKb: 245,
|
|
648
653
|
percentage: 13.9,
|
|
649
654
|
type: 'direct',
|
|
@@ -651,11 +656,15 @@ const BUNDLE_PACKAGES_DATA = [
|
|
|
651
656
|
color: '#818CF8',
|
|
652
657
|
description: 'Native screen router, UIViewController / Fragment animations and transitions.',
|
|
653
658
|
logoUri: 'https://reactnavigation.org/img/spiro.svg',
|
|
659
|
+
lastActive: '1 week ago',
|
|
660
|
+
npmUrl: 'https://www.npmjs.com/package/@react-navigation/native-stack',
|
|
661
|
+
isDeprecated: false,
|
|
654
662
|
},
|
|
655
663
|
{
|
|
656
664
|
id: 'pkg-3',
|
|
657
665
|
name: 'react',
|
|
658
666
|
version: '19.2.3',
|
|
667
|
+
latestVersion: '19.2.3',
|
|
659
668
|
sizeKb: 185,
|
|
660
669
|
percentage: 10.5,
|
|
661
670
|
type: 'direct',
|
|
@@ -663,11 +672,15 @@ const BUNDLE_PACKAGES_DATA = [
|
|
|
663
672
|
color: '#06B6D4',
|
|
664
673
|
description: 'React core virtual DOM reconciler, hooks engine, and JSX runtime.',
|
|
665
674
|
logoUri: 'https://upload.wikimedia.org/wikipedia/commons/thumb/a/a7/React-icon.svg/512px-React-icon.svg.png',
|
|
675
|
+
lastActive: '5 days ago',
|
|
676
|
+
npmUrl: 'https://www.npmjs.com/package/react',
|
|
677
|
+
isDeprecated: false,
|
|
666
678
|
},
|
|
667
679
|
{
|
|
668
680
|
id: 'pkg-4',
|
|
669
681
|
name: 'react-native-svg',
|
|
670
682
|
version: '^15.15.5',
|
|
683
|
+
latestVersion: '15.16.0',
|
|
671
684
|
sizeKb: 140,
|
|
672
685
|
percentage: 7.9,
|
|
673
686
|
type: 'direct',
|
|
@@ -675,11 +688,15 @@ const BUNDLE_PACKAGES_DATA = [
|
|
|
675
688
|
color: '#F472B6',
|
|
676
689
|
description: 'Scalable Vector Graphics XML parser and native canvas path rasterizer.',
|
|
677
690
|
logoUri: 'https://upload.wikimedia.org/wikipedia/commons/thumb/0/02/SVG_logo.svg/512px-SVG_logo.svg.png',
|
|
691
|
+
lastActive: '2 days ago',
|
|
692
|
+
npmUrl: 'https://www.npmjs.com/package/react-native-svg',
|
|
693
|
+
isDeprecated: false,
|
|
678
694
|
},
|
|
679
695
|
{
|
|
680
696
|
id: 'pkg-5',
|
|
681
697
|
name: 'react-native-screens',
|
|
682
698
|
version: '^4.25.2',
|
|
699
|
+
latestVersion: '4.25.2',
|
|
683
700
|
sizeKb: 110,
|
|
684
701
|
percentage: 6.2,
|
|
685
702
|
type: 'transitive',
|
|
@@ -687,11 +704,15 @@ const BUNDLE_PACKAGES_DATA = [
|
|
|
687
704
|
color: '#A78BFA',
|
|
688
705
|
description: 'Native navigation container primitives for iOS and Android memory management.',
|
|
689
706
|
logoUri: 'https://reactnavigation.org/img/spiro.svg',
|
|
707
|
+
lastActive: '2 weeks ago',
|
|
708
|
+
npmUrl: 'https://www.npmjs.com/package/react-native-screens',
|
|
709
|
+
isDeprecated: false,
|
|
690
710
|
},
|
|
691
711
|
{
|
|
692
712
|
id: 'pkg-6',
|
|
693
713
|
name: 'axios',
|
|
694
714
|
version: '^1.17.0',
|
|
715
|
+
latestVersion: '1.18.0',
|
|
695
716
|
sizeKb: 88,
|
|
696
717
|
percentage: 5.0,
|
|
697
718
|
type: 'direct',
|
|
@@ -699,11 +720,15 @@ const BUNDLE_PACKAGES_DATA = [
|
|
|
699
720
|
color: '#F59E0B',
|
|
700
721
|
description: 'HTTP client, request/response interceptors, and adapter pipelines.',
|
|
701
722
|
logoUri: 'https://axios-http.com/assets/logo.svg',
|
|
723
|
+
lastActive: '4 days ago',
|
|
724
|
+
npmUrl: 'https://www.npmjs.com/package/axios',
|
|
725
|
+
isDeprecated: false,
|
|
702
726
|
},
|
|
703
727
|
{
|
|
704
728
|
id: 'pkg-7',
|
|
705
729
|
name: 'react-native-linear-gradient',
|
|
706
730
|
version: '^2.8.3',
|
|
731
|
+
latestVersion: '2.8.3',
|
|
707
732
|
sizeKb: 45,
|
|
708
733
|
percentage: 2.5,
|
|
709
734
|
type: 'direct',
|
|
@@ -711,11 +736,16 @@ const BUNDLE_PACKAGES_DATA = [
|
|
|
711
736
|
color: '#FB7185',
|
|
712
737
|
description: 'Hardware accelerated native gradient drawing shaders.',
|
|
713
738
|
logoUri: 'https://upload.wikimedia.org/wikipedia/commons/thumb/a/a7/React-icon.svg/512px-React-icon.svg.png',
|
|
739
|
+
lastActive: '2 years ago',
|
|
740
|
+
npmUrl: 'https://www.npmjs.com/package/react-native-linear-gradient',
|
|
741
|
+
isDeprecated: true,
|
|
742
|
+
deprecationReason: 'Package maintenance is in transition. Consider expo-linear-gradient or @react-native-community/linear-gradient for Fabric support.',
|
|
714
743
|
},
|
|
715
744
|
{
|
|
716
745
|
id: 'pkg-8',
|
|
717
746
|
name: 'i18next & react-i18next',
|
|
718
747
|
version: '^26.3.6',
|
|
748
|
+
latestVersion: '26.3.6',
|
|
719
749
|
sizeKb: 62,
|
|
720
750
|
percentage: 3.5,
|
|
721
751
|
type: 'direct',
|
|
@@ -723,6 +753,9 @@ const BUNDLE_PACKAGES_DATA = [
|
|
|
723
753
|
color: '#10B981',
|
|
724
754
|
description: 'Internationalization framework, language interpolator, and locale switcher.',
|
|
725
755
|
logoUri: 'https://raw.githubusercontent.com/i18next/i18next/master/assets/i18next-logo.png',
|
|
756
|
+
lastActive: '6 days ago',
|
|
757
|
+
npmUrl: 'https://www.npmjs.com/package/i18next',
|
|
758
|
+
isDeprecated: false,
|
|
726
759
|
},
|
|
727
760
|
];
|
|
728
761
|
const CATEGORY_TABS = [
|
|
@@ -1354,65 +1387,99 @@ const BundleTab = react_1.default.memo(() => {
|
|
|
1354
1387
|
Showing {filteredPackages.length} dependencies
|
|
1355
1388
|
</react_native_1.Text>
|
|
1356
1389
|
|
|
1357
|
-
{filteredPackages.map((pkg, index) =>
|
|
1358
|
-
|
|
1359
|
-
|
|
1360
|
-
|
|
1361
|
-
|
|
1362
|
-
|
|
1390
|
+
{filteredPackages.map((pkg, index) => {
|
|
1391
|
+
const cleanInstalledVersion = pkg.version.replace(/^\^/, '');
|
|
1392
|
+
const hasUpdate = pkg.latestVersion && pkg.latestVersion !== cleanInstalledVersion;
|
|
1393
|
+
return (<react_native_1.View key={pkg.id} style={[bundleStyles.fileCard, pkg.isDeprecated && { borderColor: '#FECDD3', backgroundColor: '#FFFDFD' }]}>
|
|
1394
|
+
{/* Header Row: #s.no + Logo + Package Name + Version Pill + Update/Deprecated Badges + Size & Copy */}
|
|
1395
|
+
<react_native_1.View style={bundleStyles.fileCardTop}>
|
|
1396
|
+
<react_native_1.View style={bundleStyles.sNoBadge}>
|
|
1397
|
+
<react_native_1.Text style={bundleStyles.sNoText}>#{index + 1}</react_native_1.Text>
|
|
1398
|
+
</react_native_1.View>
|
|
1363
1399
|
|
|
1364
|
-
|
|
1400
|
+
<PackageLogoRenderer name={pkg.name} color={pkg.color} size={28}/>
|
|
1365
1401
|
|
|
1366
|
-
|
|
1367
|
-
|
|
1368
|
-
|
|
1369
|
-
|
|
1370
|
-
|
|
1371
|
-
|
|
1372
|
-
|
|
1402
|
+
<react_native_1.View style={{ flex: 1, paddingHorizontal: 4 }}>
|
|
1403
|
+
<react_native_1.View style={{ flexDirection: 'row', alignItems: 'center', gap: 6, flexWrap: 'wrap' }}>
|
|
1404
|
+
<HighlightText_1.default text={pkg.name} search={search} style={bundleStyles.fileName} highlightStyle={bundleStyles.searchHighlight}/>
|
|
1405
|
+
<react_native_1.View style={bundleStyles.versionPill}>
|
|
1406
|
+
<react_native_1.Text style={bundleStyles.versionPillText}>
|
|
1407
|
+
v{cleanInstalledVersion}
|
|
1408
|
+
</react_native_1.Text>
|
|
1409
|
+
</react_native_1.View>
|
|
1410
|
+
|
|
1411
|
+
{pkg.isDeprecated ? (<react_native_1.View style={bundleStyles.deprecatedBadge}>
|
|
1412
|
+
<react_native_1.Text style={bundleStyles.deprecatedBadgeText}>⚠️ DEPRECATED</react_native_1.Text>
|
|
1413
|
+
</react_native_1.View>) : hasUpdate ? (<react_native_1.View style={bundleStyles.updateBadge}>
|
|
1414
|
+
<react_native_1.Text style={bundleStyles.updateBadgeText}>⚡ Update: v{pkg.latestVersion}</react_native_1.Text>
|
|
1415
|
+
</react_native_1.View>) : (<react_native_1.View style={[bundleStyles.updateBadge, { backgroundColor: '#F3F4F6', borderColor: '#E5E7EB' }]}>
|
|
1416
|
+
<react_native_1.Text style={[bundleStyles.updateBadgeText, { color: '#4B5563' }]}>✨ Up to date</react_native_1.Text>
|
|
1417
|
+
</react_native_1.View>)}
|
|
1373
1418
|
</react_native_1.View>
|
|
1374
1419
|
</react_native_1.View>
|
|
1375
|
-
</react_native_1.View>
|
|
1376
1420
|
|
|
1377
|
-
|
|
1378
|
-
|
|
1379
|
-
|
|
1380
|
-
|
|
1421
|
+
<react_native_1.View style={{ flexDirection: 'row', alignItems: 'center', gap: 6 }}>
|
|
1422
|
+
<react_native_1.View style={bundleStyles.fileSizeBox}>
|
|
1423
|
+
<react_native_1.Text style={bundleStyles.fileSizeKb}>{pkg.sizeKb} KB</react_native_1.Text>
|
|
1424
|
+
<react_native_1.Text style={bundleStyles.filePercent}>{pkg.percentage}%</react_native_1.Text>
|
|
1425
|
+
</react_native_1.View>
|
|
1426
|
+
<CopyButton_1.default value={() => pkg} label="Package Details JSON"/>
|
|
1381
1427
|
</react_native_1.View>
|
|
1382
|
-
<CopyButton_1.default value={() => pkg} label="Package Details JSON"/>
|
|
1383
1428
|
</react_native_1.View>
|
|
1384
|
-
</react_native_1.View>
|
|
1385
1429
|
|
|
1386
|
-
|
|
1387
|
-
|
|
1388
|
-
|
|
1389
|
-
|
|
1390
|
-
|
|
1430
|
+
{/* Subtitle Row: Category Chip + Description */}
|
|
1431
|
+
<react_native_1.View style={{ flexDirection: 'row', alignItems: 'center', gap: 6, marginTop: 4, marginBottom: 2 }}>
|
|
1432
|
+
<react_native_1.View style={[bundleStyles.pkgBadge, { backgroundColor: `${pkg.color}1F`, borderColor: `${pkg.color}4D` }]}>
|
|
1433
|
+
<react_native_1.Text style={[bundleStyles.pkgBadgeText, { color: pkg.color }]}>
|
|
1434
|
+
{pkg.category.toUpperCase()}
|
|
1435
|
+
</react_native_1.Text>
|
|
1436
|
+
</react_native_1.View>
|
|
1437
|
+
<react_native_1.Text style={[bundleStyles.filePath, { flex: 1, marginTop: 0 }]} numberOfLines={1}>
|
|
1438
|
+
{pkg.description}
|
|
1391
1439
|
</react_native_1.Text>
|
|
1392
1440
|
</react_native_1.View>
|
|
1393
|
-
<react_native_1.Text style={[bundleStyles.filePath, { flex: 1, marginTop: 0 }]} numberOfLines={1}>
|
|
1394
|
-
{pkg.description}
|
|
1395
|
-
</react_native_1.Text>
|
|
1396
|
-
</react_native_1.View>
|
|
1397
1441
|
|
|
1398
|
-
|
|
1399
|
-
<react_native_1.View style={
|
|
1400
|
-
|
|
1401
|
-
|
|
1402
|
-
|
|
1403
|
-
|
|
1442
|
+
{/* Deprecation Warning Banner if deprecated */}
|
|
1443
|
+
{pkg.isDeprecated && pkg.deprecationReason && (<react_native_1.View style={bundleStyles.deprecationBox}>
|
|
1444
|
+
<react_native_1.Text style={bundleStyles.deprecationText}>
|
|
1445
|
+
⚠️ {pkg.deprecationReason}
|
|
1446
|
+
</react_native_1.Text>
|
|
1447
|
+
</react_native_1.View>)}
|
|
1404
1448
|
|
|
1405
|
-
|
|
1406
|
-
|
|
1407
|
-
|
|
1408
|
-
|
|
1409
|
-
|
|
1449
|
+
<react_native_1.View style={bundleStyles.fileProgressTrack}>
|
|
1450
|
+
<react_native_1.View style={[
|
|
1451
|
+
bundleStyles.fileProgressBar,
|
|
1452
|
+
{ width: `${pkg.percentage * 2}%`, backgroundColor: pkg.isDeprecated ? '#EF4444' : pkg.color },
|
|
1453
|
+
]}/>
|
|
1410
1454
|
</react_native_1.View>
|
|
1411
|
-
|
|
1412
|
-
|
|
1413
|
-
|
|
1414
|
-
|
|
1415
|
-
|
|
1455
|
+
|
|
1456
|
+
{/* Footer Row: Type Tag + Last Active + NPM Link Button */}
|
|
1457
|
+
<react_native_1.View style={{ flexDirection: 'row', justifyContent: 'space-between', alignItems: 'center', marginTop: 3 }}>
|
|
1458
|
+
<react_native_1.View style={{ flexDirection: 'row', alignItems: 'center', gap: 8 }}>
|
|
1459
|
+
<react_native_1.View style={bundleStyles.typeTag}>
|
|
1460
|
+
<react_native_1.Text style={bundleStyles.typeTagText}>
|
|
1461
|
+
{pkg.type === 'direct' ? '📦 Direct' : '🔗 Transitive'}
|
|
1462
|
+
</react_native_1.Text>
|
|
1463
|
+
</react_native_1.View>
|
|
1464
|
+
{pkg.lastActive && (<react_native_1.Text style={bundleStyles.lastActiveText}>
|
|
1465
|
+
🕒 {pkg.lastActive}
|
|
1466
|
+
</react_native_1.Text>)}
|
|
1467
|
+
</react_native_1.View>
|
|
1468
|
+
|
|
1469
|
+
<react_native_1.View style={{ flexDirection: 'row', alignItems: 'center', gap: 8 }}>
|
|
1470
|
+
<react_native_1.Text style={bundleStyles.fileMetaText}>
|
|
1471
|
+
~{pkg.sizeKb} KB minified
|
|
1472
|
+
</react_native_1.Text>
|
|
1473
|
+
<TouchableScale_1.default onPress={() => {
|
|
1474
|
+
const url = pkg.npmUrl || `https://www.npmjs.com/package/${pkg.name}`;
|
|
1475
|
+
react_native_1.Linking.openURL(url).catch(() => { });
|
|
1476
|
+
}} style={bundleStyles.npmLinkBtn}>
|
|
1477
|
+
<react_native_1.Text style={bundleStyles.npmLinkText}>npm ↗</react_native_1.Text>
|
|
1478
|
+
</TouchableScale_1.default>
|
|
1479
|
+
</react_native_1.View>
|
|
1480
|
+
</react_native_1.View>
|
|
1481
|
+
</react_native_1.View>);
|
|
1482
|
+
})}
|
|
1416
1483
|
</react_native_1.ScrollView>
|
|
1417
1484
|
|
|
1418
1485
|
{/* Sticky Total Package Size Footer */}
|
|
@@ -2138,6 +2205,69 @@ const bundleStyles = react_native_1.StyleSheet.create({
|
|
|
2138
2205
|
fontSize: 9.5,
|
|
2139
2206
|
color: AppColors_1.AppColors.grayText,
|
|
2140
2207
|
},
|
|
2208
|
+
npmLinkBtn: {
|
|
2209
|
+
flexDirection: 'row',
|
|
2210
|
+
alignItems: 'center',
|
|
2211
|
+
gap: 3,
|
|
2212
|
+
paddingHorizontal: 7,
|
|
2213
|
+
paddingVertical: 2,
|
|
2214
|
+
borderRadius: 5,
|
|
2215
|
+
backgroundColor: '#CB383714',
|
|
2216
|
+
borderWidth: 1,
|
|
2217
|
+
borderColor: '#CB383733',
|
|
2218
|
+
},
|
|
2219
|
+
npmLinkText: {
|
|
2220
|
+
fontFamily: AppFonts_1.AppFonts.interBold,
|
|
2221
|
+
fontSize: 9.5,
|
|
2222
|
+
color: '#CB3837',
|
|
2223
|
+
},
|
|
2224
|
+
deprecatedBadge: {
|
|
2225
|
+
paddingHorizontal: 6,
|
|
2226
|
+
paddingVertical: 1.5,
|
|
2227
|
+
borderRadius: 4,
|
|
2228
|
+
backgroundColor: '#FEE2E2',
|
|
2229
|
+
borderWidth: 1,
|
|
2230
|
+
borderColor: '#FECACA',
|
|
2231
|
+
},
|
|
2232
|
+
deprecatedBadgeText: {
|
|
2233
|
+
fontFamily: AppFonts_1.AppFonts.interBold,
|
|
2234
|
+
fontSize: 9,
|
|
2235
|
+
color: '#DC2626',
|
|
2236
|
+
letterSpacing: 0.3,
|
|
2237
|
+
},
|
|
2238
|
+
updateBadge: {
|
|
2239
|
+
paddingHorizontal: 6,
|
|
2240
|
+
paddingVertical: 1.5,
|
|
2241
|
+
borderRadius: 4,
|
|
2242
|
+
backgroundColor: '#DCFCE7',
|
|
2243
|
+
borderWidth: 1,
|
|
2244
|
+
borderColor: '#BBF7D0',
|
|
2245
|
+
},
|
|
2246
|
+
updateBadgeText: {
|
|
2247
|
+
fontFamily: AppFonts_1.AppFonts.interBold,
|
|
2248
|
+
fontSize: 9,
|
|
2249
|
+
color: '#047857',
|
|
2250
|
+
},
|
|
2251
|
+
lastActiveText: {
|
|
2252
|
+
fontFamily: AppFonts_1.AppFonts.interRegular,
|
|
2253
|
+
fontSize: 10,
|
|
2254
|
+
color: AppColors_1.AppColors.grayTextWeak,
|
|
2255
|
+
},
|
|
2256
|
+
deprecationBox: {
|
|
2257
|
+
backgroundColor: '#FFF1F2',
|
|
2258
|
+
borderRadius: 6,
|
|
2259
|
+
paddingHorizontal: 8,
|
|
2260
|
+
paddingVertical: 5,
|
|
2261
|
+
borderWidth: 1,
|
|
2262
|
+
borderColor: '#FECDD3',
|
|
2263
|
+
marginTop: 3,
|
|
2264
|
+
},
|
|
2265
|
+
deprecationText: {
|
|
2266
|
+
fontFamily: AppFonts_1.AppFonts.interMedium,
|
|
2267
|
+
fontSize: 10.5,
|
|
2268
|
+
color: '#BE123C',
|
|
2269
|
+
lineHeight: 14,
|
|
2270
|
+
},
|
|
2141
2271
|
unusedBadge: {
|
|
2142
2272
|
paddingHorizontal: 6,
|
|
2143
2273
|
paddingVertical: 1.5,
|
|
@@ -52,6 +52,7 @@ const AnalyticsDetail_1 = __importDefault(require("../AnalyticsDetail"));
|
|
|
52
52
|
const ReduxTab_1 = __importDefault(require("./ReduxTab"));
|
|
53
53
|
const ReduxDetail_1 = __importDefault(require("./ReduxDetail"));
|
|
54
54
|
const BundleTab_1 = __importDefault(require("./BundleTab"));
|
|
55
|
+
const PerformanceTab_1 = __importDefault(require("./PerformanceTab"));
|
|
55
56
|
const SettingsPanel_1 = __importDefault(require("./SettingsPanel"));
|
|
56
57
|
const styles_1 = __importDefault(require("../../styles"));
|
|
57
58
|
const AppColors_1 = require("../../styles/AppColors");
|
|
@@ -121,6 +122,12 @@ const MainScreen = () => {
|
|
|
121
122
|
}}>
|
|
122
123
|
{mountedTabs.bundle && <BundleTab_1.default />}
|
|
123
124
|
</react_native_1.View>
|
|
125
|
+
<react_native_1.View style={{
|
|
126
|
+
flex: 1,
|
|
127
|
+
display: activeTab === 'performance' ? 'flex' : 'none',
|
|
128
|
+
}}>
|
|
129
|
+
{mountedTabs.performance && <PerformanceTab_1.default />}
|
|
130
|
+
</react_native_1.View>
|
|
124
131
|
</>)) : (<react_native_1.View style={styles_1.default.empty}>
|
|
125
132
|
<react_native_1.ActivityIndicator size="large" color={AppColors_1.AppColors.purple}/>
|
|
126
133
|
<react_native_1.Text style={[styles_1.default.emptySub, { marginTop: 12 }]}>
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export interface PerformanceEvent {
|
|
3
|
+
id: string;
|
|
4
|
+
timestamp: number;
|
|
5
|
+
type: 'fps_drop' | 'slow_render' | 'transition' | 'memory' | 'network' | 'bridge' | 'touch';
|
|
6
|
+
category: 'render' | 'navigation' | 'memory' | 'io' | 'bridge';
|
|
7
|
+
fps: number;
|
|
8
|
+
durationMs: number;
|
|
9
|
+
label: string;
|
|
10
|
+
detail: string;
|
|
11
|
+
source?: string;
|
|
12
|
+
breakdown?: {
|
|
13
|
+
jsTimeMs: number;
|
|
14
|
+
uiTimeMs: number;
|
|
15
|
+
bridgeLatencyMs?: number;
|
|
16
|
+
};
|
|
17
|
+
heapDeltaKb?: number;
|
|
18
|
+
advice?: string;
|
|
19
|
+
severity: 'optimal' | 'warning' | 'critical';
|
|
20
|
+
}
|
|
21
|
+
declare const PerformanceTab: React.MemoExoticComponent<() => React.JSX.Element>;
|
|
22
|
+
export default PerformanceTab;
|