rnxsim 0.1.457 → 0.1.459

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 (61) hide show
  1. package/cli/bridge-flow-runner.ts +13 -10
  2. package/cli/commands/inspect/actions.ts +20 -127
  3. package/cli/commands/inspect/core.ts +4 -19
  4. package/cli/commands/inspect/keyboard.ts +1 -0
  5. package/cli/commands/inspect/resolve-target.ts +3 -1
  6. package/cli/commands/inspect.ts +2 -0
  7. package/detox/index.ts +12 -1
  8. package/dist-lib/agent-daemon-client.cjs +1 -1
  9. package/dist-lib/agent-events.cjs +1 -1
  10. package/dist-lib/agent-identity.cjs +1 -1
  11. package/dist-lib/agent-sessions.cjs +1 -1
  12. package/dist-lib/attached-projects.cjs +1 -1
  13. package/dist-lib/auth/shared-session.cjs +1 -1
  14. package/dist-lib/backend-origin.cjs +1 -1
  15. package/dist-lib/beta.cjs +1 -1
  16. package/dist-lib/beta.mjs +1 -1
  17. package/dist-lib/bridge-constants.cjs +1 -1
  18. package/dist-lib/bridge-contract-input.cjs +24 -3
  19. package/dist-lib/bridge-contract-input.mjs +22 -2
  20. package/dist-lib/bridge-contract.cjs +1 -1
  21. package/dist-lib/bridge-contract.mjs +1 -1
  22. package/dist-lib/capture-contract.cjs +1 -1
  23. package/dist-lib/capture-contract.mjs +1 -1
  24. package/dist-lib/cli-constants.cjs +1 -1
  25. package/dist-lib/cloud-contract.cjs +1 -1
  26. package/dist-lib/cloud-contract.mjs +1 -1
  27. package/dist-lib/cloud.cjs +1 -1
  28. package/dist-lib/cloud.mjs +1 -1
  29. package/dist-lib/config.cjs +1 -1
  30. package/dist-lib/detox/index.cjs +15 -2
  31. package/dist-lib/dev-bundle-resolution.cjs +1 -1
  32. package/dist-lib/home-paths.cjs +1 -1
  33. package/dist-lib/host/bridge-host.cjs +1 -1
  34. package/dist-lib/host/fetch-proxy-handler.cjs +1 -1
  35. package/dist-lib/host/fetch-proxy-overrides.cjs +1 -1
  36. package/dist-lib/host/fetch-proxy-overrides.mjs +1 -1
  37. package/dist-lib/host/replacement-module-handler.cjs +1 -1
  38. package/dist-lib/host/websocket-proxy.cjs +1 -1
  39. package/dist-lib/index.cjs +26 -72
  40. package/dist-lib/jump-to-source-babel.cjs +1 -1
  41. package/dist-lib/jump-to-source-native.cjs +1 -1
  42. package/dist-lib/menu.cjs +1 -1
  43. package/dist-lib/menu.mjs +1 -1
  44. package/dist-lib/metro-fingerprint-registry.cjs +1 -1
  45. package/dist-lib/metro-fingerprint-registry.mjs +1 -1
  46. package/dist-lib/metro-production-bundle.cjs +1 -1
  47. package/dist-lib/metro-production-bundle.mjs +1 -1
  48. package/dist-lib/metro.cjs +1 -1
  49. package/dist-lib/profiles.cjs +1 -1
  50. package/dist-lib/public-brand.cjs +1 -1
  51. package/dist-lib/react-native-host-modules.cjs +1 -1
  52. package/dist-lib/react-native-host-modules.mjs +1 -1
  53. package/dist-lib/render-mode.cjs +1 -1
  54. package/dist-lib/scripts/dev-server-scanner.cjs +1 -1
  55. package/dist-lib/sdk.cjs +26 -72
  56. package/dist-lib/sdk.mjs +26 -72
  57. package/dist-lib/skills.cjs +788 -160
  58. package/dist-lib/vite.cjs +1 -1
  59. package/package.json +1 -1
  60. package/src/bridge-contract-input.ts +22 -2
  61. package/src/sim-client.ts +14 -2
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.457 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.459 | (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;
@@ -505,6 +505,9 @@ function softwareChromeLaunchOptions(opts) {
505
505
  return software;
506
506
  }
507
507
  function chromeLaunchOptions(opts = {}, runtime = currentRuntime()) {
508
+ if (signalShutdownClaimed) {
509
+ opts = { ...opts, handleSIGINT: false, handleSIGTERM: false, handleSIGHUP: false };
510
+ }
508
511
  return softwareChromeAllowed(runtime) ? softwareChromeLaunchOptions(opts) : gpuChromeLaunchOptions(opts, runtime);
509
512
  }
510
513
  async function launchReapedChrome(launch3, opts = {}, rendererTarget, policy = {}) {
@@ -3845,118 +3848,270 @@ var init_supported_native_packages = __esm({
3845
3848
  SUPPORTED_NATIVE_PACKAGE_NAMES = [
3846
3849
  "@adobe/react-native-aepcore",
3847
3850
  // coverage
3851
+ "@ankipro/react-native-file-open",
3852
+ // seam
3848
3853
  "@aptabase/react-native",
3849
- // coverage
3854
+ // seam+coverage
3855
+ "@attarchi/react-native-lottie-splash-screen",
3856
+ // seam
3857
+ "@bacons/apple-targets",
3858
+ // seam
3859
+ "@baronha/ting",
3860
+ // seam
3850
3861
  "@bitdrift/react-native",
3851
3862
  // coverage
3863
+ "@bittingz/expo-widgets",
3864
+ // seam
3865
+ "@braze/react-native-sdk",
3866
+ // seam
3867
+ "@bsky.app/expo-image-crop-tool",
3868
+ // seam
3852
3869
  "@bsky.app/react-native-mmkv",
3853
- // coverage
3870
+ // seam+coverage
3854
3871
  "@bugfender/rn-bugfender",
3855
- // coverage
3872
+ // seam+coverage
3856
3873
  "@bugsnag/react-native",
3857
3874
  // coverage
3858
3875
  "@bugsnag/react-native-performance",
3859
3876
  // coverage
3877
+ "@callstack/liquid-glass",
3878
+ // seam
3879
+ "@candlefinance/faster-image",
3880
+ // seam
3881
+ "@clerk/expo-passkeys",
3882
+ // seam
3883
+ "@computools/react-native-dynamic-app-icon",
3884
+ // seam
3860
3885
  "@d11/react-native-fast-image",
3861
3886
  // coverage
3887
+ "@dariyd/react-native-document-scanner",
3888
+ // seam
3862
3889
  "@datadog/mobile-react-native",
3863
3890
  // coverage
3891
+ "@dbkable/react-native-speech-to-text",
3892
+ // seam
3864
3893
  "@dimaportenko/react-native-shadow-view",
3865
3894
  // coverage
3895
+ "@domir/react-native-measure-text",
3896
+ // seam+coverage
3866
3897
  "@dr.pogodin/react-native-fs",
3867
3898
  // coverage
3899
+ "@expensify/react-native-background-task",
3900
+ // seam
3901
+ "@expensify/react-native-hybrid-app",
3902
+ // seam
3903
+ "@expo/app-integrity",
3904
+ // seam
3905
+ "@expo/dom-webview",
3906
+ // seam
3868
3907
  "@expo/ui",
3869
3908
  // preset+coverage
3870
3909
  "@expo/ui/community/menu",
3871
3910
  // coverage
3911
+ "@fugood/react-native-audio-pcm-stream",
3912
+ // seam
3872
3913
  "@fullstory/react-native",
3873
- // coverage
3914
+ // seam+coverage
3915
+ "@generac/react-native-local-network-permission",
3916
+ // seam
3917
+ "@hot-updater/react-native",
3918
+ // seam
3919
+ "@intercom/intercom-react-native",
3920
+ // seam
3874
3921
  "@iterable/expo-plugin",
3875
3922
  // coverage
3923
+ "@iterable/react-native-sdk",
3924
+ // seam
3925
+ "@joplin/react-native-alarm-notification",
3926
+ // seam
3927
+ "@journeyapps/react-native-quick-sqlite",
3928
+ // seam
3929
+ "@kesha-antonov/react-native-background-downloader",
3930
+ // seam
3931
+ "@lodev09/react-native-true-sheet",
3932
+ // seam
3933
+ "@logicwind/react-native-exit-app",
3934
+ // seam
3935
+ "@logicwind/react-native-matomo-tracker",
3936
+ // seam
3937
+ "@logicwind/react-native-status-bar-height",
3938
+ // seam
3939
+ "@lottiefiles/dotlottie-react-native",
3940
+ // seam
3941
+ "@mattermost/react-native-emm",
3942
+ // seam
3876
3943
  "@mattermost/react-native-paste-input",
3877
3944
  // coverage
3878
3945
  "@mattermost/react-native-turbo-log",
3879
- // coverage
3946
+ // seam+coverage
3947
+ "@mattermost/rnutils",
3948
+ // seam
3949
+ "@meedwire/react-native-image-rotate",
3950
+ // seam
3951
+ "@metamask/native-utils",
3952
+ // seam+coverage
3953
+ "@metamask/react-native-webview",
3954
+ // seam
3955
+ "@mhpdev/react-native-haptics",
3956
+ // seam
3957
+ "@mhpdev/react-native-speech",
3958
+ // seam
3880
3959
  "@nandorojo/galeria",
3881
- // preset+coverage
3960
+ // preset+seam+coverage
3882
3961
  "@notifee/react-native",
3883
- // coverage
3962
+ // seam+coverage
3963
+ "@nozbe/watermelondb",
3964
+ // seam
3884
3965
  "@op-engineering/op-sqlite",
3885
3966
  // coverage
3967
+ "@pnthach95/react-native-root-view-background",
3968
+ // seam
3886
3969
  "@posthog/react-native-plugin",
3887
- // preset+coverage
3970
+ // preset+seam+coverage
3971
+ "@preeternal/react-native-cookie-manager",
3972
+ // seam
3973
+ "@pusher/pusher-websocket-react-native",
3974
+ // seam
3975
+ "@pushpendersingh/react-native-otp-verify",
3976
+ // seam
3977
+ "@react-native-ai/apple",
3978
+ // seam
3888
3979
  "@react-native-async-storage/async-storage",
3889
3980
  // coverage
3981
+ "@react-native-camera-roll/camera-roll",
3982
+ // seam
3983
+ "@react-native-clipboard/clipboard",
3984
+ // seam
3890
3985
  "@react-native-community/checkbox",
3891
3986
  // coverage
3987
+ "@react-native-community/datetimepicker",
3988
+ // seam
3892
3989
  "@react-native-community/geolocation",
3893
- // coverage
3990
+ // seam+coverage
3894
3991
  "@react-native-community/image-editor",
3895
- // coverage
3992
+ // seam+coverage
3896
3993
  "@react-native-community/masked-view",
3897
3994
  // coverage
3995
+ "@react-native-community/netinfo",
3996
+ // seam+coverage
3997
+ "@react-native-community/progress-view",
3998
+ // seam
3898
3999
  "@react-native-community/slider",
3899
4000
  // coverage
4001
+ "@react-native-cookies/cookies",
4002
+ // seam
3900
4003
  "@react-native-documents/picker",
3901
4004
  // coverage
4005
+ "@react-native-documents/viewer",
4006
+ // seam
3902
4007
  "@react-native-firebase/analytics",
3903
- // coverage
4008
+ // seam+coverage
3904
4009
  "@react-native-firebase/app",
3905
- // coverage
4010
+ // seam+coverage
4011
+ "@react-native-firebase/auth",
4012
+ // seam
3906
4013
  "@react-native-firebase/crashlytics",
3907
- // coverage
4014
+ // seam+coverage
4015
+ "@react-native-firebase/firestore",
4016
+ // seam
4017
+ "@react-native-firebase/functions",
4018
+ // seam
3908
4019
  "@react-native-firebase/perf",
3909
4020
  // coverage
4021
+ "@react-native-firebase/storage",
4022
+ // seam
3910
4023
  "@react-native-masked-view/masked-view",
3911
4024
  // preset+coverage
3912
4025
  "@react-native-menu/menu",
3913
- // coverage
4026
+ // seam+coverage
4027
+ "@react-native-ml-kit/barcode-scanning",
4028
+ // seam
4029
+ "@react-native-picker/picker",
4030
+ // seam
3914
4031
  "@rn-org/react-native-shortcuts",
3915
- // coverage
4032
+ // seam+coverage
3916
4033
  "@rocket.chat/mobile-crypto",
3917
- // coverage
4034
+ // seam+coverage
4035
+ "@roman.sytnyk/blur-app-in-recents",
4036
+ // seam
4037
+ "@rudderstack/rudder-integration-amplitude-react-native",
4038
+ // seam
3918
4039
  "@rudderstack/rudder-integration-appcenter-react-native",
3919
- // coverage
4040
+ // seam+coverage
4041
+ "@rudderstack/rudder-integration-braze-react-native",
4042
+ // seam
4043
+ "@rudderstack/rudder-integration-clevertap-react-native",
4044
+ // seam
4045
+ "@rudderstack/rudder-integration-facebook-react-native",
4046
+ // seam
4047
+ "@rudderstack/rudder-integration-singular-react-native",
4048
+ // seam
3920
4049
  "@rudderstack/rudder-sdk-react-native",
3921
4050
  // coverage
4051
+ "@sdcx/pull-to-refresh",
4052
+ // seam
3922
4053
  "@segment/analytics-react-native",
3923
4054
  // coverage
3924
4055
  "@sentry/react-native",
3925
- // coverage
4056
+ // seam+coverage
4057
+ "@shakebugs/react-native-shake",
4058
+ // seam
3926
4059
  "@shopify/flash-list",
3927
4060
  // coverage
3928
4061
  "@shopify/react-native-performance",
3929
- // coverage
4062
+ // seam+coverage
3930
4063
  "@shopify/react-native-skia",
3931
4064
  // preset+coverage
4065
+ "@simform_solutions/react-native-audio-waveform",
4066
+ // seam
4067
+ "@sparkfabrik/react-native-idfa-aaid",
4068
+ // seam
3932
4069
  "@splicer97/react-native-mytracker",
3933
- // coverage
4070
+ // seam+coverage
3934
4071
  "@stripe/stripe-react-native",
3935
4072
  // coverage
4073
+ "@thehale/react-native-keep-awake",
4074
+ // seam
4075
+ "@ua/react-native-airship",
4076
+ // seam
4077
+ "@universe/hashcash-native",
4078
+ // seam
4079
+ "@vonovak/react-native-theme-control",
4080
+ // seam
3936
4081
  "@vxrn/native",
3937
- // preset
4082
+ // preset+seam
3938
4083
  "@walletconnect/react-native-compat",
3939
4084
  // coverage
3940
4085
  "@wwdrew/expo-android-shared-preferences",
3941
- // coverage
4086
+ // seam+coverage
4087
+ "amazon-ivs-react-native-player",
4088
+ // seam
3942
4089
  "appcenter",
3943
- // coverage
4090
+ // seam+coverage
4091
+ "appcenter-analytics",
4092
+ // seam
3944
4093
  "burnt",
3945
4094
  // preset+coverage
4095
+ "customerio-reactnative",
4096
+ // seam
3946
4097
  "expo",
3947
4098
  // preset+coverage
4099
+ "expo-age-range",
4100
+ // seam
3948
4101
  "expo-android-shared-preferences",
3949
- // coverage
4102
+ // seam+coverage
4103
+ "expo-app-integrity",
4104
+ // seam
3950
4105
  "expo-apple-authentication",
3951
- // preset
4106
+ // preset+seam
3952
4107
  "expo-application",
3953
4108
  // visual-proof+coverage
3954
4109
  "expo-asset",
3955
- // preset+coverage
4110
+ // preset+seam+coverage
3956
4111
  "expo-audio",
3957
- // coverage
4112
+ // seam+coverage
3958
4113
  "expo-av",
3959
- // coverage
4114
+ // seam+coverage
3960
4115
  "expo-background-fetch",
3961
4116
  // visual-proof
3962
4117
  "expo-background-task",
@@ -3970,59 +4125,69 @@ var init_supported_native_packages = __esm({
3970
4125
  "expo-calendar",
3971
4126
  // visual-proof
3972
4127
  "expo-camera",
3973
- // coverage
4128
+ // seam+coverage
3974
4129
  "expo-cellular",
3975
4130
  // visual-proof
3976
4131
  "expo-clipboard",
3977
- // preset+coverage
4132
+ // preset+seam+coverage
3978
4133
  "expo-constants",
3979
4134
  // preset+visual-proof+coverage
3980
4135
  "expo-contacts",
3981
4136
  // visual-proof
4137
+ "expo-core-spotlight",
4138
+ // seam
3982
4139
  "expo-crypto",
3983
4140
  // preset+coverage
3984
4141
  "expo-dev-client",
3985
4142
  // coverage
3986
4143
  "expo-device",
3987
- // coverage
4144
+ // seam+coverage
3988
4145
  "expo-document-picker",
3989
- // preset+coverage
4146
+ // preset+seam+coverage
3990
4147
  "expo-file-system",
3991
- // preset+coverage
4148
+ // preset+seam+coverage
3992
4149
  "expo-font",
3993
- // preset+coverage
4150
+ // preset+seam+coverage
3994
4151
  "expo-gl",
3995
4152
  // preset+coverage
3996
4153
  "expo-glass-effect",
3997
4154
  // preset+coverage
3998
4155
  "expo-haptics",
3999
- // preset+coverage
4156
+ // preset+seam+coverage
4157
+ "expo-hardware-buttons",
4158
+ // seam
4000
4159
  "expo-ignore-battery-optimizations",
4001
4160
  // coverage
4002
4161
  "expo-image",
4003
- // preset+visual-proof+coverage
4162
+ // preset+visual-proof+seam+coverage
4004
4163
  "expo-image-manipulator",
4005
4164
  // coverage
4006
4165
  "expo-image-picker",
4007
- // preset+coverage
4166
+ // preset+seam+coverage
4008
4167
  "expo-insights",
4009
4168
  // coverage
4010
4169
  "expo-intent-launcher",
4011
4170
  // visual-proof
4012
4171
  "expo-keep-awake",
4013
4172
  // coverage
4173
+ "expo-key-event",
4174
+ // seam
4014
4175
  "expo-linear-gradient",
4015
4176
  // preset+visual-proof+coverage
4016
4177
  "expo-linking",
4017
- // preset+coverage
4178
+ // preset+seam+coverage
4018
4179
  "expo-local-authentication",
4019
- // coverage
4180
+ // seam+coverage
4020
4181
  "expo-localization",
4021
4182
  // coverage
4022
4183
  "expo-mail-composer",
4023
4184
  // visual-proof
4185
+ "expo-maps",
4186
+ // seam
4187
+ "expo-media-control",
4188
+ // seam
4024
4189
  "expo-media-library",
4025
- // coverage
4190
+ // seam+coverage
4026
4191
  "expo-mesh-gradient",
4027
4192
  // coverage
4028
4193
  "expo-modules-core",
@@ -4030,19 +4195,27 @@ var init_supported_native_packages = __esm({
4030
4195
  "expo-network",
4031
4196
  // preset+visual-proof+coverage
4032
4197
  "expo-notifications",
4033
- // preset+coverage
4198
+ // preset+seam+coverage
4199
+ "expo-passkey",
4200
+ // seam
4201
+ "expo-paste-input",
4202
+ // seam
4203
+ "expo-pip",
4204
+ // seam
4034
4205
  "expo-print",
4035
4206
  // visual-proof
4036
4207
  "expo-screen-capture",
4037
4208
  // visual-proof
4038
4209
  "expo-screen-corner-radius",
4039
- // coverage
4210
+ // seam+coverage
4040
4211
  "expo-screen-orientation",
4041
4212
  // visual-proof+coverage
4042
4213
  "expo-secure-store",
4043
4214
  // visual-proof+coverage
4044
4215
  "expo-sensors",
4045
4216
  // visual-proof
4217
+ "expo-share-extension",
4218
+ // seam
4046
4219
  "expo-sharing",
4047
4220
  // visual-proof
4048
4221
  "expo-sms",
@@ -4050,43 +4223,49 @@ var init_supported_native_packages = __esm({
4050
4223
  "expo-speech",
4051
4224
  // visual-proof
4052
4225
  "expo-speech-recognition",
4053
- // preset
4226
+ // preset+seam
4054
4227
  "expo-splash-screen",
4055
4228
  // visual-proof+coverage
4056
4229
  "expo-sqlite",
4057
4230
  // preset+coverage
4231
+ "expo-squircle-view",
4232
+ // seam
4058
4233
  "expo-store-review",
4059
4234
  // visual-proof+coverage
4060
4235
  "expo-symbols",
4061
4236
  // coverage
4062
4237
  "expo-system-ui",
4063
- // coverage
4238
+ // seam+coverage
4064
4239
  "expo-task-manager",
4065
4240
  // visual-proof+coverage
4066
4241
  "expo-testflight",
4067
- // coverage
4242
+ // seam+coverage
4068
4243
  "expo-tracking-transparency",
4069
- // visual-proof+coverage
4244
+ // visual-proof+seam+coverage
4070
4245
  "expo-updates",
4071
- // preset+coverage
4246
+ // preset+seam+coverage
4072
4247
  "expo-video",
4073
- // visual-proof
4248
+ // visual-proof+seam
4249
+ "expo-video-metadata",
4250
+ // seam
4074
4251
  "expo-video-thumbnails",
4075
4252
  // visual-proof
4076
4253
  "expo-web-browser",
4077
- // preset
4254
+ // preset+seam
4255
+ "expo-widgets",
4256
+ // seam
4078
4257
  "expo-winter-fetch",
4079
4258
  // coverage
4080
4259
  "expo-winter-formdata",
4081
4260
  // coverage
4082
4261
  "group-ib-fp",
4083
- // coverage
4262
+ // seam+coverage
4084
4263
  "gt-react-native",
4085
- // coverage
4264
+ // seam+coverage
4086
4265
  "jail-monkey",
4087
4266
  // coverage
4088
4267
  "lottie-react-native",
4089
- // coverage
4268
+ // seam+coverage
4090
4269
  "mixpanel-react-native",
4091
4270
  // coverage
4092
4271
  "newrelic-react-native-agent",
@@ -4094,205 +4273,479 @@ var init_supported_native_packages = __esm({
4094
4273
  "posthog-react-native",
4095
4274
  // preset+coverage
4096
4275
  "posthog-react-native-session-replay",
4097
- // preset+coverage
4276
+ // preset+seam+coverage
4277
+ "pushy-react-native",
4278
+ // seam
4098
4279
  "react-native",
4099
4280
  // preset+visual-proof+coverage
4281
+ "react-native-a11y-container",
4282
+ // seam
4100
4283
  "react-native-actions-shortcuts",
4101
- // coverage
4284
+ // seam+coverage
4102
4285
  "react-native-adjust",
4103
4286
  // coverage
4104
4287
  "react-native-aes-crypto",
4105
- // coverage
4288
+ // seam+coverage
4106
4289
  "react-native-aes-gcm-crypto",
4107
- // coverage
4290
+ // seam+coverage
4108
4291
  "react-native-amplitude-analytics",
4109
4292
  // coverage
4293
+ "react-native-app-auth",
4294
+ // seam
4295
+ "react-native-app-logs",
4296
+ // seam
4297
+ "react-native-app-review",
4298
+ // seam
4299
+ "react-native-appearance-control",
4300
+ // seam
4301
+ "react-native-apple-ads-attribution",
4302
+ // seam
4110
4303
  "react-native-appsflyer",
4111
4304
  // coverage
4305
+ "react-native-appstack-sdk",
4306
+ // seam
4112
4307
  "react-native-audio-api",
4113
4308
  // coverage
4309
+ "react-native-auto-skeleton",
4310
+ // seam
4311
+ "react-native-background-geolocation",
4312
+ // seam
4114
4313
  "react-native-background-timer",
4115
- // coverage
4314
+ // seam+coverage
4315
+ "react-native-background-upload",
4316
+ // seam
4317
+ "react-native-barcode-creator",
4318
+ // seam
4319
+ "react-native-blasted-image",
4320
+ // seam
4116
4321
  "react-native-blob-util",
4117
4322
  // coverage
4118
4323
  "react-native-blue-crypto",
4119
- // coverage
4324
+ // seam+coverage
4325
+ "react-native-bluetooth-status",
4326
+ // seam
4327
+ "react-native-blur-view",
4328
+ // seam
4329
+ "react-native-blurhash",
4330
+ // seam
4120
4331
  "react-native-bootsplash",
4121
- // preset+coverage
4332
+ // preset+seam+coverage
4122
4333
  "react-native-bottom-tabs",
4123
4334
  // preset+visual-proof
4124
4335
  "react-native-branch",
4125
4336
  // coverage
4337
+ "react-native-calendar-events",
4338
+ // seam
4339
+ "react-native-cashfree-pg-sdk",
4340
+ // seam
4341
+ "react-native-cloud-storage",
4342
+ // seam
4343
+ "react-native-cloud-store",
4344
+ // seam
4345
+ "react-native-compass-heading",
4346
+ // seam
4347
+ "react-native-compressor",
4348
+ // seam
4126
4349
  "react-native-config",
4127
4350
  // coverage
4351
+ "react-native-config-reader",
4352
+ // seam
4353
+ "react-native-contacts",
4354
+ // seam
4355
+ "react-native-context-menu-view",
4356
+ // seam
4357
+ "react-native-create-thumbnail",
4358
+ // seam
4359
+ "react-native-credentials-manager",
4360
+ // seam
4361
+ "react-native-dark-mode",
4362
+ // seam
4128
4363
  "react-native-date-picker",
4129
- // coverage
4364
+ // seam+coverage
4130
4365
  "react-native-default-preference",
4131
- // coverage
4366
+ // seam+coverage
4367
+ "react-native-detector",
4368
+ // seam
4369
+ "react-native-device-attest",
4370
+ // seam
4371
+ "react-native-device-country",
4372
+ // seam
4132
4373
  "react-native-device-info",
4133
- // coverage
4374
+ // seam+coverage
4375
+ "react-native-ease",
4376
+ // seam
4377
+ "react-native-edge-fade",
4378
+ // seam
4134
4379
  "react-native-edge-to-edge",
4135
- // coverage
4380
+ // seam+coverage
4381
+ "react-native-emoji-popup",
4382
+ // seam
4383
+ "react-native-enriched",
4384
+ // seam
4385
+ "react-native-enriched-markdown",
4386
+ // seam
4387
+ "react-native-events",
4388
+ // seam
4389
+ "react-native-exception-handler",
4390
+ // seam
4391
+ "react-native-exit-app",
4392
+ // seam
4393
+ "react-native-external-display",
4394
+ // seam
4136
4395
  "react-native-fast-image",
4137
4396
  // coverage
4138
4397
  "react-native-fast-secure-storage",
4139
- // coverage
4398
+ // seam+coverage
4399
+ "react-native-fast-squircle",
4400
+ // seam
4140
4401
  "react-native-fast-trie",
4141
- // coverage
4402
+ // seam+coverage
4403
+ "react-native-fbsdk-next",
4404
+ // seam
4405
+ "react-native-fcm",
4406
+ // seam
4407
+ "react-native-file-logger",
4408
+ // seam
4409
+ "react-native-file-viewer",
4410
+ // seam
4411
+ "react-native-fingerprint-scanner",
4412
+ // seam
4142
4413
  "react-native-fs",
4143
4414
  // coverage
4144
4415
  "react-native-gesture-handler",
4145
4416
  // preset+coverage
4146
4417
  "react-native-get-device-locale",
4147
- // coverage
4418
+ // seam+coverage
4148
4419
  "react-native-get-location",
4149
- // coverage
4420
+ // seam+coverage
4150
4421
  "react-native-get-random-values",
4151
4422
  // coverage
4423
+ "react-native-google-places",
4424
+ // seam
4152
4425
  "react-native-google-play-install-referrer",
4153
4426
  // coverage
4154
4427
  "react-native-gzip",
4155
- // coverage
4428
+ // seam+coverage
4156
4429
  "react-native-haptic-feedback",
4157
4430
  // coverage
4158
4431
  "react-native-headphone-detection",
4159
- // coverage
4432
+ // seam+coverage
4433
+ "react-native-home-indicator",
4434
+ // seam
4435
+ "react-native-http-bridge-refurbished",
4436
+ // seam
4160
4437
  "react-native-idle-timer",
4161
- // coverage
4438
+ // seam+coverage
4439
+ "react-native-image-colors",
4440
+ // seam
4162
4441
  "react-native-image-picker",
4163
- // coverage
4442
+ // seam+coverage
4164
4443
  "react-native-image-size",
4165
- // coverage
4444
+ // seam+coverage
4166
4445
  "react-native-in-app-review",
4167
- // coverage
4446
+ // seam+coverage
4447
+ "react-native-inappbrowser-reborn",
4448
+ // seam
4449
+ "react-native-intercom",
4450
+ // seam
4451
+ "react-native-job-queue",
4452
+ // seam
4168
4453
  "react-native-keep-awake",
4169
- // coverage
4454
+ // seam+coverage
4170
4455
  "react-native-key-command",
4171
- // coverage
4456
+ // seam+coverage
4172
4457
  "react-native-keyboard-controller",
4173
4458
  // preset+visual-proof+coverage
4174
4459
  "react-native-keychain",
4175
- // coverage
4460
+ // seam+coverage
4461
+ "react-native-keyevent",
4462
+ // seam
4176
4463
  "react-native-keys",
4177
4464
  // coverage
4178
4465
  "react-native-launch-arguments",
4179
4466
  // coverage
4180
4467
  "react-native-linear-gradient",
4181
4468
  // coverage
4469
+ "react-native-linkedin-login",
4470
+ // seam
4182
4471
  "react-native-localize",
4183
4472
  // coverage
4473
+ "react-native-location",
4474
+ // seam
4475
+ "react-native-location-enabler",
4476
+ // seam
4477
+ "react-native-mail",
4478
+ // seam
4184
4479
  "react-native-maps",
4185
4480
  // preset+coverage
4481
+ "react-native-measure-text",
4482
+ // seam
4186
4483
  "react-native-mixpanel",
4187
4484
  // coverage
4188
4485
  "react-native-mmkv",
4189
- // preset+coverage
4486
+ // preset+seam+coverage
4190
4487
  "react-native-mmkv-storage",
4191
4488
  // coverage
4489
+ "react-native-month-year-picker",
4490
+ // seam
4491
+ "react-native-multiple-modals",
4492
+ // seam
4192
4493
  "react-native-nano-icons",
4193
- // coverage
4494
+ // seam+coverage
4495
+ "react-native-navigation",
4496
+ // seam
4194
4497
  "react-native-nitro-buffer",
4195
- // coverage
4498
+ // seam+coverage
4499
+ "react-native-nitro-device-info",
4500
+ // seam
4501
+ "react-native-nitro-fetch",
4502
+ // seam
4503
+ "react-native-nitro-geocoder",
4504
+ // seam
4505
+ "react-native-nitro-geolocation",
4506
+ // seam
4507
+ "react-native-nitro-image",
4508
+ // seam
4509
+ "react-native-nitro-modules",
4510
+ // seam
4511
+ "react-native-nitro-sound",
4512
+ // seam
4513
+ "react-native-nitro-sse",
4514
+ // seam
4196
4515
  "react-native-nitro-text-decoder",
4197
- // coverage
4516
+ // seam+coverage
4198
4517
  "react-native-nitro-totp",
4199
- // coverage
4518
+ // seam+coverage
4519
+ "react-native-nitro-web-image",
4520
+ // seam
4521
+ "react-native-nitro-websockets",
4522
+ // seam
4200
4523
  "react-native-notification-badge",
4201
- // coverage
4524
+ // seam+coverage
4525
+ "react-native-notification-sounds",
4526
+ // seam
4527
+ "react-native-notifications",
4528
+ // seam
4529
+ "react-native-ometria",
4530
+ // seam
4531
+ "react-native-onesignal",
4532
+ // seam
4533
+ "react-native-orientation-director",
4534
+ // seam
4535
+ "react-native-orientation-locker",
4536
+ // seam
4537
+ "react-native-orientation-manager",
4538
+ // seam
4539
+ "react-native-orientation-turbo",
4540
+ // seam
4541
+ "react-native-os",
4542
+ // seam
4543
+ "react-native-ota-hot-update",
4544
+ // seam
4202
4545
  "react-native-pager-view",
4203
4546
  // preset+visual-proof
4547
+ "react-native-palette-full",
4548
+ // seam
4204
4549
  "react-native-pdf",
4205
4550
  // coverage
4551
+ "react-native-pdf-from-image",
4552
+ // seam
4553
+ "react-native-pdf-light",
4554
+ // seam
4555
+ "react-native-performance-limiter",
4556
+ // seam
4206
4557
  "react-native-permissions",
4207
- // coverage
4558
+ // seam+coverage
4208
4559
  "react-native-photo-manipulator",
4209
- // coverage
4560
+ // seam+coverage
4561
+ "react-native-pkce-challenge",
4562
+ // seam
4563
+ "react-native-print",
4564
+ // seam
4565
+ "react-native-pulsar",
4566
+ // seam
4210
4567
  "react-native-purchases",
4211
- // preset+coverage
4568
+ // preset+seam+coverage
4212
4569
  "react-native-pure-jwt",
4213
- // coverage
4570
+ // seam+coverage
4214
4571
  "react-native-quick-actions",
4215
- // coverage
4572
+ // seam+coverage
4216
4573
  "react-native-quick-base64",
4217
- // coverage
4574
+ // seam+coverage
4218
4575
  "react-native-quick-crypto",
4219
- // coverage
4576
+ // seam+coverage
4220
4577
  "react-native-randombytes",
4221
- // coverage
4578
+ // seam+coverage
4579
+ "react-native-rate",
4580
+ // seam
4581
+ "react-native-rate-app",
4582
+ // seam
4222
4583
  "react-native-reanimated",
4223
4584
  // preset+visual-proof+coverage
4585
+ "react-native-receive-sharing-intent",
4586
+ // seam
4587
+ "react-native-record-screen",
4588
+ // seam
4224
4589
  "react-native-restart",
4225
4590
  // coverage
4226
4591
  "react-native-restart-newarch",
4227
4592
  // coverage
4593
+ "react-native-rsa-native",
4594
+ // seam
4228
4595
  "react-native-rsa-signer",
4229
- // coverage
4596
+ // seam+coverage
4597
+ "react-native-safari-view",
4598
+ // seam
4230
4599
  "react-native-safe-area-context",
4231
4600
  // preset+visual-proof+coverage
4232
4601
  "react-native-screen-corner-radius",
4233
- // coverage
4602
+ // seam+coverage
4234
4603
  "react-native-screens",
4235
4604
  // preset+visual-proof+coverage
4605
+ "react-native-screenshot-aware",
4606
+ // seam
4236
4607
  "react-native-securerandom",
4237
- // coverage
4608
+ // seam+coverage
4238
4609
  "react-native-settings",
4239
- // coverage
4610
+ // seam+coverage
4611
+ "react-native-sfsymbols",
4612
+ // seam
4613
+ "react-native-shake",
4614
+ // seam
4240
4615
  "react-native-share",
4241
- // coverage
4616
+ // seam+coverage
4617
+ "react-native-shared-group-preferences",
4618
+ // seam
4242
4619
  "react-native-shiki-engine",
4243
- // coverage
4620
+ // seam+coverage
4621
+ "react-native-signature-capture",
4622
+ // seam
4623
+ "react-native-simple-biometrics",
4624
+ // seam
4244
4625
  "react-native-simple-toast",
4245
4626
  // coverage
4246
4627
  "react-native-smart-splash-screen",
4247
- // coverage
4628
+ // seam+coverage
4629
+ "react-native-snackbar",
4630
+ // seam
4631
+ "react-native-social-share",
4632
+ // seam
4633
+ "react-native-sound",
4634
+ // seam
4635
+ "react-native-sound-player",
4636
+ // seam
4637
+ "react-native-speech-recognition-kit",
4638
+ // seam
4248
4639
  "react-native-splash-screen",
4249
- // coverage
4640
+ // seam+coverage
4641
+ "react-native-splash-view",
4642
+ // seam
4643
+ "react-native-spotlight-search",
4644
+ // seam
4645
+ "react-native-sqlite-2",
4646
+ // seam
4647
+ "react-native-stallion",
4648
+ // seam
4649
+ "react-native-store-age-signals-native-modules",
4650
+ // seam
4651
+ "react-native-store-review",
4652
+ // seam
4250
4653
  "react-native-svg",
4251
- // preset+visual-proof
4654
+ // preset+visual-proof+coverage
4252
4655
  "react-native-system-bars",
4253
- // coverage
4656
+ // seam+coverage
4657
+ "react-native-system-setting",
4658
+ // seam
4254
4659
  "react-native-teleport",
4255
4660
  // preset+coverage
4256
4661
  "react-native-testfairy",
4257
- // coverage
4662
+ // seam+coverage
4663
+ "react-native-text-input-mask",
4664
+ // seam
4665
+ "react-native-text-size",
4666
+ // seam
4667
+ "react-native-tiktok",
4668
+ // seam
4258
4669
  "react-native-tiktok-business-sdk",
4259
4670
  // coverage
4260
4671
  "react-native-timezone",
4261
- // coverage
4672
+ // seam+coverage
4673
+ "react-native-tooltip",
4674
+ // seam
4675
+ "react-native-touch-id",
4676
+ // seam
4677
+ "react-native-track-player",
4678
+ // seam
4679
+ "react-native-tts",
4680
+ // seam
4262
4681
  "react-native-turbo-haptics",
4263
- // coverage
4682
+ // seam+coverage
4683
+ "react-native-turbo-mock-location-detector",
4684
+ // seam
4685
+ "react-native-turbo-preferences",
4686
+ // seam
4264
4687
  "react-native-uitextview",
4265
4688
  // visual-proof+coverage
4266
4689
  "react-native-ulid-jsi",
4267
- // coverage
4690
+ // seam+coverage
4268
4691
  "react-native-ux-cam",
4269
- // coverage
4692
+ // seam+coverage
4270
4693
  "react-native-vector-icons",
4271
- // coverage
4694
+ // seam+coverage
4695
+ "react-native-version-check",
4696
+ // seam
4272
4697
  "react-native-version-info",
4273
- // coverage
4698
+ // seam+coverage
4274
4699
  "react-native-version-number",
4275
- // coverage
4700
+ // seam+coverage
4276
4701
  "react-native-video",
4277
4702
  // coverage
4703
+ "react-native-video-cache",
4704
+ // seam
4705
+ "react-native-video-duration",
4706
+ // seam
4707
+ "react-native-view-pdf",
4708
+ // seam
4278
4709
  "react-native-vision-camera",
4279
4710
  // coverage
4711
+ "react-native-vlc-media-player",
4712
+ // seam
4713
+ "react-native-vosk",
4714
+ // seam
4280
4715
  "react-native-webgpu",
4281
4716
  // preset
4282
4717
  "react-native-webp-format",
4283
4718
  // coverage
4284
4719
  "react-native-webview",
4285
- // preset+visual-proof
4720
+ // preset+visual-proof+seam
4721
+ "react-native-widget-picker",
4722
+ // seam
4723
+ "react-native-wifi-p2p",
4724
+ // seam
4286
4725
  "react-native-worklets",
4287
4726
  // preset+coverage
4288
4727
  "react-native-xxhash",
4289
- // coverage
4728
+ // seam+coverage
4729
+ "react-native-youtube",
4730
+ // seam
4731
+ "react-native-zip-archive",
4732
+ // seam
4733
+ "rive-react-native",
4734
+ // seam
4735
+ "rn-apple-healthkit",
4736
+ // seam
4737
+ "rn-date-format",
4738
+ // seam
4739
+ "rn-fade-wrapper",
4740
+ // seam
4290
4741
  "rn-fetch-blob",
4291
4742
  // coverage
4292
4743
  "rollbar-react-native",
4293
- // coverage
4294
- "sift-react-native"
4295
- // coverage
4744
+ // seam+coverage
4745
+ "sift-react-native",
4746
+ // seam+coverage
4747
+ "whisper.rn"
4748
+ // seam
4296
4749
  ];
4297
4750
  }
4298
4751
  });
@@ -4648,8 +5101,8 @@ var init_registry = __esm({
4648
5101
  id: "sheets-and-modal-geometry",
4649
5102
  usage: 2,
4650
5103
  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."
5104
+ estimate: 0.95,
5105
+ rationale: "Initial detents, sheet geometry, corner radius, grabber, undimmed range and dismissal work. Numeric-detent dragging, nearest settling, content interception and larger-detent scrolling, selected geometry and dimming, collapse callbacks, and guarded dismissal close most interaction gaps. The remaining 5% covers velocity and spring fidelity, pointer cancellation, fit-to-content and non-numeric modes, numeric 1.0 native geometry, and expandsWhenScrolledToEdge."
4653
5106
  },
4654
5107
  {
4655
5108
  id: "tabs-freeze-and-overlay",
@@ -4661,8 +5114,8 @@ var init_registry = __esm({
4661
5114
  ],
4662
5115
  capabilityCoverage: CAPABILITY_INVENTORY_PACKAGE_COVERAGE["react-native-screens"],
4663
5116
  note: "screen container, stack, header config, search bar, navigation props",
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",
4665
- missing: "interactive drag between formSheet detents"
5117
+ 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, numeric-detent dragging and settling, eligible content scrolling, detent callbacks, guarded dismissal 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",
5118
+ missing: "native velocity and spring fidelity, pointer cancellation, fit-to-content and non-numeric detents, numeric 1.0 native geometry, and expandsWhenScrolledToEdge remain incomplete or unverified"
4666
5119
  }
4667
5120
  ]
4668
5121
  },
@@ -4738,15 +5191,15 @@ var init_registry = __esm({
4738
5191
  id: "definitions-references-and-clipping",
4739
5192
  usage: 2,
4740
5193
  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."
5194
+ estimate: 0.95,
5195
+ rationale: "Defs, Use, Symbol, Mask, ClipPath, Pattern fills and Marker geometry render. The remaining 5% judgment allowance covers absent ForeignObject content, limited marker hosts and unverified context paint inheritance, and pattern non-scaling strokes using the tile matrix."
4743
5196
  },
4744
5197
  {
4745
5198
  id: "text-and-text-paths",
4746
5199
  usage: 1,
4747
5200
  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."
5201
+ estimate: 0.92,
5202
+ rationale: "Text, TSpan and shaped TextPath glyphs render, including offsets, anchors, curves and spans. The remaining 8% judgment allowance covers advanced path text layout, per-glyph positioning, objectBoundingBox paints and font or emoji fallback parity."
4750
5203
  },
4751
5204
  {
4752
5205
  id: "xml-and-document-helpers",
@@ -4759,14 +5212,14 @@ var init_registry = __esm({
4759
5212
  id: "filters-and-imperative-geometry",
4760
5213
  usage: 1,
4761
5214
  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."
5215
+ estimate: 0.25,
5216
+ rationale: "getTotalLength and getPointAtLength implement path metrics for paths and basic shapes, including curves, arcs, clamping and detached refs. This receives 25% of the grouped feature. Filters, native export, bounding boxes, matrices and point-in-fill/stroke remain unsupported; invalid-path points return zero where native returns NaN."
4764
5217
  }
4765
5218
  ],
4766
5219
  capabilityCoverage: CAPABILITY_INVENTORY_PACKAGE_COVERAGE["react-native-svg"],
4767
- note: "CanvasKit rendering for shapes, text, XML, gradients, references, masks, clipping, and images; native SVG filters and geometry queries are unsupported",
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",
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"
5220
+ note: "CanvasKit rendering for shapes, text, XML, gradients, references, masks, clipping, and images; path metrics are implemented; native SVG filters, export and other geometry queries remain unsupported",
5221
+ working: "Svg, Path, Circle, Rect, Line, Ellipse, Polygon, Polyline, G, Text, TSpan, TextPath shaped glyphs along referenced paths, Defs, Pattern fills, Marker geometry on paths/lines/polylines/polygons, 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, getTotalLength and getPointAtLength for Path, Line, Rect including rounded corners, Circle, Ellipse, Polygon and Polyline, shape transforms, fill/stroke/opacity/dasharray, currentColor, viewBox scaling",
5222
+ missing: "native SVG filter components and toDataURL, hit-testing, bounding-box, and matrix methods refuse calls; invalid-path points differ from native NaN; ForeignObject does not render; marker context paints remain unverified; TextPath advanced layout, per-glyph positioning and objectBoundingBox paints are unsupported; pattern non-scaling strokes use the tile matrix; no font or emoji fallback parity claim"
4770
5223
  }
4771
5224
  ]
4772
5225
  },
@@ -4789,8 +5242,8 @@ var init_registry = __esm({
4789
5242
  id: "batched-operations",
4790
5243
  usage: 3,
4791
5244
  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"
5245
+ estimate: 1,
5246
+ rationale: "upstream batch reads preserve null for absent keys and empty strings for stored values; batch writes run through the tenant storage seam"
4794
5247
  },
4795
5248
  {
4796
5249
  id: "merge-json",
@@ -4815,8 +5268,7 @@ var init_registry = __esm({
4815
5268
  }
4816
5269
  ],
4817
5270
  capabilityCoverage: CAPABILITY_INVENTORY_PACKAGE_COVERAGE["@react-native-async-storage/async-storage"],
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"
5271
+ note: "native-seam only \u2014 upstream AsyncStorage JS runs from the bundle and resolves RNCAsyncStorage, which persists through tenant localStorage"
4820
5272
  }
4821
5273
  ]
4822
5274
  },
@@ -4847,8 +5299,8 @@ var init_registry = __esm({
4847
5299
  id: "navigation-controls",
4848
5300
  usage: 3,
4849
5301
  importance: 3,
4850
- estimate: 0.62,
4851
- rationale: "reload and injection work, while history, stop, interception, and failed-navigation behavior are incomplete"
5302
+ estimate: 0.7,
5303
+ rationale: "Reload and injection work. HTML fragment navigation now follows the observed iOS URL and callback sequence, and local link requests expose decisions with matching payloads. The remaining 30% judgment allowance retains initial-load interception, remote history, stop-loading, failed navigation and form requests."
4852
5304
  },
4853
5305
  {
4854
5306
  id: "layout-scroll-presentation",
@@ -4874,9 +5326,9 @@ var init_registry = __esm({
4874
5326
  ],
4875
5327
  capabilityCoverage: CAPABILITY_INVENTORY_PACKAGE_COVERAGE["react-native-webview"],
4876
5328
  strictCoverage: REACT_NATIVE_WEBVIEW_STRICT_COVERAGE,
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.",
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",
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"
5329
+ 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, local HTML fragment navigation and link-request decisions, content scrolling, parent translation, and onOpenWindow target delivery.",
5330
+ 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, local HTML fragment URL/callback behavior, onShouldStartLoadWithRequest for local link clicks with native-shaped request and loading payloads, internal content scrolling, renderLoading, javaScriptEnabled sandbox, layout, inherited clipping and visibility, parked/live presentation",
5331
+ 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); initial-load and form onShouldStartLoadWithRequest callbacks, allowsBackForwardNavigationGestures, userAgent, dataDetectorTypes, cacheEnabled, incognito, scalesPageToFit, originWhitelist enforcement"
4880
5332
  }
4881
5333
  ]
4882
5334
  },
@@ -4954,42 +5406,42 @@ var init_registry = __esm({
4954
5406
  id: "status-observation",
4955
5407
  usage: 3,
4956
5408
  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"
5409
+ estimate: 1,
5410
+ rationale: "upstream fetch, hooks, and listeners receive the host network snapshot, including the initial subscription notification"
4959
5411
  },
4960
5412
  {
4961
5413
  id: "global-singleton",
4962
5414
  usage: 3,
4963
5415
  importance: 3,
4964
- estimate: 0.7,
4965
- rationale: "the facade supplies fetch and listeners but omits configure and refresh from the upstream singleton"
5416
+ estimate: 1,
5417
+ rationale: "the published singleton supplies configure, fetch, refresh, and subscription replacement over the native network seam"
4966
5418
  },
4967
5419
  {
4968
5420
  id: "hooks",
4969
5421
  usage: 3,
4970
5422
  importance: 2,
4971
- estimate: 0.55,
4972
- rationale: "useNetInfo works, while useNetInfoInstance and configuration handling are absent"
5423
+ estimate: 1,
5424
+ rationale: "published useNetInfo and useNetInfoInstance retain configuration, refresh, pause, resume, and subscription cleanup"
4973
5425
  },
4974
5426
  {
4975
5427
  id: "state-fidelity",
4976
5428
  usage: 2,
4977
5429
  importance: 2,
4978
- estimate: 0.55,
4979
- rationale: "type is reduced to wifi or none and details is always null"
5430
+ estimate: 0.75,
5431
+ rationale: "browser transport hints and data-saving state populate the upstream snapshot; native network identifiers and metrics remain unavailable, and reachability follows navigator.onLine"
4980
5432
  },
4981
5433
  {
4982
5434
  id: "public-enums",
4983
5435
  usage: 1,
4984
5436
  importance: 1,
4985
5437
  estimate: 1,
4986
- rationale: "The public runtime state-type enum is present; TypeScript-only exports do not require runtime implementations."
5438
+ rationale: "upstream NetInfoStateType and NetInfoCellularGeneration runtime enums are present"
4987
5439
  }
4988
5440
  ],
4989
5441
  capabilityCoverage: CAPABILITY_INVENTORY_PACKAGE_COVERAGE["@react-native-community/netinfo"],
4990
- note: "navigator.onLine backed with online/offline event listeners",
4991
- working: "fetch, useNetInfo, addEventListener, NetInfoStateType",
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"'
5442
+ note: "published upstream JavaScript runs over the host-backed RNCNetInfo native seam; feature estimates cover browser-hosted network behavior",
5443
+ working: "fetch, refresh, configure, initial and subsequent listener notifications, useNetInfo, useNetInfoInstance, and upstream runtime enums",
5444
+ missing: "native network identifiers and metrics are unavailable; transport hints depend on browser support, and default Internet reachability mirrors navigator.onLine rather than probing a remote endpoint"
4993
5445
  }
4994
5446
  ]
4995
5447
  },
@@ -5034,14 +5486,14 @@ var init_registry = __esm({
5034
5486
  id: "keyboard-native-views-and-toolbar",
5035
5487
  usage: 1,
5036
5488
  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."
5489
+ estimate: 0.55,
5490
+ rationale: "KeyboardExtender hosts persistent interactive content above the keyboard, reserves its measured height in the parent, reacts to resizing and enable changes, and takes precedence over named accessories. KeyboardToolbar.Group scopes focus navigation and focusDidSet coordinates. OverKeyboardView hosts interactive content in its show-time app or keyboard window with retained focus and real browser pointer delivery. These three workflows receive 55% of the grouped feature, retaining deductions for extender keyboard-frame metrics and exact native geometry, toolbar eligibility for hidden or zero-size inputs, and unverified native-window fidelity. Background effects and clipping remain absent."
5039
5491
  }
5040
5492
  ],
5041
5493
  capabilityCoverage: CAPABILITY_INVENTORY_PACKAGE_COVERAGE["react-native-keyboard-controller"],
5042
5494
  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",
5043
5495
  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",
5044
- missing: "OverKeyboardView, KeyboardBackgroundView, KeyboardExtender, ClippingScrollView, and KeyboardToolbarGroupView are passthrough views without their native platform effects"
5496
+ missing: "KeyboardBackgroundView and ClippingScrollView lack their native platform effects; OverKeyboardView native-window fidelity beyond the observed iOS browser cases remains unverified; KeyboardExtender does not include accessory height in keyboard-frame metrics and exact native geometry remains incomplete; toolbar focus eligibility excludes hidden or zero-size inputs that native iOS counts"
5045
5497
  }
5046
5498
  ]
5047
5499
  },
