rnxsim 0.1.458 → 0.1.460

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/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/cli/drivers/playwright-sim-host.ts +24 -0
  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 +1 -1
  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 +12 -7
  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 +756 -133
  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/host/bridge-host.ts +14 -8
  62. package/src/sim-client.ts +14 -2
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.458 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.460 | (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;
@@ -3848,120 +3848,270 @@ var init_supported_native_packages = __esm({
3848
3848
  SUPPORTED_NATIVE_PACKAGE_NAMES = [
3849
3849
  "@adobe/react-native-aepcore",
3850
3850
  // coverage
3851
+ "@ankipro/react-native-file-open",
3852
+ // seam
3851
3853
  "@aptabase/react-native",
3852
- // coverage
3854
+ // seam+coverage
3855
+ "@attarchi/react-native-lottie-splash-screen",
3856
+ // seam
3857
+ "@bacons/apple-targets",
3858
+ // seam
3859
+ "@baronha/ting",
3860
+ // seam
3853
3861
  "@bitdrift/react-native",
3854
3862
  // coverage
3863
+ "@bittingz/expo-widgets",
3864
+ // seam
3865
+ "@braze/react-native-sdk",
3866
+ // seam
3867
+ "@bsky.app/expo-image-crop-tool",
3868
+ // seam
3855
3869
  "@bsky.app/react-native-mmkv",
3856
- // coverage
3870
+ // seam+coverage
3857
3871
  "@bugfender/rn-bugfender",
3858
- // coverage
3872
+ // seam+coverage
3859
3873
  "@bugsnag/react-native",
3860
3874
  // coverage
3861
3875
  "@bugsnag/react-native-performance",
3862
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
3863
3885
  "@d11/react-native-fast-image",
3864
3886
  // coverage
3887
+ "@dariyd/react-native-document-scanner",
3888
+ // seam
3865
3889
  "@datadog/mobile-react-native",
3866
3890
  // coverage
3891
+ "@dbkable/react-native-speech-to-text",
3892
+ // seam
3867
3893
  "@dimaportenko/react-native-shadow-view",
3868
3894
  // coverage
3895
+ "@domir/react-native-measure-text",
3896
+ // seam+coverage
3869
3897
  "@dr.pogodin/react-native-fs",
3870
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
3871
3907
  "@expo/ui",
3872
3908
  // preset+coverage
3873
3909
  "@expo/ui/community/menu",
3874
3910
  // coverage
3911
+ "@fugood/react-native-audio-pcm-stream",
3912
+ // seam
3875
3913
  "@fullstory/react-native",
3876
- // 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
3877
3921
  "@iterable/expo-plugin",
3878
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
3879
3943
  "@mattermost/react-native-paste-input",
3880
3944
  // coverage
3881
3945
  "@mattermost/react-native-turbo-log",
3882
- // 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
3883
3959
  "@nandorojo/galeria",
3884
- // preset+coverage
3960
+ // preset+seam+coverage
3885
3961
  "@notifee/react-native",
3886
- // coverage
3962
+ // seam+coverage
3963
+ "@nozbe/watermelondb",
3964
+ // seam
3887
3965
  "@op-engineering/op-sqlite",
3888
3966
  // coverage
3967
+ "@pnthach95/react-native-root-view-background",
3968
+ // seam
3889
3969
  "@posthog/react-native-plugin",
3890
- // 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
3891
3979
  "@react-native-async-storage/async-storage",
3892
3980
  // coverage
3981
+ "@react-native-camera-roll/camera-roll",
3982
+ // seam
3983
+ "@react-native-clipboard/clipboard",
3984
+ // seam
3893
3985
  "@react-native-community/checkbox",
3894
3986
  // coverage
3987
+ "@react-native-community/datetimepicker",
3988
+ // seam
3895
3989
  "@react-native-community/geolocation",
3896
- // coverage
3990
+ // seam+coverage
3897
3991
  "@react-native-community/image-editor",
3898
- // coverage
3992
+ // seam+coverage
3899
3993
  "@react-native-community/masked-view",
3900
3994
  // coverage
3901
3995
  "@react-native-community/netinfo",
3902
- // coverage
3996
+ // seam+coverage
3997
+ "@react-native-community/progress-view",
3998
+ // seam
3903
3999
  "@react-native-community/slider",
3904
4000
  // coverage
4001
+ "@react-native-cookies/cookies",
4002
+ // seam
3905
4003
  "@react-native-documents/picker",
3906
4004
  // coverage
4005
+ "@react-native-documents/viewer",
4006
+ // seam
3907
4007
  "@react-native-firebase/analytics",
3908
4008
  // coverage
3909
4009
  "@react-native-firebase/app",
3910
- // coverage
4010
+ // seam+coverage
4011
+ "@react-native-firebase/auth",
4012
+ // seam
3911
4013
  "@react-native-firebase/crashlytics",
3912
- // coverage
4014
+ // seam+coverage
4015
+ "@react-native-firebase/firestore",
4016
+ // seam
4017
+ "@react-native-firebase/functions",
4018
+ // seam
3913
4019
  "@react-native-firebase/perf",
3914
4020
  // coverage
4021
+ "@react-native-firebase/storage",
4022
+ // seam
3915
4023
  "@react-native-masked-view/masked-view",
3916
4024
  // preset+coverage
3917
4025
  "@react-native-menu/menu",
3918
4026
  // coverage
4027
+ "@react-native-ml-kit/barcode-scanning",
4028
+ // seam
4029
+ "@react-native-picker/picker",
4030
+ // seam
3919
4031
  "@rn-org/react-native-shortcuts",
3920
- // coverage
4032
+ // seam+coverage
3921
4033
  "@rocket.chat/mobile-crypto",
3922
- // coverage
4034
+ // seam+coverage
4035
+ "@roman.sytnyk/blur-app-in-recents",
4036
+ // seam
4037
+ "@rudderstack/rudder-integration-amplitude-react-native",
4038
+ // seam
3923
4039
  "@rudderstack/rudder-integration-appcenter-react-native",
3924
- // 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
3925
4049
  "@rudderstack/rudder-sdk-react-native",
3926
4050
  // coverage
4051
+ "@sdcx/pull-to-refresh",
4052
+ // seam
3927
4053
  "@segment/analytics-react-native",
3928
4054
  // coverage
3929
4055
  "@sentry/react-native",
3930
- // coverage
4056
+ // seam+coverage
4057
+ "@shakebugs/react-native-shake",
4058
+ // seam
3931
4059
  "@shopify/flash-list",
3932
4060
  // coverage
3933
4061
  "@shopify/react-native-performance",
3934
4062
  // coverage
3935
4063
  "@shopify/react-native-skia",
3936
4064
  // preset+coverage
4065
+ "@simform_solutions/react-native-audio-waveform",
4066
+ // seam
4067
+ "@sparkfabrik/react-native-idfa-aaid",
4068
+ // seam
3937
4069
  "@splicer97/react-native-mytracker",
3938
- // coverage
4070
+ // seam+coverage
3939
4071
  "@stripe/stripe-react-native",
3940
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
3941
4081
  "@vxrn/native",
3942
- // preset
4082
+ // preset+seam
3943
4083
  "@walletconnect/react-native-compat",
3944
4084
  // coverage
3945
4085
  "@wwdrew/expo-android-shared-preferences",
3946
- // coverage
4086
+ // seam+coverage
4087
+ "amazon-ivs-react-native-player",
4088
+ // seam
3947
4089
  "appcenter",
3948
- // coverage
4090
+ // seam+coverage
4091
+ "appcenter-analytics",
4092
+ // seam
3949
4093
  "burnt",
3950
4094
  // preset+coverage
4095
+ "customerio-reactnative",
4096
+ // seam
3951
4097
  "expo",
3952
4098
  // preset+coverage
4099
+ "expo-age-range",
4100
+ // seam
3953
4101
  "expo-android-shared-preferences",
3954
- // coverage
4102
+ // seam+coverage
4103
+ "expo-app-integrity",
4104
+ // seam
3955
4105
  "expo-apple-authentication",
3956
- // preset
4106
+ // preset+seam
3957
4107
  "expo-application",
3958
4108
  // visual-proof+coverage
3959
4109
  "expo-asset",
3960
- // preset+coverage
4110
+ // preset+seam+coverage
3961
4111
  "expo-audio",
3962
- // coverage
4112
+ // seam+coverage
3963
4113
  "expo-av",
3964
- // coverage
4114
+ // seam+coverage
3965
4115
  "expo-background-fetch",
3966
4116
  // visual-proof
3967
4117
  "expo-background-task",
@@ -3975,59 +4125,69 @@ var init_supported_native_packages = __esm({
3975
4125
  "expo-calendar",
3976
4126
  // visual-proof
3977
4127
  "expo-camera",
3978
- // coverage
4128
+ // seam+coverage
3979
4129
  "expo-cellular",
3980
4130
  // visual-proof
3981
4131
  "expo-clipboard",
3982
- // preset+coverage
4132
+ // preset+seam+coverage
3983
4133
  "expo-constants",
3984
4134
  // preset+visual-proof+coverage
3985
4135
  "expo-contacts",
3986
4136
  // visual-proof
4137
+ "expo-core-spotlight",
4138
+ // seam
3987
4139
  "expo-crypto",
3988
4140
  // preset+coverage
3989
4141
  "expo-dev-client",
3990
4142
  // coverage
3991
4143
  "expo-device",
3992
- // coverage
4144
+ // seam+coverage
3993
4145
  "expo-document-picker",
3994
- // preset+coverage
4146
+ // preset+seam+coverage
3995
4147
  "expo-file-system",
3996
- // preset+coverage
4148
+ // preset+seam+coverage
3997
4149
  "expo-font",
3998
- // preset+coverage
4150
+ // preset+seam+coverage
3999
4151
  "expo-gl",
4000
4152
  // preset+coverage
4001
4153
  "expo-glass-effect",
4002
4154
  // preset+coverage
4003
4155
  "expo-haptics",
4004
- // preset+coverage
4156
+ // preset+seam+coverage
4157
+ "expo-hardware-buttons",
4158
+ // seam
4005
4159
  "expo-ignore-battery-optimizations",
4006
4160
  // coverage
4007
4161
  "expo-image",
4008
- // preset+visual-proof+coverage
4162
+ // preset+visual-proof+seam+coverage
4009
4163
  "expo-image-manipulator",
4010
4164
  // coverage
4011
4165
  "expo-image-picker",
4012
- // preset+coverage
4166
+ // preset+seam+coverage
4013
4167
  "expo-insights",
4014
4168
  // coverage
4015
4169
  "expo-intent-launcher",
4016
4170
  // visual-proof
4017
4171
  "expo-keep-awake",
4018
4172
  // coverage
4173
+ "expo-key-event",
4174
+ // seam
4019
4175
  "expo-linear-gradient",
4020
4176
  // preset+visual-proof+coverage
4021
4177
  "expo-linking",
4022
- // preset+coverage
4178
+ // preset+seam+coverage
4023
4179
  "expo-local-authentication",
4024
- // coverage
4180
+ // seam+coverage
4025
4181
  "expo-localization",
4026
4182
  // coverage
4027
4183
  "expo-mail-composer",
4028
4184
  // visual-proof
4185
+ "expo-maps",
4186
+ // seam
4187
+ "expo-media-control",
4188
+ // seam
4029
4189
  "expo-media-library",
4030
- // coverage
4190
+ // seam+coverage
4031
4191
  "expo-mesh-gradient",
4032
4192
  // coverage
4033
4193
  "expo-modules-core",
@@ -4035,13 +4195,19 @@ var init_supported_native_packages = __esm({
4035
4195
  "expo-network",
4036
4196
  // preset+visual-proof+coverage
4037
4197
  "expo-notifications",
4038
- // preset+coverage
4198
+ // preset+seam+coverage
4199
+ "expo-passkey",
4200
+ // seam
4201
+ "expo-paste-input",
4202
+ // seam
4203
+ "expo-pip",
4204
+ // seam
4039
4205
  "expo-print",
4040
4206
  // visual-proof
4041
4207
  "expo-screen-capture",
4042
4208
  // visual-proof
4043
4209
  "expo-screen-corner-radius",
4044
- // coverage
4210
+ // seam+coverage
4045
4211
  "expo-screen-orientation",
4046
4212
  // visual-proof+coverage
4047
4213
  "expo-secure-store",
@@ -4055,7 +4221,7 @@ var init_supported_native_packages = __esm({
4055
4221
  "expo-speech",
4056
4222
  // visual-proof
4057
4223
  "expo-speech-recognition",
4058
- // preset
4224
+ // preset+seam
4059
4225
  "expo-splash-screen",
4060
4226
  // visual-proof+coverage
4061
4227
  "expo-sqlite",
@@ -4065,33 +4231,37 @@ var init_supported_native_packages = __esm({
4065
4231
  "expo-symbols",
4066
4232
  // coverage
4067
4233
  "expo-system-ui",
4068
- // coverage
4234
+ // seam+coverage
4069
4235
  "expo-task-manager",
4070
4236
  // visual-proof+coverage
4071
4237
  "expo-testflight",
4072
- // coverage
4238
+ // seam+coverage
4073
4239
  "expo-tracking-transparency",
4074
4240
  // visual-proof+coverage
4075
4241
  "expo-updates",
4076
- // preset+coverage
4242
+ // preset+seam+coverage
4077
4243
  "expo-video",
4078
- // visual-proof
4244
+ // visual-proof+seam
4245
+ "expo-video-metadata",
4246
+ // seam
4079
4247
  "expo-video-thumbnails",
4080
4248
  // visual-proof
4081
4249
  "expo-web-browser",
4082
- // preset
4250
+ // preset+seam
4251
+ "expo-widgets",
4252
+ // seam
4083
4253
  "expo-winter-fetch",
4084
4254
  // coverage
4085
4255
  "expo-winter-formdata",
4086
4256
  // coverage
4087
4257
  "group-ib-fp",
4088
- // coverage
4258
+ // seam+coverage
4089
4259
  "gt-react-native",
4090
- // coverage
4260
+ // seam+coverage
4091
4261
  "jail-monkey",
4092
4262
  // coverage
4093
4263
  "lottie-react-native",
4094
- // coverage
4264
+ // seam+coverage
4095
4265
  "mixpanel-react-native",
4096
4266
  // coverage
4097
4267
  "newrelic-react-native-agent",
@@ -4099,205 +4269,477 @@ var init_supported_native_packages = __esm({
4099
4269
  "posthog-react-native",
4100
4270
  // preset+coverage
4101
4271
  "posthog-react-native-session-replay",
4102
- // preset+coverage
4272
+ // preset+seam+coverage
4273
+ "pushy-react-native",
4274
+ // seam
4103
4275
  "react-native",
4104
4276
  // preset+visual-proof+coverage
4277
+ "react-native-a11y-container",
4278
+ // seam
4105
4279
  "react-native-actions-shortcuts",
4106
- // coverage
4280
+ // seam+coverage
4107
4281
  "react-native-adjust",
4108
4282
  // coverage
4109
4283
  "react-native-aes-crypto",
4110
- // coverage
4284
+ // seam+coverage
4111
4285
  "react-native-aes-gcm-crypto",
4112
- // coverage
4286
+ // seam+coverage
4113
4287
  "react-native-amplitude-analytics",
4114
4288
  // coverage
4289
+ "react-native-app-auth",
4290
+ // seam
4291
+ "react-native-app-logs",
4292
+ // seam
4293
+ "react-native-app-review",
4294
+ // seam
4295
+ "react-native-appearance-control",
4296
+ // seam
4297
+ "react-native-apple-ads-attribution",
4298
+ // seam
4115
4299
  "react-native-appsflyer",
4116
4300
  // coverage
4301
+ "react-native-appstack-sdk",
4302
+ // seam
4117
4303
  "react-native-audio-api",
4118
4304
  // coverage
4305
+ "react-native-auto-skeleton",
4306
+ // seam
4307
+ "react-native-background-geolocation",
4308
+ // seam
4119
4309
  "react-native-background-timer",
4120
- // coverage
4310
+ // seam+coverage
4311
+ "react-native-background-upload",
4312
+ // seam
4313
+ "react-native-barcode-creator",
4314
+ // seam
4315
+ "react-native-blasted-image",
4316
+ // seam
4121
4317
  "react-native-blob-util",
4122
4318
  // coverage
4123
4319
  "react-native-blue-crypto",
4124
- // coverage
4320
+ // seam+coverage
4321
+ "react-native-bluetooth-status",
4322
+ // seam
4323
+ "react-native-blur-view",
4324
+ // seam
4325
+ "react-native-blurhash",
4326
+ // seam
4125
4327
  "react-native-bootsplash",
4126
- // preset+coverage
4328
+ // preset+seam+coverage
4127
4329
  "react-native-bottom-tabs",
4128
4330
  // preset+visual-proof
4129
4331
  "react-native-branch",
4130
4332
  // coverage
4333
+ "react-native-calendar-events",
4334
+ // seam
4335
+ "react-native-cashfree-pg-sdk",
4336
+ // seam
4337
+ "react-native-cloud-storage",
4338
+ // seam
4339
+ "react-native-cloud-store",
4340
+ // seam
4341
+ "react-native-compass-heading",
4342
+ // seam
4343
+ "react-native-compressor",
4344
+ // seam
4131
4345
  "react-native-config",
4132
4346
  // coverage
4347
+ "react-native-config-reader",
4348
+ // seam
4349
+ "react-native-contacts",
4350
+ // seam
4351
+ "react-native-context-menu-view",
4352
+ // seam
4353
+ "react-native-create-thumbnail",
4354
+ // seam
4355
+ "react-native-credentials-manager",
4356
+ // seam
4357
+ "react-native-dark-mode",
4358
+ // seam
4133
4359
  "react-native-date-picker",
4134
- // coverage
4360
+ // seam+coverage
4135
4361
  "react-native-default-preference",
4136
- // coverage
4362
+ // seam+coverage
4363
+ "react-native-detector",
4364
+ // seam
4365
+ "react-native-device-attest",
4366
+ // seam
4367
+ "react-native-device-country",
4368
+ // seam
4137
4369
  "react-native-device-info",
4138
- // coverage
4370
+ // seam+coverage
4371
+ "react-native-ease",
4372
+ // seam
4373
+ "react-native-edge-fade",
4374
+ // seam
4139
4375
  "react-native-edge-to-edge",
4140
- // coverage
4376
+ // seam+coverage
4377
+ "react-native-emoji-popup",
4378
+ // seam
4379
+ "react-native-enriched",
4380
+ // seam
4381
+ "react-native-enriched-markdown",
4382
+ // seam
4383
+ "react-native-events",
4384
+ // seam
4385
+ "react-native-exception-handler",
4386
+ // seam
4387
+ "react-native-exit-app",
4388
+ // seam
4389
+ "react-native-external-display",
4390
+ // seam
4141
4391
  "react-native-fast-image",
4142
4392
  // coverage
4143
4393
  "react-native-fast-secure-storage",
4144
- // coverage
4394
+ // seam+coverage
4145
4395
  "react-native-fast-trie",
4146
- // coverage
4396
+ // seam+coverage
4397
+ "react-native-fbsdk-next",
4398
+ // seam
4399
+ "react-native-fcm",
4400
+ // seam
4401
+ "react-native-file-logger",
4402
+ // seam
4403
+ "react-native-file-viewer",
4404
+ // seam
4405
+ "react-native-fingerprint-scanner",
4406
+ // seam
4147
4407
  "react-native-fs",
4148
4408
  // coverage
4149
4409
  "react-native-gesture-handler",
4150
4410
  // preset+coverage
4151
4411
  "react-native-get-device-locale",
4152
- // coverage
4412
+ // seam+coverage
4153
4413
  "react-native-get-location",
4154
- // coverage
4414
+ // seam+coverage
4155
4415
  "react-native-get-random-values",
4156
4416
  // coverage
4417
+ "react-native-google-places",
4418
+ // seam
4157
4419
  "react-native-google-play-install-referrer",
4158
4420
  // coverage
4159
4421
  "react-native-gzip",
4160
- // coverage
4422
+ // seam+coverage
4161
4423
  "react-native-haptic-feedback",
4162
4424
  // coverage
4163
4425
  "react-native-headphone-detection",
4164
- // coverage
4426
+ // seam+coverage
4427
+ "react-native-home-indicator",
4428
+ // seam
4429
+ "react-native-http-bridge-refurbished",
4430
+ // seam
4165
4431
  "react-native-idle-timer",
4166
- // coverage
4432
+ // seam+coverage
4433
+ "react-native-image-colors",
4434
+ // seam
4167
4435
  "react-native-image-picker",
4168
- // coverage
4436
+ // seam+coverage
4169
4437
  "react-native-image-size",
4170
- // coverage
4438
+ // seam+coverage
4171
4439
  "react-native-in-app-review",
4172
- // coverage
4440
+ // seam+coverage
4441
+ "react-native-inappbrowser-reborn",
4442
+ // seam
4443
+ "react-native-intercom",
4444
+ // seam
4445
+ "react-native-job-queue",
4446
+ // seam
4173
4447
  "react-native-keep-awake",
4174
- // coverage
4448
+ // seam+coverage
4175
4449
  "react-native-key-command",
4176
- // coverage
4450
+ // seam+coverage
4177
4451
  "react-native-keyboard-controller",
4178
4452
  // preset+visual-proof+coverage
4179
4453
  "react-native-keychain",
4180
- // coverage
4454
+ // seam+coverage
4455
+ "react-native-keyevent",
4456
+ // seam
4181
4457
  "react-native-keys",
4182
4458
  // coverage
4183
4459
  "react-native-launch-arguments",
4184
4460
  // coverage
4185
4461
  "react-native-linear-gradient",
4186
4462
  // coverage
4463
+ "react-native-linkedin-login",
4464
+ // seam
4187
4465
  "react-native-localize",
4188
4466
  // coverage
4467
+ "react-native-location",
4468
+ // seam
4469
+ "react-native-location-enabler",
4470
+ // seam
4471
+ "react-native-mail",
4472
+ // seam
4189
4473
  "react-native-maps",
4190
4474
  // preset+coverage
4475
+ "react-native-measure-text",
4476
+ // seam
4191
4477
  "react-native-mixpanel",
4192
4478
  // coverage
4193
4479
  "react-native-mmkv",
4194
- // preset+coverage
4480
+ // preset+seam+coverage
4195
4481
  "react-native-mmkv-storage",
4196
4482
  // coverage
4483
+ "react-native-month-year-picker",
4484
+ // seam
4485
+ "react-native-multiple-modals",
4486
+ // seam
4197
4487
  "react-native-nano-icons",
4198
- // coverage
4488
+ // seam+coverage
4489
+ "react-native-navigation",
4490
+ // seam
4199
4491
  "react-native-nitro-buffer",
4200
- // coverage
4492
+ // seam+coverage
4493
+ "react-native-nitro-device-info",
4494
+ // seam
4495
+ "react-native-nitro-fetch",
4496
+ // seam
4497
+ "react-native-nitro-geocoder",
4498
+ // seam
4499
+ "react-native-nitro-geolocation",
4500
+ // seam
4501
+ "react-native-nitro-image",
4502
+ // seam
4503
+ "react-native-nitro-modules",
4504
+ // seam
4505
+ "react-native-nitro-sound",
4506
+ // seam
4507
+ "react-native-nitro-sse",
4508
+ // seam
4201
4509
  "react-native-nitro-text-decoder",
4202
- // coverage
4510
+ // seam+coverage
4203
4511
  "react-native-nitro-totp",
4204
- // coverage
4512
+ // seam+coverage
4513
+ "react-native-nitro-web-image",
4514
+ // seam
4515
+ "react-native-nitro-websockets",
4516
+ // seam
4205
4517
  "react-native-notification-badge",
4206
- // coverage
4518
+ // seam+coverage
4519
+ "react-native-notification-sounds",
4520
+ // seam
4521
+ "react-native-notifications",
4522
+ // seam
4523
+ "react-native-ometria",
4524
+ // seam
4525
+ "react-native-onesignal",
4526
+ // seam
4527
+ "react-native-orientation-director",
4528
+ // seam
4529
+ "react-native-orientation-locker",
4530
+ // seam
4531
+ "react-native-orientation-manager",
4532
+ // seam
4533
+ "react-native-orientation-turbo",
4534
+ // seam
4535
+ "react-native-os",
4536
+ // seam
4537
+ "react-native-ota-hot-update",
4538
+ // seam
4207
4539
  "react-native-pager-view",
4208
4540
  // preset+visual-proof
4541
+ "react-native-palette-full",
4542
+ // seam
4209
4543
  "react-native-pdf",
4210
4544
  // coverage
4545
+ "react-native-pdf-from-image",
4546
+ // seam
4547
+ "react-native-pdf-light",
4548
+ // seam
4549
+ "react-native-performance-limiter",
4550
+ // seam
4211
4551
  "react-native-permissions",
4212
- // coverage
4552
+ // seam+coverage
4213
4553
  "react-native-photo-manipulator",
4214
- // coverage
4554
+ // seam+coverage
4555
+ "react-native-pkce-challenge",
4556
+ // seam
4557
+ "react-native-print",
4558
+ // seam
4559
+ "react-native-pulsar",
4560
+ // seam
4215
4561
  "react-native-purchases",
4216
- // preset+coverage
4562
+ // preset+seam+coverage
4217
4563
  "react-native-pure-jwt",
4218
- // coverage
4564
+ // seam+coverage
4219
4565
  "react-native-quick-actions",
4220
- // coverage
4566
+ // seam+coverage
4221
4567
  "react-native-quick-base64",
4222
- // coverage
4568
+ // seam+coverage
4223
4569
  "react-native-quick-crypto",
4224
- // coverage
4570
+ // seam+coverage
4225
4571
  "react-native-randombytes",
4226
- // coverage
4572
+ // seam+coverage
4573
+ "react-native-rate",
4574
+ // seam
4575
+ "react-native-rate-app",
4576
+ // seam
4227
4577
  "react-native-reanimated",
4228
4578
  // preset+visual-proof+coverage
4579
+ "react-native-receive-sharing-intent",
4580
+ // seam
4581
+ "react-native-record-screen",
4582
+ // seam
4229
4583
  "react-native-restart",
4230
4584
  // coverage
4231
4585
  "react-native-restart-newarch",
4232
4586
  // coverage
4587
+ "react-native-rsa-native",
4588
+ // seam
4233
4589
  "react-native-rsa-signer",
4234
- // coverage
4590
+ // seam+coverage
4591
+ "react-native-safari-view",
4592
+ // seam
4235
4593
  "react-native-safe-area-context",
4236
4594
  // preset+visual-proof+coverage
4237
4595
  "react-native-screen-corner-radius",
4238
- // coverage
4596
+ // seam+coverage
4239
4597
  "react-native-screens",
4240
4598
  // preset+visual-proof+coverage
4599
+ "react-native-screenshot-aware",
4600
+ // seam
4241
4601
  "react-native-securerandom",
4242
- // coverage
4602
+ // seam+coverage
4243
4603
  "react-native-settings",
4244
- // coverage
4604
+ // seam+coverage
4605
+ "react-native-sfsymbols",
4606
+ // seam
4607
+ "react-native-shake",
4608
+ // seam
4245
4609
  "react-native-share",
4246
- // coverage
4610
+ // seam+coverage
4611
+ "react-native-shared-group-preferences",
4612
+ // seam
4247
4613
  "react-native-shiki-engine",
4248
- // coverage
4614
+ // seam+coverage
4615
+ "react-native-signature-capture",
4616
+ // seam
4617
+ "react-native-simple-biometrics",
4618
+ // seam
4249
4619
  "react-native-simple-toast",
4250
4620
  // coverage
4251
4621
  "react-native-smart-splash-screen",
4252
- // coverage
4622
+ // seam+coverage
4623
+ "react-native-snackbar",
4624
+ // seam
4625
+ "react-native-social-share",
4626
+ // seam
4627
+ "react-native-sound",
4628
+ // seam
4629
+ "react-native-sound-player",
4630
+ // seam
4631
+ "react-native-speech-recognition-kit",
4632
+ // seam
4253
4633
  "react-native-splash-screen",
4254
- // coverage
4634
+ // seam+coverage
4635
+ "react-native-splash-view",
4636
+ // seam
4637
+ "react-native-spotlight-search",
4638
+ // seam
4639
+ "react-native-sqlite-2",
4640
+ // seam
4641
+ "react-native-stallion",
4642
+ // seam
4643
+ "react-native-store-age-signals-native-modules",
4644
+ // seam
4645
+ "react-native-store-review",
4646
+ // seam
4255
4647
  "react-native-svg",
4256
4648
  // preset+visual-proof+coverage
4257
4649
  "react-native-system-bars",
4258
- // coverage
4650
+ // seam+coverage
4651
+ "react-native-system-setting",
4652
+ // seam
4259
4653
  "react-native-teleport",
4260
4654
  // preset+coverage
4261
4655
  "react-native-testfairy",
4262
- // coverage
4656
+ // seam+coverage
4657
+ "react-native-text-input-mask",
4658
+ // seam
4659
+ "react-native-text-size",
4660
+ // seam
4661
+ "react-native-tiktok",
4662
+ // seam
4263
4663
  "react-native-tiktok-business-sdk",
4264
4664
  // coverage
4265
4665
  "react-native-timezone",
4266
- // coverage
4666
+ // seam+coverage
4667
+ "react-native-tooltip",
4668
+ // seam
4669
+ "react-native-touch-id",
4670
+ // seam
4671
+ "react-native-track-player",
4672
+ // seam
4673
+ "react-native-tts",
4674
+ // seam
4267
4675
  "react-native-turbo-haptics",
4268
- // coverage
4676
+ // seam+coverage
4677
+ "react-native-turbo-mock-location-detector",
4678
+ // seam
4679
+ "react-native-turbo-preferences",
4680
+ // seam
4269
4681
  "react-native-uitextview",
4270
4682
  // visual-proof+coverage
4271
4683
  "react-native-ulid-jsi",
4272
- // coverage
4684
+ // seam+coverage
4273
4685
  "react-native-ux-cam",
4274
- // coverage
4686
+ // seam+coverage
4275
4687
  "react-native-vector-icons",
4276
- // coverage
4688
+ // seam+coverage
4689
+ "react-native-version-check",
4690
+ // seam
4277
4691
  "react-native-version-info",
4278
- // coverage
4692
+ // seam+coverage
4279
4693
  "react-native-version-number",
4280
- // coverage
4694
+ // seam+coverage
4281
4695
  "react-native-video",
4282
4696
  // coverage
4697
+ "react-native-video-cache",
4698
+ // seam
4699
+ "react-native-video-duration",
4700
+ // seam
4701
+ "react-native-view-pdf",
4702
+ // seam
4283
4703
  "react-native-vision-camera",
4284
4704
  // coverage
4705
+ "react-native-vlc-media-player",
4706
+ // seam
4707
+ "react-native-vosk",
4708
+ // seam
4285
4709
  "react-native-webgpu",
4286
4710
  // preset
4287
4711
  "react-native-webp-format",
4288
4712
  // coverage
4289
4713
  "react-native-webview",
4290
- // preset+visual-proof
4714
+ // preset+visual-proof+seam
4715
+ "react-native-widget-picker",
4716
+ // seam
4717
+ "react-native-wifi-p2p",
4718
+ // seam
4291
4719
  "react-native-worklets",
4292
4720
  // preset+coverage
4293
4721
  "react-native-xxhash",
4294
- // coverage
4722
+ // seam+coverage
4723
+ "react-native-youtube",
4724
+ // seam
4725
+ "react-native-zip-archive",
4726
+ // seam
4727
+ "rive-react-native",
4728
+ // seam
4729
+ "rn-apple-healthkit",
4730
+ // seam
4731
+ "rn-date-format",
4732
+ // seam
4733
+ "rn-fade-wrapper",
4734
+ // seam
4295
4735
  "rn-fetch-blob",
4296
4736
  // coverage
4297
4737
  "rollbar-react-native",
4298
- // coverage
4299
- "sift-react-native"
4300
- // coverage
4738
+ // seam+coverage
4739
+ "sift-react-native",
4740
+ // seam+coverage
4741
+ "whisper.rn"
4742
+ // seam
4301
4743
  ];
4302
4744
  }
4303
4745
  });
@@ -4653,8 +5095,8 @@ var init_registry = __esm({
4653
5095
  id: "sheets-and-modal-geometry",
4654
5096
  usage: 2,
4655
5097
  importance: 2,
4656
- estimate: 0.75,
4657
- 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."
5098
+ estimate: 0.95,
5099
+ 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."
4658
5100
  },
4659
5101
  {
4660
5102
  id: "tabs-freeze-and-overlay",
@@ -4666,8 +5108,8 @@ var init_registry = __esm({
4666
5108
  ],
4667
5109
  capabilityCoverage: CAPABILITY_INVENTORY_PACKAGE_COVERAGE["react-native-screens"],
4668
5110
  note: "screen container, stack, header config, search bar, navigation props",
4669
- 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",
4670
- missing: "interactive drag between formSheet detents"
5111
+ 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",
5112
+ 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"
4671
5113
  }
4672
5114
  ]
4673
5115
  },
@@ -4764,14 +5206,14 @@ var init_registry = __esm({
4764
5206
  id: "filters-and-imperative-geometry",
4765
5207
  usage: 1,
4766
5208
  importance: 2,
4767
- estimate: 0,
4768
- 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."
5209
+ estimate: 0.25,
5210
+ 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."
4769
5211
  }
4770
5212
  ],
4771
5213
  capabilityCoverage: CAPABILITY_INVENTORY_PACKAGE_COVERAGE["react-native-svg"],
4772
- note: "CanvasKit rendering for shapes, text, XML, gradients, references, masks, clipping, and images; native SVG filters and geometry queries are unsupported",
4773
- 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, shape transforms, fill/stroke/opacity/dasharray, currentColor, viewBox scaling",
4774
- missing: "native SVG filter components and toDataURL, hit-testing, path-metric, bounding-box, and matrix methods refuse calls; 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"
5214
+ 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",
5215
+ 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",
5216
+ 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"
4775
5217
  }
4776
5218
  ]
4777
5219
  },
@@ -5038,14 +5480,14 @@ var init_registry = __esm({
5038
5480
  id: "keyboard-native-views-and-toolbar",
5039
5481
  usage: 1,
5040
5482
  importance: 2,
5041
- estimate: 0,
5042
- 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."
5483
+ estimate: 0.55,
5484
+ 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."
5043
5485
  }
5044
5486
  ],
5045
5487
  capabilityCoverage: CAPABILITY_INVENTORY_PACKAGE_COVERAGE["react-native-keyboard-controller"],
5046
5488
  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",
5047
5489
  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",
5048
- missing: "OverKeyboardView, KeyboardBackgroundView, KeyboardExtender, ClippingScrollView, and KeyboardToolbarGroupView are passthrough views without their native platform effects"
5490
+ 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"
5049
5491
  }
5050
5492
  ]
5051
5493
  },
@@ -9181,10 +9623,11 @@ var init_registry = __esm({
9181
9623
  stubType: "native",
9182
9624
  versions: [
9183
9625
  {
9184
- range: ">=1.0.0",
9626
+ range: ">=0.4.0",
9185
9627
  coverage: 0.65,
9186
- note: "native seam for EnrichedMarkdownText/EnrichedMarkdown/EnrichedMarkdownTextInput generated host components; upstream JS wrapper and Streamdown integration run unchanged",
9187
- missing: "native MD4C fidelity, selection menus, spoilers, math, images, and editable rich-markdown commands are simplified"
9628
+ note: "native seam for the EnrichedMarkdownText/EnrichedMarkdown/EnrichedMarkdownTextInput generated host components; the upstream JS wrapper, its style normalization, and the Streamdown integration run unchanged",
9629
+ 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",
9630
+ 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"
9188
9631
  }
9189
9632
  ]
9190
9633
  },
@@ -10277,6 +10720,175 @@ var init_registry = __esm({
10277
10720
  }
10278
10721
  ]
10279
10722
  },
10723
+ "whisper.rn": {
10724
+ category: "ML",
10725
+ stubType: "native",
10726
+ versions: [
10727
+ {
10728
+ range: ">=0.6.0",
10729
+ coverage: 0.3,
10730
+ 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",
10731
+ 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",
10732
+ 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"
10733
+ }
10734
+ ]
10735
+ },
10736
+ "@fugood/react-native-audio-pcm-stream": {
10737
+ category: "Media",
10738
+ stubType: "native",
10739
+ versions: [
10740
+ {
10741
+ range: ">=1.0.0",
10742
+ coverage: 0.25,
10743
+ 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",
10744
+ 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",
10745
+ 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"
10746
+ }
10747
+ ]
10748
+ },
10749
+ "react-native-edge-fade": {
10750
+ category: "UI Components",
10751
+ stubType: "native",
10752
+ versions: [
10753
+ {
10754
+ range: ">=0.1.0",
10755
+ coverage: 0.85,
10756
+ 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",
10757
+ 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",
10758
+ 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"
10759
+ }
10760
+ ]
10761
+ },
10762
+ "@metamask/native-utils": {
10763
+ category: "Auth & Payments",
10764
+ stubType: "native",
10765
+ versions: [
10766
+ {
10767
+ range: ">=0.2.0",
10768
+ coverage: 0.95,
10769
+ 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",
10770
+ 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",
10771
+ 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"
10772
+ }
10773
+ ]
10774
+ },
10775
+ "@universe/hashcash-native": {
10776
+ category: "Networking",
10777
+ stubType: "native",
10778
+ versions: [
10779
+ {
10780
+ range: ">=0.1.0",
10781
+ coverage: 0.7,
10782
+ note: "native-seam only: the published wrapper runs unchanged over a Hashcash nitro HybridObject that searches the counter range with Web Crypto SHA-256",
10783
+ 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",
10784
+ 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"
10785
+ }
10786
+ ]
10787
+ },
10788
+ "react-native-config-reader": {
10789
+ category: "Device & Platform",
10790
+ stubType: "native",
10791
+ versions: [
10792
+ {
10793
+ range: ">=1.0.0",
10794
+ coverage: 0.4,
10795
+ 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",
10796
+ 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",
10797
+ 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"
10798
+ }
10799
+ ]
10800
+ },
10801
+ "react-native-rsa-native": {
10802
+ category: "Auth & Payments",
10803
+ stubType: "native",
10804
+ versions: [
10805
+ {
10806
+ range: ">=2.0.0",
10807
+ coverage: 0.8,
10808
+ 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",
10809
+ 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",
10810
+ 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"
10811
+ }
10812
+ ]
10813
+ },
10814
+ "@mattermost/rnutils": {
10815
+ category: "Device & Platform",
10816
+ stubType: "native",
10817
+ versions: [
10818
+ {
10819
+ range: ">=0.1.0",
10820
+ coverage: 0.45,
10821
+ 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",
10822
+ 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",
10823
+ 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"
10824
+ }
10825
+ ]
10826
+ },
10827
+ "@mattermost/react-native-emm": {
10828
+ category: "Device & Platform",
10829
+ stubType: "native",
10830
+ versions: [
10831
+ {
10832
+ range: ">=1.0.0",
10833
+ coverage: 0.35,
10834
+ note: "native-seam only: the published wrapper runs unchanged over an Emm TurboModule reporting the unmanaged, unsecured device state a browser preview actually has",
10835
+ 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",
10836
+ 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"
10837
+ }
10838
+ ]
10839
+ },
10840
+ "@expensify/react-native-hybrid-app": {
10841
+ category: "Device & Platform",
10842
+ stubType: "native",
10843
+ versions: [
10844
+ {
10845
+ range: ">=0.1.0",
10846
+ coverage: 0.5,
10847
+ 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",
10848
+ 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",
10849
+ 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"
10850
+ }
10851
+ ]
10852
+ },
10853
+ "expo-app-integrity": {
10854
+ category: "Device & Platform",
10855
+ stubType: "native",
10856
+ versions: [
10857
+ {
10858
+ range: ">=0.1.0",
10859
+ coverage: 0.7,
10860
+ 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",
10861
+ 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",
10862
+ missing: "real App Attest keys, attestations, and assertions; Android Play Integrity tokens and hardware-backed key attestation"
10863
+ }
10864
+ ]
10865
+ },
10866
+ "@domir/react-native-measure-text": {
10867
+ category: "UI Components",
10868
+ stubType: "native",
10869
+ versions: [
10870
+ {
10871
+ range: ">=0.1.0",
10872
+ coverage: 0.9,
10873
+ 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",
10874
+ 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",
10875
+ 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"
10876
+ }
10877
+ ]
10878
+ },
10879
+ "@sparkfabrik/react-native-idfa-aaid": {
10880
+ category: "Analytics",
10881
+ stubType: "native",
10882
+ versions: [
10883
+ {
10884
+ range: ">=0.6.0",
10885
+ coverage: 0.5,
10886
+ 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",
10887
+ working: "getAdvertisingInfo and getAdvertisingInfoAndCheckAuthorization resolve { id: null, isAdTrackingLimited: true }, so callers take their tracking-disabled branch and keep ad properties off",
10888
+ 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"
10889
+ }
10890
+ ]
10891
+ },
10280
10892
  "@react-native-community/progress-bar-android": {
10281
10893
  category: "UI Components",
10282
10894
  stubType: "native",
@@ -27120,7 +27732,7 @@ var init_bridge_host = __esm({
27120
27732
  inflightScan = null;
27121
27733
  static SCAN_FRESH_MS = 2e3;
27122
27734
  constructor(opts = {}) {
27123
- this.preferredPort = opts.port || DEFAULT_SOOTSIM_BRIDGE_PORT;
27735
+ this.preferredPort = opts.port ?? DEFAULT_SOOTSIM_BRIDGE_PORT;
27124
27736
  this.port = this.preferredPort;
27125
27737
  this.shouldWriteLockfile = opts.writeLockfile === true;
27126
27738
  this.shouldWriteDevLockfile = opts.writeDevLockfile === true;
@@ -27170,9 +27782,9 @@ var init_bridge_host = __esm({
27170
27782
  for (let attempt = 0; attempt < this.portFallbackCount; attempt++) {
27171
27783
  const candidate = this.preferredPort + attempt;
27172
27784
  try {
27173
- await this.bindOnce(candidate, options?.silent === true);
27174
- this.effectivePort = candidate;
27175
- this.port = candidate;
27785
+ const boundPort = await this.bindOnce(candidate, options?.silent === true);
27786
+ this.effectivePort = boundPort;
27787
+ this.port = boundPort;
27176
27788
  this.startedAt = Date.now();
27177
27789
  if (attempt > 0 && !options?.silent) {
27178
27790
  process.stderr.write(
@@ -27181,7 +27793,7 @@ var init_bridge_host = __esm({
27181
27793
  );
27182
27794
  }
27183
27795
  this.afterBind();
27184
- return candidate;
27796
+ return boundPort;
27185
27797
  } catch (err) {
27186
27798
  const e = err;
27187
27799
  if (e?.code !== "EADDRINUSE") {
@@ -27217,6 +27829,11 @@ var init_bridge_host = __esm({
27217
27829
  server.once("error", onError);
27218
27830
  server.listen(port, "127.0.0.1", () => {
27219
27831
  if (settled) return;
27832
+ const address = server.address();
27833
+ if (!address || typeof address === "string") {
27834
+ onError(new Error("ws bridge has no bound TCP address"));
27835
+ return;
27836
+ }
27220
27837
  settled = true;
27221
27838
  server.removeListener("error", onError);
27222
27839
  server.on("error", (err) => {
@@ -27232,7 +27849,7 @@ var init_bridge_host = __esm({
27232
27849
  this.wss?.emit("connection", ws, req);
27233
27850
  });
27234
27851
  });
27235
- resolve9();
27852
+ resolve9(address.port);
27236
27853
  });
27237
27854
  });
27238
27855
  }
@@ -35356,7 +35973,9 @@ var init_bridge_flow_runner = __esm({
35356
35973
  }
35357
35974
  const matchesId = compile(${JSON.stringify(opts.id)})
35358
35975
  const matchesText = compile(${JSON.stringify(opts.text)})
35359
- const all = ((await test.queryAll({})) || []).filter(
35976
+ const all = ((await test.queryAll(${JSON.stringify(
35977
+ opts.id && !opts.childOf ? { idPattern: opts.id } : {}
35978
+ )})) || []).filter(
35360
35979
  (n) => n && n.absolutePosition && n.layout,
35361
35980
  )
35362
35981
  let candidates = all.filter((n) =>
@@ -35510,8 +36129,10 @@ var init_bridge_flow_runner = __esm({
35510
36129
  return element;
35511
36130
  }
35512
36131
  replayTargetForElement(opts, element, tapTarget) {
36132
+ const id = opts.id ?? tapTarget?.target?.id ?? element.id;
35513
36133
  return {
35514
- id: opts.id ?? tapTarget?.target?.id ?? element.id ?? null,
36134
+ nodeId: tapTarget?.target?.nodeId ?? element.nodeId,
36135
+ id: typeof id === "string" ? id : null,
35515
36136
  testID: opts.id ?? tapTarget?.target?.testID ?? element.testID ?? null,
35516
36137
  text: opts.text ?? tapTarget?.target?.text ?? tapTarget?.target?.accessibilityLabel ?? element.text ?? element.accessibilityLabel ?? null,
35517
36138
  type: tapTarget?.target?.type ?? element.type ?? null
@@ -35571,6 +36192,8 @@ var init_bridge_flow_runner = __esm({
35571
36192
  cy,
35572
36193
  this.replayTargetForElement(opts, current, tapTarget)
35573
36194
  );
36195
+ if (hit?.requestedTargetMatched === false)
36196
+ throw new Error(`tapOn refused: ${JSON.stringify(hit)}`);
35574
36197
  if (hit?.hit === true) {
35575
36198
  await sleep3(300);
35576
36199
  if (!current.isTextInput) return;