rnxsim 0.1.455 → 0.1.457

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 (62) hide show
  1. package/cli/cloud-client.ts +3 -1
  2. package/cli/cloud-dispatch.ts +17 -0
  3. package/cli/commands/do-chain.ts +1 -4
  4. package/cli/commands/inspect/actions.ts +63 -14
  5. package/cli/commands/inspect.ts +66 -5
  6. package/cli/ws-bridge.ts +3 -0
  7. package/dist-lib/agent-daemon-client.cjs +1 -1
  8. package/dist-lib/agent-events.cjs +1 -1
  9. package/dist-lib/agent-identity.cjs +1 -1
  10. package/dist-lib/agent-sessions.cjs +1 -1
  11. package/dist-lib/attached-projects.cjs +1 -1
  12. package/dist-lib/auth/shared-session.cjs +1 -1
  13. package/dist-lib/backend-origin.cjs +1 -1
  14. package/dist-lib/beta.cjs +1 -1
  15. package/dist-lib/beta.mjs +1 -1
  16. package/dist-lib/bridge-constants.cjs +1 -1
  17. package/dist-lib/bridge-contract-input.cjs +1 -1
  18. package/dist-lib/bridge-contract-input.mjs +1 -1
  19. package/dist-lib/bridge-contract.cjs +1 -1
  20. package/dist-lib/bridge-contract.mjs +1 -1
  21. package/dist-lib/capture-contract.cjs +1 -1
  22. package/dist-lib/capture-contract.mjs +1 -1
  23. package/dist-lib/cli-constants.cjs +1 -1
  24. package/dist-lib/cloud-contract.cjs +1 -1
  25. package/dist-lib/cloud-contract.mjs +1 -1
  26. package/dist-lib/cloud.cjs +1 -1
  27. package/dist-lib/cloud.mjs +1 -1
  28. package/dist-lib/config.cjs +1 -1
  29. package/dist-lib/detox/index.cjs +1 -1
  30. package/dist-lib/dev-bundle-resolution.cjs +1 -1
  31. package/dist-lib/home-paths.cjs +1 -1
  32. package/dist-lib/host/bridge-host.cjs +1 -1
  33. package/dist-lib/host/fetch-proxy-handler.cjs +1 -1
  34. package/dist-lib/host/fetch-proxy-overrides.cjs +1 -1
  35. package/dist-lib/host/fetch-proxy-overrides.mjs +1 -1
  36. package/dist-lib/host/replacement-module-handler.cjs +1 -1
  37. package/dist-lib/host/websocket-proxy.cjs +1 -1
  38. package/dist-lib/index.cjs +583 -241
  39. package/dist-lib/jump-to-source-babel.cjs +1 -1
  40. package/dist-lib/jump-to-source-native.cjs +1 -1
  41. package/dist-lib/menu.cjs +1 -1
  42. package/dist-lib/menu.mjs +1 -1
  43. package/dist-lib/metro-fingerprint-registry.cjs +1 -1
  44. package/dist-lib/metro-fingerprint-registry.mjs +1 -1
  45. package/dist-lib/metro-production-bundle.cjs +1 -1
  46. package/dist-lib/metro-production-bundle.mjs +1 -1
  47. package/dist-lib/metro.cjs +1 -1
  48. package/dist-lib/profiles.cjs +1 -1
  49. package/dist-lib/public-brand.cjs +1 -1
  50. package/dist-lib/react-native-host-modules.cjs +1 -1
  51. package/dist-lib/react-native-host-modules.mjs +1 -1
  52. package/dist-lib/render-mode.cjs +1 -1
  53. package/dist-lib/scripts/dev-server-scanner.cjs +1 -1
  54. package/dist-lib/sdk.cjs +43 -15
  55. package/dist-lib/sdk.mjs +43 -15
  56. package/dist-lib/skills.cjs +1118 -85
  57. package/dist-lib/vite.cjs +1 -1
  58. package/package.json +1 -1
  59. package/skills/rnx-debug/SKILL.md +1 -1
  60. package/src/bridge-contract.ts +2 -1
  61. package/src/connect.ts +18 -0
  62. package/src/sim-client.ts +4 -0
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.455 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.457 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -587,6 +587,61 @@ function aggregateCompatibilityOutcomes(contributions) {
587
587
  function formatCompatibilityPercent(percent) {
588
588
  return percent > 0 && percent < 0.1 ? "<0.1" : String(Number(percent.toFixed(1)));
589
589
  }
590
+ function calculateFeatureCompatibility(features) {
591
+ const contributions = [];
592
+ const ids = /* @__PURE__ */ new Set();
593
+ function visit(siblings, parentWeight, parentEqualWeight) {
594
+ if (siblings.length === 0) throw new Error("feature assessment must not be empty");
595
+ let total = 0;
596
+ for (const feature of siblings) {
597
+ for (const rating of [feature.usage, feature.importance]) {
598
+ if (!Number.isInteger(rating) || rating < 1 || rating > 3) {
599
+ throw new Error(`feature ${feature.id} ratings must be integers from 1 to 3`);
600
+ }
601
+ }
602
+ total += feature.usage * feature.importance;
603
+ }
604
+ let estimatedMass = 0;
605
+ let equalEstimatedMass = 0;
606
+ for (const feature of siblings) {
607
+ const featureId = feature.id;
608
+ if (!feature.id.trim() || ids.has(feature.id)) {
609
+ throw new Error(`feature identity is empty or duplicated: ${feature.id}`);
610
+ }
611
+ ids.add(feature.id);
612
+ if (!feature.rationale.trim())
613
+ throw new Error(`feature ${feature.id} needs a rationale`);
614
+ const weight = parentWeight * feature.usage * feature.importance / total;
615
+ const equalWeight = parentEqualWeight / siblings.length;
616
+ if (feature.children !== void 0) {
617
+ if (feature.estimate !== void 0) {
618
+ throw new Error(`feature ${featureId} cannot have children and an estimate`);
619
+ }
620
+ const child = visit(feature.children, weight, equalWeight);
621
+ estimatedMass += feature.usage * feature.importance * child.estimate;
622
+ equalEstimatedMass += child.equalEstimate;
623
+ } else {
624
+ if (!Number.isFinite(feature.estimate) || feature.estimate < 0 || feature.estimate > 1) {
625
+ throw new Error(`feature ${feature.id} estimate must be between 0 and 1`);
626
+ }
627
+ estimatedMass += feature.usage * feature.importance * feature.estimate;
628
+ equalEstimatedMass += feature.estimate;
629
+ contributions.push({
630
+ id: feature.id,
631
+ weight,
632
+ equalWeight,
633
+ estimate: feature.estimate,
634
+ rationale: feature.rationale
635
+ });
636
+ }
637
+ }
638
+ return {
639
+ estimate: estimatedMass / total,
640
+ equalEstimate: equalEstimatedMass / siblings.length
641
+ };
642
+ }
643
+ return { features: contributions, ...visit(features, 1, 1) };
644
+ }
590
645
  var init_capability_outcomes = __esm({
591
646
  "../compat/src/capability-outcomes.ts"() {
592
647
  "use strict";
@@ -1274,8 +1329,8 @@ var init_capability_inventory_coverage = __esm({
1274
1329
  ios: {
1275
1330
  combined: {
1276
1331
  raw: {
1277
- covered: 233,
1278
- ratio: 0.167264895908,
1332
+ covered: 235,
1333
+ ratio: 0.168700646088,
1279
1334
  total: 1393
1280
1335
  },
1281
1336
  weighted: {
@@ -1286,8 +1341,8 @@ var init_capability_inventory_coverage = __esm({
1286
1341
  },
1287
1342
  semantic: {
1288
1343
  raw: {
1289
- covered: 233,
1290
- ratio: 0.23370110331,
1344
+ covered: 235,
1345
+ ratio: 0.235707121364,
1291
1346
  total: 997
1292
1347
  },
1293
1348
  weighted: {
@@ -1664,36 +1719,36 @@ var init_capability_inventory_coverage = __esm({
1664
1719
  raw: {
1665
1720
  covered: 0,
1666
1721
  ratio: 0,
1667
- total: 350
1722
+ total: 363
1668
1723
  },
1669
1724
  weighted: {
1670
1725
  covered: 0,
1671
1726
  ratio: 0,
1672
- total: 7.23440860215
1727
+ total: 7.52588808916
1673
1728
  }
1674
1729
  },
1675
1730
  semantic: {
1676
1731
  raw: {
1677
1732
  covered: 0,
1678
1733
  ratio: 0,
1679
- total: 182
1734
+ total: 189
1680
1735
  },
1681
1736
  weighted: {
1682
1737
  covered: 0,
1683
1738
  ratio: 0,
1684
- total: 4.07455197133
1739
+ total: 4.0601346645
1685
1740
  }
1686
1741
  },
1687
1742
  visual: {
1688
1743
  raw: {
1689
1744
  covered: 0,
1690
1745
  ratio: 0,
1691
- total: 168
1746
+ total: 174
1692
1747
  },
1693
1748
  weighted: {
1694
1749
  covered: 0,
1695
1750
  ratio: 0,
1696
- total: 3.15985663082
1751
+ total: 3.46575342466
1697
1752
  }
1698
1753
  },
1699
1754
  byPlatform: {
@@ -1702,36 +1757,36 @@ var init_capability_inventory_coverage = __esm({
1702
1757
  raw: {
1703
1758
  covered: 0,
1704
1759
  ratio: 0,
1705
- total: 350
1760
+ total: 363
1706
1761
  },
1707
1762
  weighted: {
1708
1763
  covered: 0,
1709
1764
  ratio: 0,
1710
- total: 7.23440860215
1765
+ total: 7.52588808916
1711
1766
  }
1712
1767
  },
1713
1768
  semantic: {
1714
1769
  raw: {
1715
1770
  covered: 0,
1716
1771
  ratio: 0,
1717
- total: 182
1772
+ total: 189
1718
1773
  },
1719
1774
  weighted: {
1720
1775
  covered: 0,
1721
1776
  ratio: 0,
1722
- total: 4.07455197133
1777
+ total: 4.0601346645
1723
1778
  }
1724
1779
  },
1725
1780
  visual: {
1726
1781
  raw: {
1727
1782
  covered: 0,
1728
1783
  ratio: 0,
1729
- total: 168
1784
+ total: 174
1730
1785
  },
1731
1786
  weighted: {
1732
1787
  covered: 0,
1733
1788
  ratio: 0,
1734
- total: 3.15985663082
1789
+ total: 3.46575342466
1735
1790
  }
1736
1791
  }
1737
1792
  },
@@ -1740,36 +1795,36 @@ var init_capability_inventory_coverage = __esm({
1740
1795
  raw: {
1741
1796
  covered: 0,
1742
1797
  ratio: 0,
1743
- total: 350
1798
+ total: 363
1744
1799
  },
1745
1800
  weighted: {
1746
1801
  covered: 0,
1747
1802
  ratio: 0,
1748
- total: 7.23440860215
1803
+ total: 7.52588808916
1749
1804
  }
1750
1805
  },
1751
1806
  semantic: {
1752
1807
  raw: {
1753
1808
  covered: 0,
1754
1809
  ratio: 0,
1755
- total: 182
1810
+ total: 189
1756
1811
  },
1757
1812
  weighted: {
1758
1813
  covered: 0,
1759
1814
  ratio: 0,
1760
- total: 4.07455197133
1815
+ total: 4.0601346645
1761
1816
  }
1762
1817
  },
1763
1818
  visual: {
1764
1819
  raw: {
1765
1820
  covered: 0,
1766
1821
  ratio: 0,
1767
- total: 168
1822
+ total: 174
1768
1823
  },
1769
1824
  weighted: {
1770
1825
  covered: 0,
1771
1826
  ratio: 0,
1772
- total: 3.15985663082
1827
+ total: 3.46575342466
1773
1828
  }
1774
1829
  }
1775
1830
  }
@@ -2436,7 +2491,55 @@ var init_capability_outcomes2 = __esm({
2436
2491
  "@react-native-community/datetimepicker": {
2437
2492
  exactTestedVersion: "9.1.0",
2438
2493
  supportedVersionRange: ">=9.1.0 <10.0.0",
2439
- lastMeasured: null,
2494
+ lastMeasured: {
2495
+ byWeighting: {
2496
+ strict: {
2497
+ android: {
2498
+ passedWeight: 0,
2499
+ failedWeight: 0,
2500
+ unassessedWeight: 2,
2501
+ totalWeight: 2,
2502
+ assessedWeight: 0,
2503
+ compatibility: null,
2504
+ assessed: 0
2505
+ },
2506
+ ios: {
2507
+ passedWeight: 0,
2508
+ failedWeight: 0,
2509
+ unassessedWeight: 2,
2510
+ totalWeight: 2,
2511
+ assessedWeight: 0,
2512
+ compatibility: null,
2513
+ assessed: 0
2514
+ }
2515
+ },
2516
+ usage: {
2517
+ android: {
2518
+ passedWeight: 0,
2519
+ failedWeight: 0,
2520
+ unassessedWeight: 0,
2521
+ totalWeight: 0,
2522
+ assessedWeight: 0,
2523
+ compatibility: null,
2524
+ assessed: 0
2525
+ },
2526
+ ios: {
2527
+ passedWeight: 0,
2528
+ failedWeight: 0,
2529
+ unassessedWeight: 0,
2530
+ totalWeight: 0,
2531
+ assessedWeight: 0,
2532
+ compatibility: null,
2533
+ assessed: 0
2534
+ }
2535
+ }
2536
+ },
2537
+ capturedAt: "2026-09-08T06:23:04.817Z",
2538
+ receipts: [
2539
+ "retained-essentials-react-native-community-datetimepicker-r22458-20260908"
2540
+ ],
2541
+ sourceCommit: "ea3eb82eeea6f6925ae708b7028cb577ad37f36a"
2542
+ },
2440
2543
  unmatchedReferenceCount: 0,
2441
2544
  byPlatform: {
2442
2545
  android: {
@@ -2572,7 +2675,55 @@ var init_capability_outcomes2 = __esm({
2572
2675
  "@react-native-masked-view/masked-view": {
2573
2676
  exactTestedVersion: "0.3.2",
2574
2677
  supportedVersionRange: ">=0.2.0",
2575
- lastMeasured: null,
2678
+ lastMeasured: {
2679
+ byWeighting: {
2680
+ strict: {
2681
+ android: {
2682
+ passedWeight: 0,
2683
+ failedWeight: 0,
2684
+ unassessedWeight: 1,
2685
+ totalWeight: 1,
2686
+ assessedWeight: 0,
2687
+ compatibility: null,
2688
+ assessed: 0
2689
+ },
2690
+ ios: {
2691
+ passedWeight: 0,
2692
+ failedWeight: 0,
2693
+ unassessedWeight: 1,
2694
+ totalWeight: 1,
2695
+ assessedWeight: 0,
2696
+ compatibility: null,
2697
+ assessed: 0
2698
+ }
2699
+ },
2700
+ usage: {
2701
+ android: {
2702
+ passedWeight: 0,
2703
+ failedWeight: 0,
2704
+ unassessedWeight: 134,
2705
+ totalWeight: 134,
2706
+ assessedWeight: 0,
2707
+ compatibility: null,
2708
+ assessed: 0
2709
+ },
2710
+ ios: {
2711
+ passedWeight: 0,
2712
+ failedWeight: 0,
2713
+ unassessedWeight: 134,
2714
+ totalWeight: 134,
2715
+ assessedWeight: 0,
2716
+ compatibility: null,
2717
+ assessed: 0
2718
+ }
2719
+ }
2720
+ },
2721
+ capturedAt: "2026-09-08T06:19:22.590Z",
2722
+ receipts: [
2723
+ "retained-essentials-react-native-masked-view-masked-view-r22458-20260908"
2724
+ ],
2725
+ sourceCommit: "ea3eb82eeea6f6925ae708b7028cb577ad37f36a"
2726
+ },
2576
2727
  unmatchedReferenceCount: 95,
2577
2728
  byPlatform: {
2578
2729
  android: {
@@ -2708,7 +2859,53 @@ var init_capability_outcomes2 = __esm({
2708
2859
  "react-native": {
2709
2860
  exactTestedVersion: "0.86.2",
2710
2861
  supportedVersionRange: "0.86.x",
2711
- lastMeasured: null,
2862
+ lastMeasured: {
2863
+ byWeighting: {
2864
+ strict: {
2865
+ android: {
2866
+ passedWeight: 0,
2867
+ failedWeight: 0,
2868
+ unassessedWeight: 1196,
2869
+ totalWeight: 1196,
2870
+ assessedWeight: 0,
2871
+ compatibility: null,
2872
+ assessed: 0
2873
+ },
2874
+ ios: {
2875
+ passedWeight: 180,
2876
+ failedWeight: 0,
2877
+ unassessedWeight: 1025,
2878
+ totalWeight: 1205,
2879
+ assessedWeight: 180,
2880
+ compatibility: 1,
2881
+ assessed: 0.14937759336099585
2882
+ }
2883
+ },
2884
+ usage: {
2885
+ android: {
2886
+ passedWeight: 0,
2887
+ failedWeight: 0,
2888
+ unassessedWeight: 32399,
2889
+ totalWeight: 32399,
2890
+ assessedWeight: 0,
2891
+ compatibility: null,
2892
+ assessed: 0
2893
+ },
2894
+ ios: {
2895
+ passedWeight: 8422,
2896
+ failedWeight: 0,
2897
+ unassessedWeight: 24028,
2898
+ totalWeight: 32450,
2899
+ assessedWeight: 8422,
2900
+ compatibility: 1,
2901
+ assessed: 0.259537750385208
2902
+ }
2903
+ }
2904
+ },
2905
+ capturedAt: "2026-09-08T13:03:18.937Z",
2906
+ receipts: ["core-paired-capture.2026-09-08T13:03:18.937Z.json"],
2907
+ sourceCommit: "85cd28ced01db6f009d412d8208f365ababa43b8"
2908
+ },
2712
2909
  unmatchedReferenceCount: 7112,
2713
2910
  byPlatform: {
2714
2911
  android: {
@@ -2721,13 +2918,13 @@ var init_capability_outcomes2 = __esm({
2721
2918
  assessed: 0
2722
2919
  },
2723
2920
  ios: {
2724
- passedWeight: 8422,
2921
+ passedWeight: 0,
2725
2922
  failedWeight: 0,
2726
- unassessedWeight: 24028,
2923
+ unassessedWeight: 32450,
2727
2924
  totalWeight: 32450,
2728
- assessedWeight: 8422,
2729
- compatibility: 1,
2730
- assessed: 0.259537750385208
2925
+ assessedWeight: 0,
2926
+ compatibility: null,
2927
+ assessed: 0
2731
2928
  }
2732
2929
  },
2733
2930
  byWeighting: {
@@ -2742,13 +2939,13 @@ var init_capability_outcomes2 = __esm({
2742
2939
  assessed: 0
2743
2940
  },
2744
2941
  ios: {
2745
- passedWeight: 181,
2942
+ passedWeight: 0,
2746
2943
  failedWeight: 0,
2747
- unassessedWeight: 1024,
2944
+ unassessedWeight: 1205,
2748
2945
  totalWeight: 1205,
2749
- assessedWeight: 181,
2750
- compatibility: 1,
2751
- assessed: 0.15020746887966804
2946
+ assessedWeight: 0,
2947
+ compatibility: null,
2948
+ assessed: 0
2752
2949
  }
2753
2950
  },
2754
2951
  usage: {
@@ -2762,13 +2959,13 @@ var init_capability_outcomes2 = __esm({
2762
2959
  assessed: 0
2763
2960
  },
2764
2961
  ios: {
2765
- passedWeight: 8422,
2962
+ passedWeight: 0,
2766
2963
  failedWeight: 0,
2767
- unassessedWeight: 24028,
2964
+ unassessedWeight: 32450,
2768
2965
  totalWeight: 32450,
2769
- assessedWeight: 8422,
2770
- compatibility: 1,
2771
- assessed: 0.259537750385208
2966
+ assessedWeight: 0,
2967
+ compatibility: null,
2968
+ assessed: 0
2772
2969
  }
2773
2970
  }
2774
2971
  }
@@ -2776,7 +2973,53 @@ var init_capability_outcomes2 = __esm({
2776
2973
  "react-native-gesture-handler": {
2777
2974
  exactTestedVersion: "2.32.0",
2778
2975
  supportedVersionRange: ">=2.30.0",
2779
- lastMeasured: null,
2976
+ lastMeasured: {
2977
+ byWeighting: {
2978
+ strict: {
2979
+ android: {
2980
+ passedWeight: 0,
2981
+ failedWeight: 0,
2982
+ unassessedWeight: 49,
2983
+ totalWeight: 49,
2984
+ assessedWeight: 0,
2985
+ compatibility: null,
2986
+ assessed: 0
2987
+ },
2988
+ ios: {
2989
+ passedWeight: 9,
2990
+ failedWeight: 0,
2991
+ unassessedWeight: 40,
2992
+ totalWeight: 49,
2993
+ assessedWeight: 9,
2994
+ compatibility: 1,
2995
+ assessed: 0.1836734693877551
2996
+ }
2997
+ },
2998
+ usage: {
2999
+ android: {
3000
+ passedWeight: 0,
3001
+ failedWeight: 0,
3002
+ unassessedWeight: 776,
3003
+ totalWeight: 776,
3004
+ assessedWeight: 0,
3005
+ compatibility: null,
3006
+ assessed: 0
3007
+ },
3008
+ ios: {
3009
+ passedWeight: 7,
3010
+ failedWeight: 0,
3011
+ unassessedWeight: 769,
3012
+ totalWeight: 776,
3013
+ assessedWeight: 7,
3014
+ compatibility: 1,
3015
+ assessed: 0.00902061855670103
3016
+ }
3017
+ }
3018
+ },
3019
+ capturedAt: "2026-09-08T05:52:45.303Z",
3020
+ receipts: ["retained-essentials-react-native-gesture-handler-r22458-20260908"],
3021
+ sourceCommit: "ea3eb82eeea6f6925ae708b7028cb577ad37f36a"
3022
+ },
2780
3023
  unmatchedReferenceCount: 528,
2781
3024
  byPlatform: {
2782
3025
  android: {
@@ -2912,7 +3155,53 @@ var init_capability_outcomes2 = __esm({
2912
3155
  "react-native-keyboard-controller": {
2913
3156
  exactTestedVersion: "1.21.11",
2914
3157
  supportedVersionRange: ">=1.0.0",
2915
- lastMeasured: null,
3158
+ lastMeasured: {
3159
+ byWeighting: {
3160
+ strict: {
3161
+ android: {
3162
+ passedWeight: 0,
3163
+ failedWeight: 0,
3164
+ unassessedWeight: 38,
3165
+ totalWeight: 38,
3166
+ assessedWeight: 0,
3167
+ compatibility: null,
3168
+ assessed: 0
3169
+ },
3170
+ ios: {
3171
+ passedWeight: 2,
3172
+ failedWeight: 0,
3173
+ unassessedWeight: 36,
3174
+ totalWeight: 38,
3175
+ assessedWeight: 2,
3176
+ compatibility: 1,
3177
+ assessed: 0.05263157894736842
3178
+ }
3179
+ },
3180
+ usage: {
3181
+ android: {
3182
+ passedWeight: 0,
3183
+ failedWeight: 0,
3184
+ unassessedWeight: 287,
3185
+ totalWeight: 287,
3186
+ assessedWeight: 0,
3187
+ compatibility: null,
3188
+ assessed: 0
3189
+ },
3190
+ ios: {
3191
+ passedWeight: 38,
3192
+ failedWeight: 0,
3193
+ unassessedWeight: 249,
3194
+ totalWeight: 287,
3195
+ assessedWeight: 38,
3196
+ compatibility: 1,
3197
+ assessed: 0.13240418118466898
3198
+ }
3199
+ }
3200
+ },
3201
+ capturedAt: "2026-09-08T06:27:13.215Z",
3202
+ receipts: ["retained-essentials-react-native-keyboard-controller-r22458-20260908"],
3203
+ sourceCommit: "ea3eb82eeea6f6925ae708b7028cb577ad37f36a"
3204
+ },
2916
3205
  unmatchedReferenceCount: 165,
2917
3206
  byPlatform: {
2918
3207
  android: {
@@ -2980,8 +3269,57 @@ var init_capability_outcomes2 = __esm({
2980
3269
  "react-native-reanimated": {
2981
3270
  exactTestedVersion: "4.5.1",
2982
3271
  supportedVersionRange: ">=4.0.0",
2983
- lastMeasured: null,
2984
- unmatchedReferenceCount: 2107,
3272
+ lastMeasured: {
3273
+ byWeighting: {
3274
+ strict: {
3275
+ android: {
3276
+ passedWeight: 0,
3277
+ failedWeight: 0,
3278
+ unassessedWeight: 195,
3279
+ totalWeight: 195,
3280
+ assessedWeight: 0,
3281
+ compatibility: null,
3282
+ assessed: 0
3283
+ },
3284
+ ios: {
3285
+ passedWeight: 37,
3286
+ failedWeight: 0,
3287
+ unassessedWeight: 158,
3288
+ totalWeight: 195,
3289
+ assessedWeight: 37,
3290
+ compatibility: 1,
3291
+ assessed: 0.18974358974358974
3292
+ }
3293
+ },
3294
+ usage: {
3295
+ android: {
3296
+ passedWeight: 0,
3297
+ failedWeight: 0,
3298
+ unassessedWeight: 4897,
3299
+ totalWeight: 4897,
3300
+ assessedWeight: 0,
3301
+ compatibility: null,
3302
+ assessed: 0
3303
+ },
3304
+ ios: {
3305
+ passedWeight: 4033,
3306
+ failedWeight: 0,
3307
+ unassessedWeight: 864,
3308
+ totalWeight: 4897,
3309
+ assessedWeight: 4033,
3310
+ compatibility: 1,
3311
+ assessed: 0.8235654482336124
3312
+ }
3313
+ }
3314
+ },
3315
+ capturedAt: "2026-09-08T05:31:52.723Z",
3316
+ receipts: [
3317
+ "retained-essentials-react-native-reanimated-r22458-20260908",
3318
+ "reanimated-view-8421c1a-r22458"
3319
+ ],
3320
+ sourceCommit: "ea3eb82eeea6f6925ae708b7028cb577ad37f36a"
3321
+ },
3322
+ unmatchedReferenceCount: 590,
2985
3323
  byPlatform: {
2986
3324
  android: {
2987
3325
  passedWeight: 0,
@@ -3007,8 +3345,8 @@ var init_capability_outcomes2 = __esm({
3007
3345
  android: {
3008
3346
  passedWeight: 0,
3009
3347
  failedWeight: 0,
3010
- unassessedWeight: 188,
3011
- totalWeight: 188,
3348
+ unassessedWeight: 195,
3349
+ totalWeight: 195,
3012
3350
  assessedWeight: 0,
3013
3351
  compatibility: null,
3014
3352
  assessed: 0
@@ -3016,8 +3354,8 @@ var init_capability_outcomes2 = __esm({
3016
3354
  ios: {
3017
3355
  passedWeight: 0,
3018
3356
  failedWeight: 0,
3019
- unassessedWeight: 188,
3020
- totalWeight: 188,
3357
+ unassessedWeight: 195,
3358
+ totalWeight: 195,
3021
3359
  assessedWeight: 0,
3022
3360
  compatibility: null,
3023
3361
  assessed: 0
@@ -3116,7 +3454,53 @@ var init_capability_outcomes2 = __esm({
3116
3454
  "react-native-screens": {
3117
3455
  exactTestedVersion: "4.26.2",
3118
3456
  supportedVersionRange: ">=4.0.0",
3119
- lastMeasured: null,
3457
+ lastMeasured: {
3458
+ byWeighting: {
3459
+ strict: {
3460
+ android: {
3461
+ passedWeight: 0,
3462
+ failedWeight: 0,
3463
+ unassessedWeight: 32,
3464
+ totalWeight: 32,
3465
+ assessedWeight: 0,
3466
+ compatibility: null,
3467
+ assessed: 0
3468
+ },
3469
+ ios: {
3470
+ passedWeight: 3,
3471
+ failedWeight: 0,
3472
+ unassessedWeight: 29,
3473
+ totalWeight: 32,
3474
+ assessedWeight: 3,
3475
+ compatibility: 1,
3476
+ assessed: 0.09375
3477
+ }
3478
+ },
3479
+ usage: {
3480
+ android: {
3481
+ passedWeight: 0,
3482
+ failedWeight: 0,
3483
+ unassessedWeight: 6,
3484
+ totalWeight: 6,
3485
+ assessedWeight: 0,
3486
+ compatibility: null,
3487
+ assessed: 0
3488
+ },
3489
+ ios: {
3490
+ passedWeight: 4,
3491
+ failedWeight: 0,
3492
+ unassessedWeight: 2,
3493
+ totalWeight: 6,
3494
+ assessedWeight: 4,
3495
+ compatibility: 1,
3496
+ assessed: 0.6666666666666666
3497
+ }
3498
+ }
3499
+ },
3500
+ capturedAt: "2026-09-08T06:14:31.559Z",
3501
+ receipts: ["retained-essentials-react-native-screens-r22458-20260908"],
3502
+ sourceCommit: "ea3eb82eeea6f6925ae708b7028cb577ad37f36a"
3503
+ },
3120
3504
  unmatchedReferenceCount: 0,
3121
3505
  byPlatform: {
3122
3506
  android: {
@@ -3184,7 +3568,53 @@ var init_capability_outcomes2 = __esm({
3184
3568
  "react-native-svg": {
3185
3569
  exactTestedVersion: "15.15.4",
3186
3570
  supportedVersionRange: ">=13.0.0",
3187
- lastMeasured: null,
3571
+ lastMeasured: {
3572
+ byWeighting: {
3573
+ strict: {
3574
+ android: {
3575
+ passedWeight: 0,
3576
+ failedWeight: 0,
3577
+ unassessedWeight: 115,
3578
+ totalWeight: 115,
3579
+ assessedWeight: 0,
3580
+ compatibility: null,
3581
+ assessed: 0
3582
+ },
3583
+ ios: {
3584
+ passedWeight: 0,
3585
+ failedWeight: 0,
3586
+ unassessedWeight: 115,
3587
+ totalWeight: 115,
3588
+ assessedWeight: 0,
3589
+ compatibility: null,
3590
+ assessed: 0
3591
+ }
3592
+ },
3593
+ usage: {
3594
+ android: {
3595
+ passedWeight: 0,
3596
+ failedWeight: 0,
3597
+ unassessedWeight: 5540,
3598
+ totalWeight: 5540,
3599
+ assessedWeight: 0,
3600
+ compatibility: null,
3601
+ assessed: 0
3602
+ },
3603
+ ios: {
3604
+ passedWeight: 0,
3605
+ failedWeight: 0,
3606
+ unassessedWeight: 5540,
3607
+ totalWeight: 5540,
3608
+ assessedWeight: 0,
3609
+ compatibility: null,
3610
+ assessed: 0
3611
+ }
3612
+ }
3613
+ },
3614
+ capturedAt: "2026-09-08T05:40:18.932Z",
3615
+ receipts: ["retained-essentials-react-native-svg-r22458-20260908"],
3616
+ sourceCommit: "ea3eb82eeea6f6925ae708b7028cb577ad37f36a"
3617
+ },
3188
3618
  unmatchedReferenceCount: 4459,
3189
3619
  byPlatform: {
3190
3620
  android: {
@@ -3390,21 +3820,19 @@ var init_capability_outcomes2 = __esm({
3390
3820
  });
3391
3821
 
3392
3822
  // ../compat/src/generated/react-native-root-export-coverage.ts
3393
- var REACT_NATIVE_ROOT_EXPORT_WILL_IT_WORK_COVERAGE, REACT_NATIVE_ROOT_EXPORT_STRICT_COVERAGE;
3823
+ var REACT_NATIVE_ROOT_EXPORT_STRICT_COVERAGE;
3394
3824
  var init_react_native_root_export_coverage = __esm({
3395
3825
  "../compat/src/generated/react-native-root-export-coverage.ts"() {
3396
3826
  "use strict";
3397
- REACT_NATIVE_ROOT_EXPORT_WILL_IT_WORK_COVERAGE = 0.99;
3398
3827
  REACT_NATIVE_ROOT_EXPORT_STRICT_COVERAGE = 0.765;
3399
3828
  }
3400
3829
  });
3401
3830
 
3402
3831
  // ../compat/src/generated/react-native-webview-coverage.ts
3403
- var REACT_NATIVE_WEBVIEW_WILL_IT_WORK_COVERAGE, REACT_NATIVE_WEBVIEW_STRICT_COVERAGE;
3832
+ var REACT_NATIVE_WEBVIEW_STRICT_COVERAGE;
3404
3833
  var init_react_native_webview_coverage = __esm({
3405
3834
  "../compat/src/generated/react-native-webview-coverage.ts"() {
3406
3835
  "use strict";
3407
- REACT_NATIVE_WEBVIEW_WILL_IT_WORK_COVERAGE = 0.74;
3408
3836
  REACT_NATIVE_WEBVIEW_STRICT_COVERAGE = 0.223;
3409
3837
  }
3410
3838
  });
@@ -3467,8 +3895,6 @@ var init_supported_native_packages = __esm({
3467
3895
  // coverage
3468
3896
  "@react-native-community/masked-view",
3469
3897
  // coverage
3470
- "@react-native-community/netinfo",
3471
- // coverage
3472
3898
  "@react-native-community/slider",
3473
3899
  // coverage
3474
3900
  "@react-native-documents/picker",
@@ -3744,7 +4170,7 @@ var init_supported_native_packages = __esm({
3744
4170
  "react-native-key-command",
3745
4171
  // coverage
3746
4172
  "react-native-keyboard-controller",
3747
- // preset+visual-proof
4173
+ // preset+visual-proof+coverage
3748
4174
  "react-native-keychain",
3749
4175
  // coverage
3750
4176
  "react-native-keys",
@@ -3924,10 +4350,11 @@ function scoredCoverage(packageName, estimate) {
3924
4350
  outcomes
3925
4351
  };
3926
4352
  }
3927
- var COMPAT_CATEGORIES, POLYFILL_REGISTRY;
4353
+ var COMPAT_CATEGORIES, POLYFILL_REGISTRY_INPUT, POLYFILL_REGISTRY;
3928
4354
  var init_registry = __esm({
3929
4355
  "../compat/src/registry.ts"() {
3930
4356
  "use strict";
4357
+ init_capability_outcomes();
3931
4358
  init_capability_inventory_coverage();
3932
4359
  init_capability_outcomes2();
3933
4360
  init_react_native_root_export_coverage();
@@ -3956,7 +4383,7 @@ var init_registry = __esm({
3956
4383
  "Analytics",
3957
4384
  "Internationalization"
3958
4385
  ];
3959
- POLYFILL_REGISTRY = {
4386
+ POLYFILL_REGISTRY_INPUT = {
3960
4387
  "react-native": {
3961
4388
  category: "Essentials",
3962
4389
  stubType: "native",
@@ -3966,7 +4393,108 @@ var init_registry = __esm({
3966
4393
  range: ">=0.86.0 <0.87.0",
3967
4394
  // outcomes measure declared scenarios; strictCoverage remains an
3968
4395
  // independent equal-export implementation estimate.
3969
- ...scoredCoverage("react-native", REACT_NATIVE_ROOT_EXPORT_WILL_IT_WORK_COVERAGE),
4396
+ ...scoredCoverage("react-native"),
4397
+ // initial iOS desk assessment; ratings are judgments, not measured corpus counts.
4398
+ features: [
4399
+ {
4400
+ id: "layout",
4401
+ usage: 3,
4402
+ importance: 3,
4403
+ estimate: 0.99,
4404
+ rationale: "Broad layout support; allow for fine geometry and shared styling differences."
4405
+ },
4406
+ {
4407
+ id: "text",
4408
+ usage: 3,
4409
+ importance: 3,
4410
+ estimate: 0.98,
4411
+ rationale: "Text shaping and wrapping work; uncommon typography and layout details remain estimated."
4412
+ },
4413
+ {
4414
+ id: "text-input",
4415
+ usage: 3,
4416
+ importance: 3,
4417
+ estimate: 0.98,
4418
+ rationale: "Ordinary editing and focus work; advanced selection, composition and autofill remain estimated."
4419
+ },
4420
+ {
4421
+ id: "scroll",
4422
+ usage: 3,
4423
+ importance: 3,
4424
+ estimate: 0.98,
4425
+ rationale: "Ordinary scrolling works; automatic insets and nested-scroll edges remain estimated."
4426
+ },
4427
+ {
4428
+ id: "lists",
4429
+ usage: 3,
4430
+ importance: 3,
4431
+ estimate: 0.99,
4432
+ rationale: "Windowed lists and list variants work; uncommon visibility and mutation sequences remain estimated."
4433
+ },
4434
+ {
4435
+ id: "press",
4436
+ usage: 3,
4437
+ importance: 3,
4438
+ estimate: 0.99,
4439
+ rationale: "Press and responder routing work; uncommon nested interaction sequences remain estimated."
4440
+ },
4441
+ {
4442
+ id: "images",
4443
+ usage: 3,
4444
+ importance: 2,
4445
+ estimate: 0.99,
4446
+ rationale: "Image loading and resize modes work; uncommon source and paint details remain estimated."
4447
+ },
4448
+ {
4449
+ id: "animation",
4450
+ usage: 2,
4451
+ importance: 3,
4452
+ estimate: 0.97,
4453
+ rationale: "Common animation graphs work; interruption and layout-animation edges remain estimated."
4454
+ },
4455
+ {
4456
+ id: "controls",
4457
+ usage: 2,
4458
+ importance: 3,
4459
+ estimate: 0.98,
4460
+ rationale: "Modals, alerts and controls work; uncommon native presentation details remain estimated."
4461
+ },
4462
+ {
4463
+ id: "keyboard",
4464
+ usage: 2,
4465
+ importance: 3,
4466
+ estimate: 0.97,
4467
+ rationale: "Keyboard presentation and avoidance work; accessory and inset edge behavior remain estimated."
4468
+ },
4469
+ {
4470
+ id: "environment",
4471
+ usage: 2,
4472
+ importance: 2,
4473
+ estimate: 0.99,
4474
+ rationale: "Platform, dimensions and appearance work; uncommon lifecycle transitions remain estimated."
4475
+ },
4476
+ {
4477
+ id: "accessibility",
4478
+ usage: 1,
4479
+ importance: 2,
4480
+ estimate: 0.85,
4481
+ rationale: "Focus and announcements have implementations; several accessibility preferences return fixed values."
4482
+ },
4483
+ {
4484
+ id: "system",
4485
+ usage: 1,
4486
+ importance: 2,
4487
+ estimate: 0.9,
4488
+ rationale: "Small system APIs depend on browser facilities; physical device behavior is not universally available."
4489
+ },
4490
+ {
4491
+ id: "native-integration",
4492
+ usage: 1,
4493
+ importance: 2,
4494
+ estimate: 0.95,
4495
+ rationale: "Core module lookup works; arbitrary app-specific native modules and uncommon system methods remain outside the implemented surface."
4496
+ }
4497
+ ],
3970
4498
  strictCoverage: REACT_NATIVE_ROOT_EXPORT_STRICT_COVERAGE,
3971
4499
  capabilityCoverage: CAPABILITY_INVENTORY_PACKAGE_COVERAGE["react-native"],
3972
4500
  note: "React Native 0.86 root surface with useful core rendering, input, scrolling, animation, list, platform, and native-module behavior",
@@ -3988,7 +4516,51 @@ var init_registry = __esm({
3988
4516
  },
3989
4517
  {
3990
4518
  range: ">=4.0.0 <5.0.0",
3991
- ...scoredCoverage("react-native-reanimated", 0.97),
4519
+ ...scoredCoverage("react-native-reanimated"),
4520
+ features: [
4521
+ {
4522
+ id: "animation-primitives",
4523
+ usage: 3,
4524
+ importance: 3,
4525
+ estimate: 1,
4526
+ rationale: "Shared values, timing, spring, decay, sequencing, repetition, interpolation, and easing drive the common animation workflow. The installed upstream JavaScript runs against the SootSim worklet seam, and no app-facing primitive is missing in the inspected path."
4527
+ },
4528
+ {
4529
+ id: "animated-components-and-props",
4530
+ usage: 3,
4531
+ importance: 3,
4532
+ estimate: 1,
4533
+ rationale: "Animated View, Text, Image, ScrollView, FlatList, animated styles, animated props, and animated refs cover the primary rendered workflow. The React 19.2.3 bridge receives refs as ordinary props and the adapter preserves them, with no observed app-facing wrapper gap."
4534
+ },
4535
+ {
4536
+ id: "scroll-and-event-workflows",
4537
+ usage: 3,
4538
+ importance: 3,
4539
+ estimate: 1,
4540
+ rationale: "Scroll handlers, offsets, frame callbacks, scheduling, gesture state, scrollTo and measure use the implemented engine paths. No separate scheduling defect is established."
4541
+ },
4542
+ {
4543
+ id: "layout-transitions",
4544
+ usage: 2,
4545
+ importance: 3,
4546
+ estimate: 1,
4547
+ rationale: "Upstream layout builders and the engine layout owner implement entering, exiting and layout transitions."
4548
+ },
4549
+ {
4550
+ id: "css-animations",
4551
+ usage: 1,
4552
+ importance: 2,
4553
+ estimate: 0.8,
4554
+ rationale: "Common opacity, transform and processed-color CSS animations work. The 20% allowance estimates the remaining layout, border metrics, shadows, filters and complex-value animation workflows."
4555
+ },
4556
+ {
4557
+ id: "device-and-native-integration",
4558
+ usage: 1,
4559
+ importance: 2,
4560
+ estimate: 1,
4561
+ rationale: "Native property reads and writes, commands, reduced motion, keyboard frames and sensor registration use engine paths; unavailable physical facilities follow the browser-hosted contract."
4562
+ }
4563
+ ],
3992
4564
  capabilityCoverage: CAPABILITY_INVENTORY_PACKAGE_COVERAGE["react-native-reanimated"],
3993
4565
  note: "core animations, gestures, scroll, layout transitions, common CSS opacity, transform, and processed-color transitions and keyframes, keyboard, sensors, reduced motion, native view property reads, and direct static style snapshots",
3994
4566
  working: "useSharedValue, useAnimatedStyle/Props/Reaction, useDerivedValue, useAnimatedScrollHandler, useScrollViewOffset, useFrameCallback, useAnimatedRef, useAnimatedKeyboard, useAnimatedSensor, useReducedMotion, entering/exiting/layout transitions, css/createCSSAnimatedComponent with cubicBezier/linear/steps timing for common opacity and transform transitions, opacity and transform keyframes with retained forwards fill, withTiming/Spring/Decay/Delay/Sequence/Repeat/Clamp, interpolate, interpolateColor, runOnJS/UI, measure, scrollTo, getViewProp (layout, opacity, zIndex, backgroundColor, boxShadow), direct setViewStyle snapshots, Easing, createAnimatedComponent, Animated.View/Text/Image/ScrollView/FlatList",
@@ -4004,7 +4576,37 @@ var init_registry = __esm({
4004
4576
  { range: ">=2.0.0 <2.30.0", coverage: 0.7, note: "tap, pan, long press" },
4005
4577
  {
4006
4578
  range: ">=2.30.0 <3.0.0",
4007
- ...scoredCoverage("react-native-gesture-handler", 0.9),
4579
+ ...scoredCoverage("react-native-gesture-handler"),
4580
+ features: [
4581
+ {
4582
+ id: "gesture-recognition-and-composition",
4583
+ usage: 3,
4584
+ importance: 3,
4585
+ estimate: 1,
4586
+ rationale: "GestureDetector, gesture factories, discrete and continuous recognizers, and composed relationships use the recognition seam. ForceTouch reports unavailable hardware, as expected in the simulator."
4587
+ },
4588
+ {
4589
+ id: "native-wrappers-and-touchables",
4590
+ usage: 3,
4591
+ importance: 2,
4592
+ estimate: 1,
4593
+ rationale: "ScrollView, FlatList, Switch, Pressable, TextInput, RefreshControl, Text, and touchable/button wrappers preserve normal React Native controls while attaching gesture behavior where requested. The inspected wrapper path has no app-facing behavior gap."
4594
+ },
4595
+ {
4596
+ id: "root-and-native-interop",
4597
+ usage: 2,
4598
+ importance: 2,
4599
+ estimate: 1,
4600
+ rationale: "GestureHandlerRootView, root HOC, native wrappers, refs, and the registered recognition seam make the package usable inside ordinary app trees. The inspected root and registration path has no app-facing behavior gap."
4601
+ },
4602
+ {
4603
+ id: "drawers-and-swipeables",
4604
+ usage: 1,
4605
+ importance: 2,
4606
+ estimate: 1,
4607
+ rationale: "Swipeable, ReanimatedSwipeable and the upstream DrawerLayout use the implemented gesture and drawer paths for drag, open, close and lifecycle callbacks."
4608
+ }
4609
+ ],
4008
4610
  capabilityCoverage: CAPABILITY_INVENTORY_PACKAGE_COVERAGE["react-native-gesture-handler"],
4009
4611
  note: "tap, pan, pinch, rotation, fling, long press, race, manual, simultaneous, force touch unavailable-hardware parity",
4010
4612
  working: "GestureDetector, Gesture.Tap/Pan/Pinch/Rotation/Fling/LongPress/ForceTouch/Manual/Race/Simultaneous/Exclusive/Hover, ForceTouchGestureHandler unavailable-hardware fallback (children render, forceTouchAvailable false, no force events), simultaneousWithExternalGesture/requireExternalGestureToFail/blocksExternalGesture, ScrollView/FlatList, Switch/RefreshControl, Pressable/Text, Touchables, BaseButton/RawButton/RectButton/BorderlessButton/PureNativeButton, Swipeable, ReanimatedSwipeable, DrawerLayout (the upstream component running on this seam: renderNavigationView, drawerPosition/drawerType/drawerWidth/edgeWidth, openDrawer/closeDrawer, edge-swipe drag, onDrawerOpen/onDrawerClose/onDrawerStateChanged), GestureHandlerRootView, createNativeWrapper, gestureHandlerRootHOC, PointerType/MouseButton/HoverEffect exports, velocity tracking, activeOffsets, multi-tap"
@@ -4019,7 +4621,44 @@ var init_registry = __esm({
4019
4621
  { range: ">=3.0.0 <4.0.0", coverage: 0.6, note: "basic screen container" },
4020
4622
  {
4021
4623
  range: ">=4.0.0",
4022
- ...scoredCoverage("react-native-screens", 0.95),
4624
+ ...scoredCoverage("react-native-screens"),
4625
+ features: [
4626
+ {
4627
+ id: "screen-containers-and-lifecycle",
4628
+ usage: 3,
4629
+ importance: 3,
4630
+ estimate: 1,
4631
+ rationale: "Screen, ScreenContainer, ScreenStack, ScreenStackItem, activity state, lifecycle callbacks, and enableScreens cover the primary navigation container workflow. The inspected container and lifecycle path has no app-facing behavior gap."
4632
+ },
4633
+ {
4634
+ id: "stack-presentations-and-transitions",
4635
+ usage: 3,
4636
+ importance: 3,
4637
+ estimate: 1,
4638
+ rationale: "Push, modal, transparent, page-sheet, form-sheet, replace, fade, zoom, slide, parallax, and interactive edge-swipe transitions determine the visible navigation workflow. The inspected stack transition path has no app-facing behavior gap outside the separate detent interaction feature."
4639
+ },
4640
+ {
4641
+ id: "headers-and-search",
4642
+ usage: 2,
4643
+ importance: 2,
4644
+ estimate: 1,
4645
+ rationale: "Header configuration, native buttons and menus, back and title presentation, custom subviews, search bars, large-title collapse, and iOS toolbar search placements cover common stack chrome. The inspected header and search path has no app-facing behavior gap."
4646
+ },
4647
+ {
4648
+ id: "sheets-and-modal-geometry",
4649
+ usage: 2,
4650
+ importance: 2,
4651
+ estimate: 0.75,
4652
+ rationale: "Initial detents, sheet geometry, corner radius, grabber, undimmed range and dismissal work. Interactive movement between form-sheet detents is absent, estimated as 25% of this sheet workflow."
4653
+ },
4654
+ {
4655
+ id: "tabs-freeze-and-overlay",
4656
+ usage: 1,
4657
+ importance: 1,
4658
+ estimate: 1,
4659
+ rationale: "Tabs.Host and Tabs.Screen, FullWindowOverlay, transition progress, and opt-in React freeze behavior remain available. The inspected tab, overlay, and freeze path has no app-facing behavior gap."
4660
+ }
4661
+ ],
4023
4662
  capabilityCoverage: CAPABILITY_INVENTORY_PACKAGE_COVERAGE["react-native-screens"],
4024
4663
  note: "screen container, stack, header config, search bar, navigation props",
4025
4664
  working: "Screen, ScreenContainer, ScreenStack, enableFreeze/freezeEnabled with delayed React freeze, Android modal/pageSheet push fallback, Android statusBarHidden/statusBarStyle/navigationBarHidden traits, push/pop slide, replaceAnimation push/pop direction, zoom/fade/fade_from_bottom transitions, edge swipe-back, parallax behind-screen, large title collapse, header (back button, inline/large title, custom left/center/right/search bar subviews, native header bar buttons/menus/badges, crossfade), formSheet custom initial detents/corner radius/grabber/undimmed range and stacked sheets, useHeaderHeight, useTransitionProgress, FullWindowOverlay, SearchBar with stacked and iOS 26 automatic/inline/integrated/integratedCentered/integratedButton toolbar placement, Tabs.Host/Screen, lifecycle callbacks (onAppear/onDisappear/onWillAppear/onWillDisappear), onDismissed",
@@ -4034,11 +4673,41 @@ var init_registry = __esm({
4034
4673
  versions: [
4035
4674
  {
4036
4675
  range: ">=4.0.0",
4037
- ...scoredCoverage("react-native-safe-area-context", 0.95),
4676
+ ...scoredCoverage("react-native-safe-area-context"),
4677
+ features: [
4678
+ {
4679
+ id: "provider-and-window-metrics",
4680
+ usage: 3,
4681
+ importance: 3,
4682
+ estimate: 0.97,
4683
+ rationale: "SafeAreaProvider and initialWindowMetrics expose live frame and inset values from the device-spec and keyboard sources. The compatibility facade does not export the upstream initialWindowSafeAreaInsets value, so direct imports of that public constant do not receive the native package value."
4684
+ },
4685
+ {
4686
+ id: "edge-aware-layout",
4687
+ usage: 3,
4688
+ importance: 3,
4689
+ estimate: 1,
4690
+ rationale: "SafeAreaView applies additive, maximum, and off edge modes to padding or margin while preserving flattened caller styles. The inspected edge and style path has no app-facing behavior gap."
4691
+ },
4692
+ {
4693
+ id: "hooks-contexts-and-hoc",
4694
+ usage: 3,
4695
+ importance: 2,
4696
+ estimate: 1,
4697
+ rationale: "useSafeAreaInsets, useSafeAreaFrame, SafeAreaConsumer, SafeAreaContext, useSafeArea, and withSafeAreaInsets expose the provider values through the expected context and component APIs. The inspected hook and HOC path has no app-facing behavior gap under React 19.2.3 ref semantics."
4698
+ },
4699
+ {
4700
+ id: "listener-and-nested-provider",
4701
+ usage: 1,
4702
+ importance: 2,
4703
+ estimate: 1,
4704
+ rationale: "Nested providers retain parent values and SafeAreaListener subscribes to device, keyboard, bar, and soft-input changes. The inspected listener and nested-provider path has no app-facing behavior gap."
4705
+ }
4706
+ ],
4038
4707
  capabilityCoverage: CAPABILITY_INVENTORY_PACKAGE_COVERAGE["react-native-safe-area-context"],
4039
4708
  note: "live device/system-bar/ime metrics, edges/mode padding, hooks",
4040
4709
  working: "SafeAreaProvider with live Android system-bar and IME-resized frame metrics, SafeAreaView (edges/mode padding/margin), useSafeAreaInsets, useSafeAreaFrame, SafeAreaInsetsContext, SafeAreaFrameContext, initialWindowMetrics, SafeAreaListener onInsetsChange, withSafeAreaInsets HOC",
4041
- missing: "rotation-specific provider frame deltas"
4710
+ missing: "initialWindowSafeAreaInsets is not exported; rotation-specific provider frame deltas remain unassessed"
4042
4711
  }
4043
4712
  ]
4044
4713
  },
@@ -4049,11 +4718,55 @@ var init_registry = __esm({
4049
4718
  versions: [
4050
4719
  {
4051
4720
  range: ">=13.0.0",
4052
- ...scoredCoverage("react-native-svg", 0.85),
4721
+ ...scoredCoverage("react-native-svg"),
4722
+ features: [
4723
+ {
4724
+ id: "shapes-and-transforms",
4725
+ usage: 3,
4726
+ importance: 3,
4727
+ estimate: 1,
4728
+ rationale: "Svg, Path, Circle, Rect, Line, Ellipse, Polygon, Polyline, G, Use, and Symbol render through the upstream JavaScript elements and registered CanvasKit host aliases, with viewBox scaling and shape transforms. The inspected common shape path has no app-facing behavior gap."
4729
+ },
4730
+ {
4731
+ id: "fills-strokes-and-gradients",
4732
+ usage: 3,
4733
+ importance: 2,
4734
+ estimate: 1,
4735
+ rationale: "Fill, stroke, opacity, dash arrays, currentColor, linear and radial gradients, coordinate spaces and gradient transforms use the implemented paint paths."
4736
+ },
4737
+ {
4738
+ id: "definitions-references-and-clipping",
4739
+ usage: 2,
4740
+ importance: 2,
4741
+ estimate: 0.85,
4742
+ rationale: "Defs, Use, Symbol, Mask, and ClipPath references are supported, while Pattern, Marker, and ForeignObject nodes are skipped by the CanvasKit renderer. Apps using those nodes do not see their referenced fill, marker geometry, or embedded native content."
4743
+ },
4744
+ {
4745
+ id: "text-and-text-paths",
4746
+ usage: 1,
4747
+ importance: 2,
4748
+ estimate: 0.85,
4749
+ rationale: "Text and TSpan render through the SVG host path. TextPath is represented as a host type but skipped by the renderer, so text that should follow a path is not visible along that path."
4750
+ },
4751
+ {
4752
+ id: "xml-and-document-helpers",
4753
+ usage: 1,
4754
+ importance: 1,
4755
+ estimate: 1,
4756
+ rationale: "SvgXml, SvgUri, SvgAst, SvgFromXml, SvgCss, parse, fetchText, and camelCase provide the installed package's document-loading and parsing workflow. The inspected helper path has no app-facing behavior gap."
4757
+ },
4758
+ {
4759
+ id: "filters-and-imperative-geometry",
4760
+ usage: 1,
4761
+ importance: 2,
4762
+ estimate: 0,
4763
+ rationale: "Filter hosts and native export, hit-testing, path-metric, bounding-box and matrix methods refuse the operation. These dedicated behaviors receive no implementation credit."
4764
+ }
4765
+ ],
4053
4766
  capabilityCoverage: CAPABILITY_INVENTORY_PACKAGE_COVERAGE["react-native-svg"],
4054
- note: "full CanvasKit rendering for shapes, text, XML, gradients, references, masks, clipping, and images; SVG filter elements skipped",
4767
+ note: "CanvasKit rendering for shapes, text, XML, gradients, references, masks, clipping, and images; native SVG filters and geometry queries are unsupported",
4055
4768
  working: "Svg, Path, Circle, Rect, Line, Ellipse, Polygon, Polyline, G, Text, TSpan, Defs, LinearGradient and RadialGradient with objectBoundingBox/userSpaceOnUse coordinates, focal points and gradientTransform, Stop, Mask, ClipPath, Image, Use and Symbol references, SvgXml, SvgUri, SvgAst, SvgFromXml, SvgCss, parse, fetchText, camelCase, shape transforms, fill/stroke/opacity/dasharray, currentColor, viewBox scaling",
4056
- missing: "SVG filter primitives (Filter, FeBlend, FeColorMatrix, FeGaussianBlur, FeComposite, etc), Pattern, Marker, ForeignObject, and TextPath are skipped by the renderer"
4769
+ missing: "native SVG filter components and toDataURL, hit-testing, path-metric, bounding-box, and matrix methods refuse calls; Pattern, Marker, ForeignObject, and TextPath do not render"
4057
4770
  }
4058
4771
  ]
4059
4772
  },
@@ -4063,9 +4776,47 @@ var init_registry = __esm({
4063
4776
  versions: [
4064
4777
  {
4065
4778
  range: ">=1.0.0",
4066
- ...scoredCoverage("@react-native-async-storage/async-storage", 1),
4779
+ ...scoredCoverage("@react-native-async-storage/async-storage"),
4780
+ features: [
4781
+ {
4782
+ id: "single-key-read-write",
4783
+ usage: 3,
4784
+ importance: 3,
4785
+ estimate: 1,
4786
+ rationale: "ordinary get, set, remove, clear, and persistence work through the tenant storage seam"
4787
+ },
4788
+ {
4789
+ id: "batched-operations",
4790
+ usage: 3,
4791
+ importance: 3,
4792
+ estimate: 0.92,
4793
+ rationale: "batch reads and writes work; multiGet returns an empty string for missing keys instead of null, estimated as 8% of batch workflows"
4794
+ },
4795
+ {
4796
+ id: "merge-json",
4797
+ usage: 2,
4798
+ importance: 2,
4799
+ estimate: 1,
4800
+ rationale: "JSON object merge semantics are implemented by the native seam"
4801
+ },
4802
+ {
4803
+ id: "persistence-and-callbacks",
4804
+ usage: 2,
4805
+ importance: 3,
4806
+ estimate: 1,
4807
+ rationale: "tenant-scoped persistence and callback/promise completion match the app-facing contract"
4808
+ },
4809
+ {
4810
+ id: "use-async-storage-hook",
4811
+ usage: 1,
4812
+ importance: 2,
4813
+ estimate: 1,
4814
+ rationale: "the upstream hook runs over the default storage object"
4815
+ }
4816
+ ],
4067
4817
  capabilityCoverage: CAPABILITY_INVENTORY_PACKAGE_COVERAGE["@react-native-async-storage/async-storage"],
4068
- note: "native-seam only \u2014 upstream AsyncStorage JS runs from the bundle and resolves RNCAsyncStorage, which persists through tenant localStorage"
4818
+ note: "native-seam only \u2014 upstream AsyncStorage JS runs from the bundle and resolves RNCAsyncStorage, which persists through tenant localStorage",
4819
+ missing: "multiGet returns an empty string for absent keys instead of null; ordinary getItem returns null correctly"
4069
4820
  }
4070
4821
  ]
4071
4822
  },
@@ -4076,13 +4827,54 @@ var init_registry = __esm({
4076
4827
  versions: [
4077
4828
  {
4078
4829
  range: ">=11.0.0",
4079
- ...scoredCoverage(
4080
- "react-native-webview",
4081
- REACT_NATIVE_WEBVIEW_WILL_IT_WORK_COVERAGE
4082
- ),
4830
+ ...scoredCoverage("react-native-webview"),
4831
+ features: [
4832
+ {
4833
+ id: "content-loading",
4834
+ usage: 3,
4835
+ importance: 3,
4836
+ estimate: 0.85,
4837
+ rationale: "HTML, base URL and compatible URI pages load. Cross-origin pages blocked by iframe or WebKit COEP restrictions account for an estimated 15% of loading workflows; session behavior is assessed separately."
4838
+ },
4839
+ {
4840
+ id: "lifecycle-messaging-injection",
4841
+ usage: 3,
4842
+ importance: 3,
4843
+ estimate: 0.84,
4844
+ rationale: "local page lifecycle, messaging, and injection work; arbitrary remote-frame scripting cannot cross origin"
4845
+ },
4846
+ {
4847
+ id: "navigation-controls",
4848
+ usage: 3,
4849
+ importance: 3,
4850
+ estimate: 0.62,
4851
+ rationale: "reload and injection work, while history, stop, interception, and failed-navigation behavior are incomplete"
4852
+ },
4853
+ {
4854
+ id: "layout-scroll-presentation",
4855
+ usage: 3,
4856
+ importance: 2,
4857
+ estimate: 1,
4858
+ rationale: "Layout, clipping, scrolling, loading UI and parked/live presentation use the implemented hosted surface."
4859
+ },
4860
+ {
4861
+ id: "request-session-props",
4862
+ usage: 2,
4863
+ importance: 2,
4864
+ estimate: 0.4,
4865
+ rationale: "headers, cache, incognito, user agent, and cross-origin cookie/session behavior differ from native"
4866
+ },
4867
+ {
4868
+ id: "media-file-integration",
4869
+ usage: 1,
4870
+ importance: 2,
4871
+ estimate: 0.45,
4872
+ rationale: "Browser file inputs and media remain browser-backed, but native inline/autoplay/fullscreen policy props are not forwarded to the iframe. Their missing control is estimated as 55% of this feature."
4873
+ }
4874
+ ],
4083
4875
  capabilityCoverage: CAPABILITY_INVENTORY_PACKAGE_COVERAGE["react-native-webview"],
4084
4876
  strictCoverage: REACT_NATIVE_WEBVIEW_STRICT_COVERAGE,
4085
- note: "native-seam only: the published package runs unchanged and routes RNCWebView through the tenant-to-shell hosted iframe surface. coverage is generated from app-source use in six pinned applications; equal-surface strict coverage includes the shared, iOS, and Android public prop and ref surface. paired native and SootSim runtime conformance covers local HTML, base URL, URI loading, load and navigation callbacks, both injection phases, two-way messaging, imperative URI reload and injection, content scrolling, parent translation, and onOpenWindow target delivery.",
4877
+ note: "native-seam only: the published package runs unchanged and routes RNCWebView through the tenant-to-shell hosted iframe surface. the implementation estimate uses reviewed feature weights; the separate equal-surface strict diagnostic includes the shared, iOS, and Android public prop and ref surface. paired native and SootSim runtime conformance covers local HTML, base URL, URI loading, load and navigation callbacks, both injection phases, two-way messaging, imperative URI reload and injection, content scrolling, parent translation, and onOpenWindow target delivery.",
4086
4878
  working: "source.uri/source.html/source.baseUrl, Chromium cross-origin URI loading under the shell COEP, same-origin URI cookies, source.html persistent localStorage, document-start ReactNativeWebView bootstrap and injectedJavaScriptBeforeContentLoaded/injectedJavaScript on source.html, strict ReactNativeWebView.postMessage bridge envelope in both directions, onMessage synthetic event with navigation fields, onOpenWindow target delivery for source.html, successful onLoad/Start/End and onNavigationStateChange, ref.reload on URI pages, ref.injectJavaScript/postMessage, internal content scrolling, renderLoading, javaScriptEnabled sandbox, layout, inherited clipping and visibility, parked/live presentation",
4087
4879
  missing: "Safari/WebKit cross-origin URI pages without COEP-compatible response headers remain permanently loading because WebKit ignores iframe credentialless; Chromium credentialless cross-origin URI frames send no credentials, including cookies set by their own origin, and use ephemeral storage; iframe pixels in canvas screenshots; script injection, ReactNativeWebView bootstrap, and onOpenWindow for remote pages, which get no bridge at all because a browser cannot script a cross-origin frame; cross-origin ref.goBack/goForward/stopLoading and truthful canGoBack/canGoForward values; failed HTTP/refused navigation callbacks (onError/onHttpError and renderError); onShouldStartLoadWithRequest, allowsBackForwardNavigationGestures, userAgent, dataDetectorTypes, cacheEnabled, incognito, scalesPageToFit, originWhitelist enforcement"
4088
4880
  }
@@ -4156,11 +4948,48 @@ var init_registry = __esm({
4156
4948
  versions: [
4157
4949
  {
4158
4950
  range: ">=9.0.0",
4159
- ...scoredCoverage("@react-native-community/netinfo", 0.95),
4951
+ ...scoredCoverage("@react-native-community/netinfo"),
4952
+ features: [
4953
+ {
4954
+ id: "status-observation",
4955
+ usage: 3,
4956
+ importance: 3,
4957
+ estimate: 0.9,
4958
+ rationale: "fetch, the hook, and browser events expose online and offline state, but listeners do not receive the upstream initial snapshot"
4959
+ },
4960
+ {
4961
+ id: "global-singleton",
4962
+ usage: 3,
4963
+ importance: 3,
4964
+ estimate: 0.7,
4965
+ rationale: "the facade supplies fetch and listeners but omits configure and refresh from the upstream singleton"
4966
+ },
4967
+ {
4968
+ id: "hooks",
4969
+ usage: 3,
4970
+ importance: 2,
4971
+ estimate: 0.55,
4972
+ rationale: "useNetInfo works, while useNetInfoInstance and configuration handling are absent"
4973
+ },
4974
+ {
4975
+ id: "state-fidelity",
4976
+ usage: 2,
4977
+ importance: 2,
4978
+ estimate: 0.55,
4979
+ rationale: "type is reduced to wifi or none and details is always null"
4980
+ },
4981
+ {
4982
+ id: "public-enums",
4983
+ usage: 1,
4984
+ importance: 1,
4985
+ estimate: 1,
4986
+ rationale: "The public runtime state-type enum is present; TypeScript-only exports do not require runtime implementations."
4987
+ }
4988
+ ],
4160
4989
  capabilityCoverage: CAPABILITY_INVENTORY_PACKAGE_COVERAGE["@react-native-community/netinfo"],
4161
4990
  note: "navigator.onLine backed with online/offline event listeners",
4162
4991
  working: "fetch, useNetInfo, addEventListener, NetInfoStateType",
4163
- missing: 'details field always null (no connection type subtype), type always "wifi" or "none" (no cellular/ethernet detection)'
4992
+ missing: 'configure, refresh, useNetInfoInstance, hook configuration, and initial listener notification are absent; details is always null and type is limited to "wifi" or "none"'
4164
4993
  }
4165
4994
  ]
4166
4995
  },
@@ -4171,11 +5000,48 @@ var init_registry = __esm({
4171
5000
  versions: [
4172
5001
  {
4173
5002
  range: ">=1.0.0",
4174
- ...scoredCoverage("react-native-keyboard-controller", 0.88),
5003
+ ...scoredCoverage("react-native-keyboard-controller"),
5004
+ features: [
5005
+ {
5006
+ id: "keyboard-layout-avoidance",
5007
+ usage: 3,
5008
+ importance: 3,
5009
+ estimate: 1,
5010
+ rationale: "KeyboardAvoidingView, KeyboardStickyView, and KeyboardAwareScrollView are upstream JavaScript components and cover the primary keyboard-aware layout workflow through the shared keyboard and reanimated paths. The inspected layout path has no app-facing behavior gap."
5011
+ },
5012
+ {
5013
+ id: "keyboard-events-and-hooks",
5014
+ usage: 3,
5015
+ importance: 3,
5016
+ estimate: 1,
5017
+ rationale: "KeyboardProvider, animation hooks, focused-input hooks, keyboard lifecycle events, and resize events use the live SootSim keyboard source and worklet dispatch path. The inspected event and hook path has no app-facing behavior gap."
5018
+ },
5019
+ {
5020
+ id: "keyboard-controller-api",
5021
+ usage: 2,
5022
+ importance: 2,
5023
+ estimate: 1,
5024
+ rationale: "Dismiss, focus navigation, preload, visibility and state reads, input mode, and default mode have explicit controller paths. The inspected controller path has no app-facing behavior gap."
5025
+ },
5026
+ {
5027
+ id: "interactive-keyboard-gesture",
5028
+ usage: 1,
5029
+ importance: 2,
5030
+ estimate: 1,
5031
+ rationale: "KeyboardGestureArea recognizes drag, settling, cancellation, focus retention, and cleanup. The current binding also registers and unregisters textInputNativeID and offset with the keyboard runtime on iOS, so the inspected gesture path has no app-facing behavior gap."
5032
+ },
5033
+ {
5034
+ id: "keyboard-native-views-and-toolbar",
5035
+ usage: 1,
5036
+ importance: 2,
5037
+ estimate: 0,
5038
+ rationale: "Over-keyboard hosting, keyboard background effects, extender layout, clipping and native toolbar grouping are absent. Ordinary View wrappers do not implement these native accessory behaviors."
5039
+ }
5040
+ ],
4175
5041
  capabilityCoverage: CAPABILITY_INVENTORY_PACKAGE_COVERAGE["react-native-keyboard-controller"],
4176
5042
  note: "native bindings stubbed (KeyboardControllerNative, KeyboardEvents, FocusedInputEvents, WindowDimensionsEvents, KeyboardControllerView + sibling native views); upstream pure-JS components, hooks, animated module, and KeyboardAvoidingView resolve from node_modules unchanged",
4177
5043
  working: "every upstream JS export runs through reanimated worklets; Android KeyboardGestureArea drives the existing keyboard owner through drag progress, velocity/distance settling, cancellation, focus retention, and cleanup; supported exports include KeyboardProvider, KeyboardAvoidingView, KeyboardStickyView, KeyboardAwareScrollView, KeyboardToolbar, KeyboardGestureArea, useReanimatedKeyboardAnimation, useKeyboardAnimation, useKeyboardHandler, useGenericKeyboardHandler, useKeyboardController, useKeyboardState, useKeyboardContext, useReanimatedFocusedInput, useFocusedInputHandler, useResizeMode, useWindowDimensions, KeyboardEvents, FocusedInputEvents, WindowDimensionsEvents resize events, KeyboardController (dismiss/setFocusTo/isVisible/state/preload/setInputMode/setDefaultMode), KeyboardControllerView, OverKeyboardView, KeyboardBackgroundView, KeyboardExtender, ClippingScrollView, KeyboardToolbarGroupView, and AndroidSoftInputModes",
4178
- missing: "KeyboardGestureArea lacks its iOS textInputNativeID/offset effect; OverKeyboardView, KeyboardBackgroundView, and KeyboardExtender are passthrough views without their native platform effects"
5044
+ missing: "OverKeyboardView, KeyboardBackgroundView, KeyboardExtender, ClippingScrollView, and KeyboardToolbarGroupView are passthrough views without their native platform effects"
4179
5045
  }
4180
5046
  ]
4181
5047
  },
@@ -4185,7 +5051,23 @@ var init_registry = __esm({
4185
5051
  versions: [
4186
5052
  {
4187
5053
  range: ">=0.2.0",
4188
- ...scoredCoverage("@react-native-masked-view/masked-view", 1),
5054
+ ...scoredCoverage("@react-native-masked-view/masked-view"),
5055
+ features: [
5056
+ {
5057
+ id: "alpha-mask-compositing",
5058
+ usage: 3,
5059
+ importance: 3,
5060
+ estimate: 1,
5061
+ rationale: "the engine renders maskElement as an alpha mask with CanvasKit saveLayer and DstIn compositing"
5062
+ },
5063
+ {
5064
+ id: "view-props-and-fallback",
5065
+ usage: 2,
5066
+ importance: 2,
5067
+ estimate: 1,
5068
+ rationale: "children, styles, refs, accessibility, pointer events, and invalid-mask fallback preserve visible behavior"
5069
+ }
5070
+ ],
4189
5071
  capabilityCoverage: CAPABILITY_INVENTORY_PACKAGE_COVERAGE["@react-native-masked-view/masked-view"],
4190
5072
  note: "engine-level masked-view node with canvaskit saveLayer + BlendMode.DstIn alpha compositing",
4191
5073
  working: "MaskedView component renders sootsim-masked-view host element with __sootsimMaskSlot alpha-mask pipeline (saveLayer + DstIn in canvaskit-renderer), maskElement, children, style, pointerEvents, accessible, accessibilityLabel, nativeID, testID"
@@ -4237,7 +5119,37 @@ var init_registry = __esm({
4237
5119
  versions: [
4238
5120
  {
4239
5121
  range: ">=0.1.0",
4240
- ...scoredCoverage("react-native-worklets", 0.97),
5122
+ ...scoredCoverage("react-native-worklets"),
5123
+ features: [
5124
+ {
5125
+ id: "thread-scheduling-bridges",
5126
+ usage: 3,
5127
+ importance: 3,
5128
+ estimate: 1,
5129
+ rationale: "RN and UI scheduling use the implemented local and shell queues; asynchronous transport alone does not establish an ordering defect."
5130
+ },
5131
+ {
5132
+ id: "named-runtime-execution",
5133
+ usage: 2,
5134
+ importance: 2,
5135
+ estimate: 0.88,
5136
+ rationale: "Named runtimes support creation and asynchronous execution. Custom queues, event-loop disabling, polling intervals and synchronous or id-based named-runtime calls are unavailable, estimated as 12% of this feature."
5137
+ },
5138
+ {
5139
+ id: "shareable-and-serializable-values",
5140
+ usage: 2,
5141
+ importance: 2,
5142
+ estimate: 0.95,
5143
+ rationale: "Shareable values, synchronizable values, workletization, and the public serializable registration surface support the common cross-runtime value workflow. Custom serializers are recorded by the facade but are not connected to a separate structured-clone bridge for named runtimes."
5144
+ },
5145
+ {
5146
+ id: "runtime-kinds-and-feature-flags",
5147
+ usage: 1,
5148
+ importance: 1,
5149
+ estimate: 0.95,
5150
+ rationale: "Runtime-kind guards and the UI runtime id work. Dynamic flag writes are ignored, including the installed EXAMPLE_DYNAMIC_FLAG contract; this is estimated as 5% of the feature."
5151
+ }
5152
+ ],
4241
5153
  capabilityCoverage: CAPABILITY_INVENTORY_PACKAGE_COVERAGE["react-native-worklets"],
4242
5154
  note: "core RN\u2194UI thread bridging, isolated named Worker runtimes, runtime-kind guards, UI-runtime-id execution, shareable/synchronizable guards, custom serializable registration, and feature flag readers use SootSim worker runtimes.",
4243
5155
  working: "createWorkletRuntime with isolated named Worker execution and lifecycle teardown, runOnRuntime/runOnRuntimeAsync/scheduleOnRuntime with scheduleOnRN callback return, runOnJS, runOnUI/Sync/Async, scheduleOnRN/UI, UI-runtime runOnRuntimeSyncWithId/scheduleOnRuntimeWithId, makeShareable, createShareable (3-arg form with hostDecorator), createSerializable, createSynchronizable, isShareable, isSynchronizable, isWorkletFunction, isShareableRef, isSerializableRef, makeShareableCloneRecursive/OnUIRecursive, executeOnUIRuntimeSync, callMicrotasks, WorkletsModule, RuntimeKind enum, getRuntimeKind, isRNRuntime, isUIRuntime, isWorkerRuntime, isWorkletRuntime, UIRuntimeId, getUIRuntimeHolder, getUISchedulerHolder, registerCustomSerializable, getStaticFeatureFlag, getDynamicFeatureFlag, setDynamicFeatureFlag, Worklets namespace",
@@ -5069,7 +5981,44 @@ var init_registry = __esm({
5069
5981
  versions: [
5070
5982
  {
5071
5983
  range: ">=5.0.0",
5072
- ...scoredCoverage("@sentry/react-native", 0.95),
5984
+ ...scoredCoverage("@sentry/react-native"),
5985
+ features: [
5986
+ {
5987
+ id: "event-telemetry",
5988
+ usage: 3,
5989
+ importance: 3,
5990
+ estimate: 1,
5991
+ rationale: "event capture and initialization are load-safe; delivery is intentionally suppressed in the browser simulator"
5992
+ },
5993
+ {
5994
+ id: "scope-context-breadcrumbs",
5995
+ usage: 3,
5996
+ importance: 3,
5997
+ estimate: 1,
5998
+ rationale: "scope, context, tags, users, extras, and breadcrumbs retain their JavaScript behavior"
5999
+ },
6000
+ {
6001
+ id: "tracing-performance",
6002
+ usage: 2,
6003
+ importance: 3,
6004
+ estimate: 1,
6005
+ rationale: "JavaScript spans and timing integrations work, and native profiling absence is a permitted load-safe simulator result"
6006
+ },
6007
+ {
6008
+ id: "react-integrations",
6009
+ usage: 2,
6010
+ importance: 3,
6011
+ estimate: 1,
6012
+ rationale: "wrap, boundaries, and profiler integrations run through the browser-compatible React path"
6013
+ },
6014
+ {
6015
+ id: "native-observability",
6016
+ usage: 1,
6017
+ importance: 2,
6018
+ estimate: 1,
6019
+ rationale: "native crash, screenshot, replay, and device-observability calls are safe no-ops permitted by the browser simulator contract"
6020
+ }
6021
+ ],
5073
6022
  capabilityCoverage: CAPABILITY_INVENTORY_PACKAGE_COVERAGE["@sentry/react-native"],
5074
6023
  note: "development noop \u2014 API surface is load-safe and no events are sent from sootsim",
5075
6024
  working: "init, wrap, captureException/Message/Event, ErrorBoundary/withErrorBoundary, withScope/configureScope, all scope setters, startTransaction, startSpan/startInactiveSpan/continueTrace, metrics namespace, hub/client/transport shape, modern integration factories, Severity enum",
@@ -5434,7 +6383,44 @@ var init_registry = __esm({
5434
6383
  versions: [
5435
6384
  {
5436
6385
  range: ">=9.1.0 <10.0.0",
5437
- ...scoredCoverage("@react-native-community/datetimepicker", 0.85),
6386
+ ...scoredCoverage("@react-native-community/datetimepicker"),
6387
+ features: [
6388
+ {
6389
+ id: "wheel-date-time-selection",
6390
+ usage: 3,
6391
+ importance: 3,
6392
+ estimate: 0.93,
6393
+ rationale: "date, time, datetime, bounds and selection events use the wheel control; non-wrapping day/year wheels and the narrower datetime range account for an estimated 7% of this feature"
6394
+ },
6395
+ {
6396
+ id: "locale-timezone-interval",
6397
+ usage: 2,
6398
+ importance: 3,
6399
+ estimate: 1,
6400
+ rationale: "locale, minute interval, fixed offsets, and named IANA zones are implemented by the spinner calendar conversion"
6401
+ },
6402
+ {
6403
+ id: "appearance-enabled-accessibility",
6404
+ usage: 2,
6405
+ importance: 2,
6406
+ estimate: 0.78,
6407
+ rationale: "theme, text color, disabled, and accessibility work, while accentColor and iOS display styles are approximated"
6408
+ },
6409
+ {
6410
+ id: "dismissal-and-legacy-callbacks",
6411
+ usage: 2,
6412
+ importance: 2,
6413
+ estimate: 0.55,
6414
+ rationale: "selection callbacks are adapted, but the seam drops onPickerDismiss; the missing dismissal workflow accounts for an estimated 45% of this callback group"
6415
+ },
6416
+ {
6417
+ id: "android-imperative-export",
6418
+ usage: 1,
6419
+ importance: 1,
6420
+ estimate: 1,
6421
+ rationale: "the iOS package contract intentionally exposes an unavailable warning-only Android helper"
6422
+ }
6423
+ ],
5438
6424
  capabilityCoverage: CAPABILITY_INVENTORY_PACKAGE_COVERAGE["@react-native-community/datetimepicker"],
5439
6425
  note: "the real upstream package JS runs from the guest bundle. the granular onValueChange prop starts in 9.1.0; its controlled iOS wrapper resolves codegenNativeComponent('RNDateTimePicker') to the engine UIDatePicker wheel. paired native and SootSim proof covers fixed-offset and IANA-named date calendars. the pinned Fabric emitter omits utcOffset, so its Int32 field is observed as 0 on native and intentionally matches that value here.",
5440
6426
  working: "real upstream DateTimePicker and exported constants, value, mode date/time/datetime, granular onValueChange event and Date, minimumDate, maximumDate, minuteInterval, locale, timeZoneOffsetInMinutes, timeZoneName for date-mode calendar selection, textColor, themeVariant, disabled",
@@ -5775,7 +6761,23 @@ var init_registry = __esm({
5775
6761
  versions: [
5776
6762
  {
5777
6763
  range: ">=1.0.0",
5778
- ...scoredCoverage("react-native-get-random-values", 1),
6764
+ ...scoredCoverage("react-native-get-random-values"),
6765
+ features: [
6766
+ {
6767
+ id: "secure-rng-side-effect",
6768
+ usage: 3,
6769
+ importance: 3,
6770
+ estimate: 1,
6771
+ rationale: "the browser already provides crypto.getRandomValues, so importing the side-effect polyfill preserves the app contract"
6772
+ },
6773
+ {
6774
+ id: "load-safe-fallback",
6775
+ usage: 1,
6776
+ importance: 1,
6777
+ estimate: 1,
6778
+ rationale: "the hosted runtime has secure crypto and the shim does not replace it"
6779
+ }
6780
+ ],
5779
6781
  capabilityCoverage: CAPABILITY_INVENTORY_PACKAGE_COVERAGE["react-native-get-random-values"],
5780
6782
  note: "side-effect polyfill \u2014 browser already has crypto.getRandomValues, noop is correct",
5781
6783
  working: "polyfills globalThis.crypto.getRandomValues if absent (Math.random fallback)"
@@ -16011,6 +17013,36 @@ var init_registry = __esm({
16011
17013
  ]
16012
17014
  }
16013
17015
  };
17016
+ POLYFILL_REGISTRY = Object.fromEntries(
17017
+ Object.entries(POLYFILL_REGISTRY_INPUT).map(([name2, entry]) => [
17018
+ name2,
17019
+ {
17020
+ ...entry,
17021
+ versions: entry.versions.map((version) => {
17022
+ let features = version.features;
17023
+ if (features === void 0) {
17024
+ const estimate = version.estimate ?? version.coverage;
17025
+ if (estimate == null)
17026
+ throw new Error(`${name2}@${version.range} needs an implementation estimate`);
17027
+ features = [
17028
+ { id: "package", usage: 1, importance: 1, estimate, rationale: version.note }
17029
+ ];
17030
+ } else if (version.estimate !== void 0 || version.coverageSource !== "measured" && version.coverage !== void 0) {
17031
+ throw new Error(
17032
+ `${name2}@${version.range} cannot declare both features and a scalar estimate`
17033
+ );
17034
+ }
17035
+ const score = calculateFeatureCompatibility(features);
17036
+ return {
17037
+ ...version,
17038
+ features,
17039
+ coverage: version.coverageSource === "measured" ? version.coverage ?? null : score.estimate,
17040
+ ...version.coverageSource === "measured" ? { estimate: score.estimate } : {}
17041
+ };
17042
+ })
17043
+ }
17044
+ ])
17045
+ );
16014
17046
  }
16015
17047
  });
16016
17048
 
@@ -28829,6 +29861,7 @@ function describeVisibleSimCandidate(sims, currentId) {
28829
29861
  return `${candidate.id}${tags.length ? ` [${tags.join(", ")}]` : ""}`;
28830
29862
  }
28831
29863
  async function checkSimHealth(bridge) {
29864
+ if (bridge.plane === "cloud") return { hidden: false, warned: false };
28832
29865
  try {
28833
29866
  const probe3 = await bridge.send({
28834
29867
  type: "evaluate",