@@ -5307,10 +5759,10 @@ var init_registry = __esm({
5307
5759
  versions: [
5308
5760
  {
5309
5761
  range: ">=12.0.0",
5310
- coverage: 0.65,
5311
- note: "the published package runs unchanged; openBrowserAsync hands the URL to the host browser, browser-list and lifecycle methods preserve their public result shapes, and an auth popup that the hosted worker cannot retain resolves with a clean cancel result instead of throwing. the 65% score reflects those observed browser-hosted behaviors, not a working native auth-session controller.",
5312
- working: "openBrowserAsync host handoff, dismissBrowser result, warmUpAsync, coolDownAsync, mayInitWithUrlAsync, published non-Android getCustomTabsSupportingBrowsersAsync shape with empty arrays and undefined browser packages, clean auth-session cancel when the hosted worker cannot retain its popup, maybeCompleteAuthSession status, and upstream enums and option processing",
5313
- missing: "an embedded SFSafariViewController or Chrome Custom Tab, closing the host browser tab from dismissBrowser, retaining an auth popup for successful callback and redirect delivery, cookie isolation, and native styling controls"
5762
+ coverage: 0.8,
5763
+ note: "the published package runs unchanged; ordinary browser opens hand off to the host, and host-owned auth sessions deliver successful callback URLs, explicit user cancellation, programmatic dismissal, and replacement. the 80% implementation estimate follows the mounted published-package test under cross-origin isolation and ordinary popup blocking; native browser presentation and unrestricted redirect schemes remain unsupported.",
5764
+ working: "openBrowserAsync host handoff, dismissBrowser result, warmUpAsync, coolDownAsync, mayInitWithUrlAsync, published non-Android getCustomTabsSupportingBrowsersAsync shape, openAuthSessionAsync success with callback URL, explicit host Cancel Sign-In, dismissAuthSession and replacement dismissal, identity-matched callback and control cleanup, preservation of guest alerts during sign-in, and upstream enums and option processing",
5765
+ missing: "embedded SFSafariViewController or Chrome Custom Tab, native styling and cookie isolation, closing an ordinary handed-off host tab from dismissBrowser, custom-scheme or foreign-origin auth callbacks, and observing abandonment after browser isolation severs the popup proxy. auth requires a same-origin HTTP(S) callback and user activation allowed by popup policy; an abandoned isolated provider requires the visible host cancel control"
5314
5766
  }
5315
5767
  ]
5316
5768
  },
@@ -9177,10 +9629,11 @@ var init_registry = __esm({
9177
9629
  stubType: "native",
9178
9630
  versions: [
9179
9631
  {
9180
- range: ">=1.0.0",
9632
+ range: ">=0.4.0",
9181
9633
  coverage: 0.65,
9182
- note: "native seam for EnrichedMarkdownText/EnrichedMarkdown/EnrichedMarkdownTextInput generated host components; upstream JS wrapper and Streamdown integration run unchanged",
9183
- missing: "native MD4C fidelity, selection menus, spoilers, math, images, and editable rich-markdown commands are simplified"
9634
+ note: "native seam for the EnrichedMarkdownText/EnrichedMarkdown/EnrichedMarkdownTextInput generated host components; the upstream JS wrapper, its style normalization, and the Streamdown integration run unchanged",
9635
+ working: "markdown parsed and rendered into real text and view hosts with upstream's normalized markdownStyle applied: paragraphs, h1-h6 at their default sizes and colors, bold/italic/strikethrough/underline, inline code and code blocks, blockquotes, ordered and unordered lists, task-list markers, links with onLinkPress, thematic breaks, tables with upstream's header, cell padding, and alternating row colors, block and inline images, plus selectable text and the imperative command surface",
9636
+ missing: "MD4C parsing fidelity (markdown-to-jsx handles the grammar instead), so unusual constructs can differ; native selection menus, spoilers, and math are absent, and the editable rich-markdown commands are accepted without changing the buffer"
9184
9637
  }
9185
9638
  ]
9186
9639
  },
@@ -10273,6 +10726,175 @@ var init_registry = __esm({
10273
10726
  }
10274
10727
  ]
10275
10728
  },
10729
+ "whisper.rn": {
10730
+ category: "ML",
10731
+ stubType: "native",
10732
+ versions: [
10733
+ {
10734
+ range: ">=0.6.0",
10735
+ coverage: 0.3,
10736
+ note: "native-seam only: RNWhisper.install() mounts all fourteen JSI bindings so the package's own JS runs, but transcripts come from the host speech recognizer instead of a whisper model",
10737
+ working: "package load and JSI binding handshake, getConstants, context and VAD context init/release lifecycle, transcribeFile/transcribeData resolving TranscribeResult shapes, onProgress and onNewSegments callbacks, abortTranscribe, bench, toggleNativeLog, and RealtimeTranscriber delivering real text through the browser SpeechRecognition API",
10738
+ missing: "no whisper.cpp/ggml runtime, so the declared model file is never loaded \u2014 no CoreML or GPU acceleration, model-derived segment timings, token timestamps, tinydiarize, beam/temperature decoding options, language auto-detect, or real VAD speech probabilities"
10739
+ }
10740
+ ]
10741
+ },
10742
+ "@fugood/react-native-audio-pcm-stream": {
10743
+ category: "Media",
10744
+ stubType: "native",
10745
+ versions: [
10746
+ {
10747
+ range: ">=1.0.0",
10748
+ coverage: 0.25,
10749
+ note: "native-seam only: the RNLiveAudioStream recorder lifecycle and data events run, but the frames carry silence because the worker has no microphone capture path",
10750
+ working: "the published AudioRecord wrapper unchanged \u2014 init stores sampleRate/channels/bitsPerSample/audioSource/bufferSize, start begins a steady 'data' cadence through NativeEventEmitter and starts the host speech recognizer, stop ends both, and each frame is base64 of the configured buffer size",
10751
+ missing: "frames are silence rather than microphone PCM, so amplitude, level metering, and waveform analysis read zero; wavFile writing and audioSource routing have no effect"
10752
+ }
10753
+ ]
10754
+ },
10755
+ "react-native-edge-fade": {
10756
+ category: "UI Components",
10757
+ stubType: "native",
10758
+ versions: [
10759
+ {
10760
+ range: ">=0.1.0",
10761
+ coverage: 0.85,
10762
+ note: "native-seam only: the published JS wrapper runs unchanged over an EdgeFadeView host component that reproduces the native curve tables and all three fade modes",
10763
+ working: "fadeTop/fadeBottom/fadeLeft/fadeRight on all four edges at once, the curveTop/curveBottom/curveLeft/curveRight presets and comma-separated custom alpha stops sampled from the same tables as the native EdgeFadeCurves, mode='mask' (masked content), mode='overlay' (per-edge or shared overlayColor gradients), mode='blur' (a masked blur band with frostProgression shaping the ramp), fadeRadius corner clipping, and pass-through of every other View prop",
10764
+ missing: "frostSaturation and frostLift are accepted but ignored \u2014 there is no browser vibrancy filter behind the blur band, and the blur is a single Gaussian rather than the native progressive blur stack, so a blurred edge reads slightly flatter than on device"
10765
+ }
10766
+ ]
10767
+ },
10768
+ "@metamask/native-utils": {
10769
+ category: "Auth & Payments",
10770
+ stubType: "native",
10771
+ versions: [
10772
+ {
10773
+ range: ">=0.2.0",
10774
+ coverage: 0.95,
10775
+ note: "native-seam only: the published JS marshalling wrapper runs unchanged over a NativeUtils nitro HybridObject that computes exactly what upstream documents its C++ side to compute",
10776
+ working: "all eight hybrid methods \u2014 multiply, toPublicKey and toPublicKeyFromBytes (secp256k1, compressed and uncompressed), getPublicKeyEd25519 and getPublicKeyEd25519FromBytes, keccak256FromBytes, pubToAddress (with the @ethereumjs/util sanitize branch), and hmacSha512 \u2014 each backed by the @noble implementation upstream states it is byte-identical to, so BIP32 derivation and address computation produce the same bytes as on device",
10777
+ missing: "the native C++ speedup itself: this is the @noble path metamask patches away for performance, so heavy HD-derivation loops run at JavaScript speed"
10778
+ }
10779
+ ]
10780
+ },
10781
+ "@universe/hashcash-native": {
10782
+ category: "Networking",
10783
+ stubType: "native",
10784
+ versions: [
10785
+ {
10786
+ range: ">=0.1.0",
10787
+ coverage: 0.7,
10788
+ note: "native-seam only: the published wrapper runs unchanged over a Hashcash nitro HybridObject that searches the counter range with Web Crypto SHA-256",
10789
+ working: "findProof over the requested rangeStart/rangeSize (defaulting to the challenge maxProofLength), the leading-zero-byte difficulty test, the counter/hashBase64/attempts/timeMs result shape, undefined when the range is exhausted, and cancel stopping the search at the next batch boundary",
10790
+ missing: "the native multi-threaded solver, so a high-difficulty challenge takes far longer on the JavaScript SubtleCrypto path and cancellation only takes effect between 256-counter batches instead of immediately"
10791
+ }
10792
+ ]
10793
+ },
10794
+ "react-native-config-reader": {
10795
+ category: "Device & Platform",
10796
+ stubType: "native",
10797
+ versions: [
10798
+ {
10799
+ range: ">=1.0.0",
10800
+ coverage: 0.4,
10801
+ note: "native-seam only: the package's two-line JS runs unchanged and finds an RNConfigReader module on both platforms, including the iOS BuildConfigs sub-object it dereferences at import",
10802
+ working: "module presence on both platforms so the import never throws, the iOS BuildConfigs branch, and the DEBUG/BUILD_TYPE fields every Android BuildConfig carries \u2014 answered truthfully for a preview build",
10803
+ missing: "the app's own generated BuildConfig fields: upstream reflects whatever gradle declared, which the browser cannot know, so any app-private flag reads back undefined exactly as it would in a build that never declared it"
10804
+ }
10805
+ ]
10806
+ },
10807
+ "react-native-rsa-native": {
10808
+ category: "Auth & Payments",
10809
+ stubType: "native",
10810
+ versions: [
10811
+ {
10812
+ range: ">=2.0.0",
10813
+ coverage: 0.8,
10814
+ note: "native-seam only: the package's `const { RNRSA, RNRSAKeychain } = NativeModules` runs unchanged over real RSA \u2014 Web Crypto for keygen, OAEP, and signing, and BigInt for the PKCS#1 v1.5 encryption Web Crypto omits",
10815
+ working: "RNRSA generate/generateKeys, encrypt/decrypt and encrypt64/decrypt64, sign/verify and their 64 and withAlgorithm variants across the SHA-1/224/256/384/512 signing algorithms, PEM import and export; RNRSAKeychain generate, encrypt/decrypt, sign/verify, and deletePrivateKey against a keyTag",
10816
+ missing: "the OS keychain itself \u2014 keys live in an in-memory map, so they do not survive a reload and gain no Secure Enclave protection; EC keychain keys, generateCSR, and generateCSRWithEC throw an explicit unsupported error"
10817
+ }
10818
+ ]
10819
+ },
10820
+ "@mattermost/rnutils": {
10821
+ category: "Device & Platform",
10822
+ stubType: "native",
10823
+ versions: [
10824
+ {
10825
+ range: ">=0.1.0",
10826
+ coverage: 0.45,
10827
+ note: "native-seam only: the published wrapper runs unchanged over an RNUtils TurboModule that answers window geometry for real and reports a clean unmanaged state elsewhere",
10828
+ working: "getWindowDimensions from the live tenant window and its dimension events, getConstants, the addListener/removeListeners bookkeeping, isRunningInSplitView (false/false), the orientation lock calls, getHasRegisteredLoad/setHasRegisteredLoad, and getRealFilePath/saveFile echoing the path back",
10829
+ missing: "app-group shared directories and database paths are empty strings, so shared-container reads find nothing; deleteDatabaseDirectory, renameDatabase, deleteEntitiesFile, createZipFile, the delivered-notification queries and removals, keyboard resize modes, and setNavigationBarColor are accepted and do nothing"
10830
+ }
10831
+ ]
10832
+ },
10833
+ "@mattermost/react-native-emm": {
10834
+ category: "Device & Platform",
10835
+ stubType: "native",
10836
+ versions: [
10837
+ {
10838
+ range: ">=1.0.0",
10839
+ coverage: 0.35,
10840
+ note: "native-seam only: the published wrapper runs unchanged over an Emm TurboModule reporting the unmanaged, unsecured device state a browser preview actually has",
10841
+ working: "module load and getConstants, getManagedConfig returning an empty policy so the app takes its unmanaged branch, deviceSecureWith reporting no face/fingerprint/passcode, the listener bookkeeping, and setAppGroupId/openSecuritySettings/exitApp accepted without effect",
10842
+ missing: "no EMM policy controller, so a managed configuration is never delivered; authenticate rejects because there is no device credential prompt, and setBlurScreen/applyBlurEffect/removeBlurEffect do not obscure the app in the task switcher"
10843
+ }
10844
+ ]
10845
+ },
10846
+ "@expensify/react-native-hybrid-app": {
10847
+ category: "Device & Platform",
10848
+ stubType: "native",
10849
+ versions: [
10850
+ {
10851
+ range: ">=0.1.0",
10852
+ coverage: 0.5,
10853
+ note: "native-seam only: the published wrapper runs unchanged over a ReactNativeHybridApp TurboModule that reports a standalone (non-hybrid) build, which is what a browser preview is",
10854
+ working: "the full Spec surface loads and every method matches its upstream return type \u2014 isHybridApp() is false so the bundle stays on its standalone branch instead of the legacy-shell path, getHybridAppSettings and getInitialURL resolve null, and the sign-in, sign-out, account-switch, onboarding, and listener calls are accepted",
10855
+ missing: "there is no second native shell to hand off to, so the legacy-app transition, its session and auth-token exchange, and closeReactNativeApp have no effect"
10856
+ }
10857
+ ]
10858
+ },
10859
+ "expo-app-integrity": {
10860
+ category: "Device & Platform",
10861
+ stubType: "native",
10862
+ versions: [
10863
+ {
10864
+ range: ">=0.1.0",
10865
+ coverage: 0.7,
10866
+ note: "native-seam only \u2014 the legacy specifier for @expo/app-integrity, sharing its seam: the published wrapper runs unchanged; the reference iOS simulator reports isSupported=false, and every App Attest call rejects with the upstream ERR_APP_INTEGRITY_FEATURE_UNSUPPORTED code and message",
10867
+ working: "all nine public exports: isSupported=false; generateKeyAsync, attestKeyAsync, and generateAssertionAsync reject with the real iOS-simulator unsupported error; Android-only methods take the upstream wrapper platform-error or false branches on iOS",
10868
+ missing: "real App Attest keys, attestations, and assertions; Android Play Integrity tokens and hardware-backed key attestation"
10869
+ }
10870
+ ]
10871
+ },
10872
+ "@domir/react-native-measure-text": {
10873
+ category: "UI Components",
10874
+ stubType: "native",
10875
+ versions: [
10876
+ {
10877
+ range: ">=0.1.0",
10878
+ coverage: 0.9,
10879
+ note: "native-seam only: the published wrapper runs unchanged over a ReactNativeMeasureText expo module whose synchronous measureWidth uses the same text measurement the layout engine uses, so a measured width matches what renders",
10880
+ working: "synchronous measureWidth(text, style) honouring fontFamily, fontSize, fontWeight, and letterSpacing; the older RNMeasureText TurboModule measure(texts, fontSize, width) with upstream\u2019s invalid_width/invalid_texts/invalid_fontSize rejections",
10881
+ missing: "allowFontScaling is accepted but has no OS text-size setting to scale by, and the legacy TurboModule multi-line heights come from a character-width approximation rather than real line breaking"
10882
+ }
10883
+ ]
10884
+ },
10885
+ "@sparkfabrik/react-native-idfa-aaid": {
10886
+ category: "Analytics",
10887
+ stubType: "native",
10888
+ versions: [
10889
+ {
10890
+ range: ">=0.6.0",
10891
+ coverage: 0.5,
10892
+ note: "native-seam only: the published wrapper runs unchanged and both queries resolve the denied, no-identifier result \u2014 the same answer a device with tracking turned off gives",
10893
+ working: "getAdvertisingInfo and getAdvertisingInfoAndCheckAuthorization resolve { id: null, isAdTrackingLimited: true }, so callers take their tracking-disabled branch and keep ad properties off",
10894
+ missing: "no platform advertising identifier exists in the browser, so an IDFA or AAID is never returned and the iOS tracking-authorization prompt is never shown"
10895
+ }
10896
+ ]
10897
+ },
10276
10898
  "@react-native-community/progress-bar-android": {
10277
10899
  category: "UI Components",
10278
10900
  stubType: "native",
@@ -35352,7 +35974,9 @@ var init_bridge_flow_runner = __esm({
35352
35974
  }
35353
35975
  const matchesId = compile(${JSON.stringify(opts.id)})
35354
35976
  const matchesText = compile(${JSON.stringify(opts.text)})
35355
- const all = ((await test.queryAll({})) || []).filter(
35977
+ const all = ((await test.queryAll(${JSON.stringify(
35978
+ opts.id && !opts.childOf ? { idPattern: opts.id } : {}
35979
+ )})) || []).filter(
35356
35980
  (n) => n && n.absolutePosition && n.layout,
35357
35981
  )
35358
35982
  let candidates = all.filter((n) =>
@@ -35506,8 +36130,10 @@ var init_bridge_flow_runner = __esm({
35506
36130
  return element;
35507
36131
  }
35508
36132
  replayTargetForElement(opts, element, tapTarget) {
36133
+ const id = opts.id ?? tapTarget?.target?.id ?? element.id;
35509
36134
  return {
35510
- id: opts.id ?? tapTarget?.target?.id ?? element.id ?? null,
36135
+ nodeId: tapTarget?.target?.nodeId ?? element.nodeId,
36136
+ id: typeof id === "string" ? id : null,
35511
36137
  testID: opts.id ?? tapTarget?.target?.testID ?? element.testID ?? null,
35512
36138
  text: opts.text ?? tapTarget?.target?.text ?? tapTarget?.target?.accessibilityLabel ?? element.text ?? element.accessibilityLabel ?? null,
35513
36139
  type: tapTarget?.target?.type ?? element.type ?? null
@@ -35567,6 +36193,8 @@ var init_bridge_flow_runner = __esm({
35567
36193
  cy,
35568
36194
  this.replayTargetForElement(opts, current, tapTarget)
35569
36195
  );
36196
+ if (hit?.requestedTargetMatched === false)
36197
+ throw new Error(`tapOn refused: ${JSON.stringify(hit)}`);
35570
36198
  if (hit?.hit === true) {
35571
36199
  await sleep3(300);
35572
36200
  if (!current.isTextInput) return;