Skip to content

Fabric: Update iOS bottom sheets, scroll forwarder, fix ios and android paste input#8544

Open
haileyok wants to merge 26 commits intosamuel/react-native-text-input-patchfrom
hailey/fabric-ios
Open

Fabric: Update iOS bottom sheets, scroll forwarder, fix ios and android paste input#8544
haileyok wants to merge 26 commits intosamuel/react-native-text-input-patchfrom
hailey/fabric-ios

Conversation

@haileyok
Copy link
Copy Markdown
Member

@haileyok haileyok commented Jun 20, 2025

Note: this is @mozzius speaking. I am continuing the work Hailey started in this PR

Stacked on #9430

Fixes #8541
Fixes #8540
Fixes #5655
Fixes #8535

Stacked on this:

Enables the New Architecture on both platforms.

Changes

Blockers

@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Jun 20, 2025

The Pull Request introduced fingerprint changes against the base commit:

Fingerprint diff
[{"type":"dir","filePath":"modules/bottom-sheet/ios","reasons":["expoAutolinkingIos"],"hash":"67ec1b238393e78d5a7250ebac3e003ec04c00ea"},{"type":"dir","filePath":"modules/expo-scroll-forwarder/ios","reasons":["expoAutolinkingIos"],"hash":"9fcc0e026c329d1c485e5d5b356e20b75f398b94"},{"type":"dir","filePath":"node_modules/@bsky.app/react-native-mmkv","reasons":["rncoreAutolinkingAndroid","rncoreAutolinkingIos"],"hash":"02a4ec772c517cc109c6301c790ea0184ffd7d6a"},{"type":"dir","filePath":"node_modules/@mattermost/react-native-paste-input","reasons":["rncoreAutolinkingAndroid","rncoreAutolinkingIos"],"hash":"c69891ebbc07ddb77bf2bd265cd231bb56433afe"},{"type":"dir","filePath":"node_modules/react-native-date-picker","reasons":["rncoreAutolinkingAndroid","rncoreAutolinkingIos"],"hash":"bb5c660af5c39a0de2790134b991c29f3bf545f9"},{"type":"dir","filePath":"node_modules/react-native-reanimated","reasons":["rncoreAutolinkingAndroid","rncoreAutolinkingIos"],"hash":"6d492354a95f651096738eba85ec62d5fbf61dbf"},{"type":"dir","filePath":"node_modules/react-native-uitextview","reasons":["rncoreAutolinkingIos"],"hash":"852f0e58d25a886e9ac7fe9eecccc43eae0a79f3"},{"type":"dir","filePath":"patches","reasons":["patchPackage"],"hash":"df80d9d0d17358172a07f232bc36ab52d5a526b3"},{"type":"contents","id":"expoAutolinkingConfig:ios","contents":"{\"extraDependencies\":[],\"coreFeatures\":[],\"modules\":[{\"packageName\":\"@haileyok/bluesky-video\",\"pods\":[{\"podName\":\"BlueskyVideo\",\"podspecDir\":\"node_modules/@haileyok/bluesky-video/ios\"}],\"swiftModuleNames\":[\"BlueskyVideo\"],\"modules\":[\"BlueskyVideoModule\"],\"appDelegateSubscribers\":[],\"reactDelegateHandlers\":[],\"debugOnly\":false,\"packageVersion\":\"0.3.2\"},{\"packageName\":\"@mozzius/expo-dynamic-app-icon\",\"pods\":[{\"podName\":\"ExpoDynamicAppIcon\",\"podspecDir\":\"node_modules/@mozzius/expo-dynamic-app-icon/ios\"}],\"swiftModuleNames\":[\"ExpoDynamicAppIcon\"],\"modules\":[\"ExpoDynamicAppIconModule\"],\"appDelegateSubscribers\":[],\"reactDelegateHandlers\":[],\"debugOnly\":false,\"packageVersion\":\"1.8.0\"},{\"packageName\":\"bottom-sheet\",\"pods\":[{\"podName\":\"BottomSheet\",\"podspecDir\":\"modules/bottom-sheet/ios\"}],\"swiftModuleNames\":[\"BottomSheet\"],\"modules\":[\"BottomSheetModule\"],\"appDelegateSubscribers\":[],\"reactDelegateHandlers\":[],\"debugOnly\":false,\"packageVersion\":\"\"},{\"packageName\":\"expo\",\"pods\":[{\"podName\":\"Expo\",\"podspecDir\":\"node_modules/expo\"}],\"swiftModuleNames\":[\"Expo\"],\"modules\":[\"ExpoFetchModule\"],\"appDelegateSubscribers\":[],\"reactDelegateHandlers\":[],\"debugOnly\":false,\"packageVersion\":\"54.0.27\"},{\"packageName\":\"expo-application\",\"pods\":[{\"podName\":\"EXApplication\",\"podspecDir\":\"node_modules/expo-application/ios\"}],\"swiftModuleNames\":[\"EXApplication\"],\"modules\":[\"ApplicationModule\"],\"appDelegateSubscribers\":[],\"reactDelegateHandlers\":[],\"debugOnly\":false,\"packageVersion\":\"7.0.8\"},{\"packageName\":\"expo-asset\",\"pods\":[{\"podName\":\"ExpoAsset\",\"podspecDir\":\"node_modules/expo-asset/ios\"}],\"swiftModuleNames\":[\"ExpoAsset\"],\"modules\":[\"AssetModule\"],\"appDelegateSubscribers\":[],\"reactDelegateHandlers\":[],\"debugOnly\":false,\"packageVersion\":\"12.0.11\"},{\"packageName\":\"expo-background-notification-handler\",\"pods\":[{\"podName\":\"ExpoBackgroundNotificationHandler\",\"podspecDir\":\"modules/expo-background-notification-handler/ios\"}],\"swiftModuleNames\":[\"ExpoBackgroundNotificationHandler\"],\"modules\":[\"ExpoBackgroundNotificationHandlerModule\"],\"appDelegateSubscribers\":[],\"reactDelegateHandlers\":[],\"debugOnly\":false,\"packageVersion\":\"\"},{\"packageName\":\"expo-bluesky-gif-view\",\"pods\":[{\"podName\":\"ExpoBlueskyGifView\",\"podspecDir\":\"modules/expo-bluesky-gif-view/ios\"}],\"swiftModuleNames\":[\"ExpoBlueskyGifView\"],\"modules\":[\"ExpoBlueskyGifViewModule\"],\"appDelegateSubscribers\":[],\"reactDelegateHandlers\":[],\"debugOnly\":false,\"packageVersion\":\"\"},{\"packageName\":\"expo-bluesky-swiss-army\",\"pods\":[{\"podName\":\"ExpoBlueskySwissArmy\",\"podspecDir\":\"modules/expo-bluesky-swiss-army/ios\"}],\"swiftModuleNames\":[\"ExpoBlueskySwissArmy\"],\"modules\":[\"ExpoBlueskySharedPrefsModule\",\"ExpoBlueskyReferrerModule\",\"ExpoBlueskyVisibilityViewModule\",\"ExpoPlatformInfoModule\"],\"appDelegateSubscribers\":[],\"reactDelegateHandlers\":[],\"debugOnly\":false,\"packageVersion\":\"\"},{\"packageName\":\"expo-blur\",\"pods\":[{\"podName\":\"ExpoBlur\",\"podspecDir\":\"node_modules/expo-blur/ios\"}],\"swiftModuleNames\":[\"ExpoBlur\"],\"modules\":[\"BlurViewModule\"],\"appDelegateSubscribers\":[],\"reactDelegateHandlers\":[],\"debugOnly\":false,\"packageVersion\":\"15.0.8\"},{\"packageName\":\"expo-camera\",\"pods\":[{\"podName\":\"ExpoCamera\",\"podspecDir\":\"node_modules/expo-camera/ios\"}],\"swiftModuleNames\":[\"ExpoCamera\"],\"modules\":[\"CameraViewModule\"],\"appDelegateSubscribers\":[],\"reactDelegateHandlers\":[],\"debugOnly\":false,\"packageVersion\":\"17.0.10\"},{\"packageName\":\"expo-clipboard\",\"pods\":[{\"podName\":\"ExpoClipboard\",\"podspecDir\":\"node_modules/expo-clipboard/ios\"}],\"swiftModuleNames\":[\"ExpoClipboard\"],\"modules\":[\"ClipboardModule\"],\"appDelegateSubscribers\":[],\"reactDelegateHandlers\":[],\"debugOnly\":false,\"packageVersion\":\"8.0.8\"},{\"packageName\":\"expo-constants\",\"pods\":[{\"podName\":\"EXConstants\",\"podspecDir\":\"node_modules/expo-constants/ios\"}],\"swiftModuleNames\":[\"EXConstants\"],\"modules\":[\"ConstantsModule\"],\"appDelegateSubscribers\":[],\"reactDelegateHandlers\":[],\"debugOnly\":false,\"packageVersion\":\"18.0.8\"},{\"packageName\":\"expo-contacts\",\"pods\":[{\"podName\":\"ExpoContacts\",\"podspecDir\":\"node_modules/expo-contacts/ios\"}],\"swiftModuleNames\":[\"ExpoContacts\"],\"modules\":[\"ContactsModule\",\"ContactAccessButtonModule\"],\"appDelegateSubscribers\":[],\"reactDelegateHandlers\":[],\"debugOnly\":false,\"packageVersion\":\"15.0.11\"},{\"packageName\":\"expo-dev-client\",\"pods\":[{\"podName\":\"expo-dev-client\",\"podspecDir\":\"node_modules/expo-dev-client/ios\"}],\"swiftModuleNames\":[\"expo_dev_client\"],\"modules\":[],\"appDelegateSubscribers\":[],\"reactDelegateHandlers\":[],\"debugOnly\":false,\"packageVersion\":\"6.0.20\"},{\"packageName\":\"expo-dev-launcher\",\"pods\":[{\"podName\":\"expo-dev-launcher\",\"podspecDir\":\"node_modules/expo-dev-launcher\"}],\"swiftModuleNames\":[\"EXDevLauncher\"],\"modules\":[],\"appDelegateSubscribers\":[\"ExpoDevLauncherAppDelegateSubscriber\"],\"reactDelegateHandlers\":[\"ExpoDevLauncherReactDelegateHandler\"],\"debugOnly\":true,\"packageVersion\":\"6.0.20\"},{\"packageName\":\"expo-dev-menu\",\"pods\":[{\"podName\":\"expo-dev-menu\",\"podspecDir\":\"node_modules/expo-dev-menu\"}],\"swiftModuleNames\":[\"EXDevMenu\"],\"modules\":[\"DevMenuModule\",\"DevMenuInternalModule\",\"DevMenuPreferences\"],\"appDelegateSubscribers\":[],\"reactDelegateHandlers\":[\"ExpoDevMenuReactDelegateHandler\"],\"debugOnly\":true,\"packageVersion\":\"7.0.18\"},{\"packageName\":\"expo-dev-menu-interface\",\"pods\":[{\"podName\":\"expo-dev-menu-interface\",\"podspecDir\":\"node_modules/expo-dev-menu-interface/ios\"}],\"swiftModuleNames\":[\"expo_dev_menu_interface\"],\"modules\":[],\"appDelegateSubscribers\":[],\"reactDelegateHandlers\":[],\"debugOnly\":false,\"packageVersion\":\"2.0.0\"},{\"packageName\":\"expo-device\",\"pods\":[{\"podName\":\"ExpoDevice\",\"podspecDir\":\"node_modules/expo-device/ios\"}],\"swiftModuleNames\":[\"ExpoDevice\"],\"modules\":[\"DeviceModule\"],\"appDelegateSubscribers\":[],\"reactDelegateHandlers\":[],\"debugOnly\":false,\"packageVersion\":\"8.0.10\"},{\"packageName\":\"expo-eas-client\",\"pods\":[{\"podName\":\"EASClient\",\"podspecDir\":\"node_modules/expo-eas-client/ios\"}],\"swiftModuleNames\":[\"EASClient\"],\"modules\":[\"EASClientModule\"],\"appDelegateSubscribers\":[],\"reactDelegateHandlers\":[],\"debugOnly\":false,\"packageVersion\":\"1.0.8\"},{\"packageName\":\"expo-emoji-picker\",\"pods\":[{\"podName\":\"EmojiPickerModule\",\"podspecDir\":\"modules/expo-emoji-picker/ios\"}],\"swiftModuleNames\":[\"EmojiPickerModule\"],\"modules\":[\"EmojiPickerModule\"],\"appDelegateSubscribers\":[],\"reactDelegateHandlers\":[],\"debugOnly\":false,\"packageVersion\":\"\"},{\"packageName\":\"expo-file-system\",\"pods\":[{\"podName\":\"ExpoFileSystem\",\"podspecDir\":\"node_modules/expo-file-system/ios\"}],\"swiftModuleNames\":[\"ExpoFileSystem\"],\"modules\":[\"FileSystemModule\",\"FileSystemLegacyModule\"],\"appDelegateSubscribers\":[\"FileSystemBackgroundSessionHandler\"],\"reactDelegateHandlers\":[],\"debugOnly\":false,\"packageVersion\":\"19.0.20\"},{\"packageName\":\"expo-font\",\"pods\":[{\"podName\":\"ExpoFont\",\"podspecDir\":\"node_modules/expo-font/ios\"}],\"swiftModuleNames\":[\"ExpoFont\"],\"modules\":[\"FontLoaderModule\",\"FontUtilsModule\"],\"appDelegateSubscribers\":[],\"reactDelegateHandlers\":[],\"debugOnly\":false,\"packageVersion\":\"14.0.10\"},{\"packageName\":\"expo-haptics\",\"pods\":[{\"podName\":\"ExpoHaptics\",\"podspecDir\":\"node_modules/expo-haptics/ios\"}],\"swiftModuleNames\":[\"ExpoHaptics\"],\"modules\":[\"HapticsModule\"],\"appDelegateSubscribers\":[],\"reactDelegateHandlers\":[],\"debugOnly\":false,\"packageVersion\":\"15.0.8\"},{\"packageName\":\"expo-image\",\"pods\":[{\"podName\":\"ExpoImage\",\"podspecDir\":\"node_modules/expo-image/ios\"}],\"swiftModuleNames\":[\"ExpoImage\"],\"modules\":[\"ImageModule\"],\"appDelegateSubscribers\":[],\"reactDelegateHandlers\":[],\"debugOnly\":false,\"packageVersion\":\"3.0.11\"},{\"packageName\":\"expo-image-crop-tool\",\"pods\":[{\"podName\":\"ExpoImageCropTool\",\"podspecDir\":\"node_modules/expo-image-crop-tool/ios\"}],\"swiftModuleNames\":[\"ExpoImageCropTool\"],\"modules\":[\"ExpoImageCropToolModule\"],\"appDelegateSubscribers\":[],\"reactDelegateHandlers\":[],\"debugOnly\":false,\"packageVersion\":\"0.4.0\"},{\"packageName\":\"expo-image-loader\",\"pods\":[{\"podName\":\"EXImageLoader\",\"podspecDir\":\"node_modules/expo-image-loader/ios\"}],\"swiftModuleNames\":[\"EXImageLoader\"],\"modules\":[],\"appDelegateSubscribers\":[],\"reactDelegateHandlers\":[],\"debugOnly\":false,\"packageVersion\":\"6.0.0\"},{\"packageName\":\"expo-image-manipulator\",\"pods\":[{\"podName\":\"ExpoImageManipulator\",\"podspecDir\":\"node_modules/expo-image-manipulator/ios\"}],\"swiftModuleNames\":[\"ExpoImageManipulator\"],\"modules\":[\"ImageManipulatorModule\"],\"appDelegateSubscribers\":[],\"reactDelegateHandlers\":[],\"debugOnly\":false,\"packageVersion\":\"14.0.8\"},{\"packageName\":\"expo-image-picker\",\"pods\":[{\"podName\":\"ExpoImagePicker\",\"podspecDir\":\"node_modules/expo-image-picker/ios\"}],\"swiftModuleNames\":[\"ExpoImagePicker\"],\"modules\":[\"ImagePickerModule\"],\"appDelegateSubscribers\":[],\"reactDelegateHandlers\":[],\"debugOnly\":false,\"packageVersion\":\"17.0.9\"},{\"packageName\":\"expo-json-utils\",\"pods\":[{\"podName\":\"EXJSONUtils\",\"podspecDir\":\"node_modules/expo-json-utils/ios\"}],\"swiftModuleNames\":[\"EXJSONUtils\"],\"modules\":[],\"appDelegateSubscribers\":[],\"reactDelegateHandlers\":[],\"debugOnly\":false,\"packageVersion\":\"0.15.0\"},{\"packageName\":\"expo-keep-awake\",\"pods\":[{\"podName\":\"ExpoKeepAwake\",\"podspecDir\":\"node_modules/expo-keep-awake/ios\"}],\"swiftModuleNames\":[\"ExpoKeepAwake\"],\"modules\":[\"KeepAwakeModule\"],\"appDelegateSubscribers\":[],\"reactDelegateHandlers\":[],\"debugOnly\":false,\"packageVersion\":\"15.0.8\"},{\"packageName\":\"expo-linear-gradient\",\"pods\":[{\"podName\":\"ExpoLinearGradient\",\"podspecDir\":\"node_modules/expo-linear-gradient/ios\"}],\"swiftModuleNames\":[\"ExpoLinearGradient\"],\"modules\":[\"LinearGradientModule\"],\"appDelegateSubscribers\":[],\"reactDelegateHandlers\":[],\"debugOnly\":false,\"packageVersion\":\"15.0.8\"},{\"packageName\":\"expo-linking\",\"pods\":[{\"podName\":\"ExpoLinking\",\"podspecDir\":\"node_modules/expo-linking/ios\"}],\"swiftModuleNames\":[\"ExpoLinking\"],\"modules\":[\"ExpoLinkingModule\"],\"appDelegateSubscribers\":[\"LinkingAppDelegateSubscriber\"],\"reactDelegateHandlers\":[],\"debugOnly\":false,\"packageVersion\":\"8.0.10\"},{\"packageName\":\"expo-localization\",\"pods\":[{\"podName\":\"ExpoLocalization\",\"podspecDir\":\"node_modules/expo-localization/ios\"}],\"swiftModuleNames\":[\"ExpoLocalization\"],\"modules\":[\"LocalizationModule\"],\"appDelegateSubscribers\":[],\"reactDelegateHandlers\":[],\"debugOnly\":false,\"packageVersion\":\"17.0.8\"},{\"packageName\":\"expo-location\",\"pods\":[{\"podName\":\"ExpoLocation\",\"podspecDir\":\"node_modules/expo-location/ios\"}],\"swiftModuleNames\":[\"ExpoLocation\"],\"modules\":[\"LocationModule\"],\"appDelegateSubscribers\":[],\"reactDelegateHandlers\":[],\"debugOnly\":false,\"packageVersion\":\"19.0.8\"},{\"packageName\":\"expo-manifests\",\"pods\":[{\"podName\":\"EXManifests\",\"podspecDir\":\"node_modules/expo-manifests/ios\"}],\"swiftModuleNames\":[\"EXManifests\"],\"modules\":[],\"appDelegateSubscribers\":[],\"reactDelegateHandlers\":[],\"debugOnly\":false,\"packageVersion\":\"1.0.10\"},{\"packageName\":\"expo-media-library\",\"pods\":[{\"podName\":\"ExpoMediaLibrary\",\"podspecDir\":\"node_modules/expo-media-library/ios\"}],\"swiftModuleNames\":[\"ExpoMediaLibrary\"],\"modules\":[\"MediaLibraryModule\",\"MediaLibraryNextModule\"],\"appDelegateSubscribers\":[],\"reactDelegateHandlers\":[],\"debugOnly\":false,\"packageVersion\":\"18.2.1\"},{\"packageName\":\"expo-modules-core\",\"pods\":[{\"podName\":\"ExpoModulesCore\",\"podspecDir\":\"node_modules/expo-modules-core\"}],\"swiftModuleNames\":[\"ExpoModulesCore\"],\"modules\":[],\"appDelegateSubscribers\":[],\"reactDelegateHandlers\":[],\"debugOnly\":false,\"packageVersion\":\"3.0.28\"},{\"packageName\":\"expo-notifications\",\"pods\":[{\"podName\":\"EXNotifications\",\"podspecDir\":\"node_modules/expo-notifications/ios\"}],\"swiftModuleNames\":[\"EXNotifications\"],\"modules\":[\"BackgroundModule\",\"BadgeModule\",\"CategoriesModule\",\"EmitterModule\",\"HandlerModule\",\"PermissionsModule\",\"PresentationModule\",\"PushTokenModule\",\"SchedulerModule\",\"ServerRegistrationModule\"],\"appDelegateSubscribers\":[\"NotificationsAppDelegateSubscriber\"],\"reactDelegateHandlers\":[],\"debugOnly\":false,\"packageVersion\":\"0.32.14\"},{\"packageName\":\"expo-screen-orientation\",\"pods\":[{\"podName\":\"ExpoScreenOrientation\",\"podspecDir\":\"node_modules/expo-screen-orientation/ios\"}],\"swiftModuleNames\":[\"ExpoScreenOrientation\"],\"modules\":[\"ScreenOrientationModule\"],\"appDelegateSubscribers\":[\"ScreenOrientationAppDelegate\"],\"reactDelegateHandlers\":[\"ScreenOrientationReactDelegateHandler\"],\"debugOnly\":false,\"packageVersion\":\"9.0.8\"},{\"packageName\":\"expo-scroll-forwarder\",\"pods\":[{\"podName\":\"ExpoScrollForwarder\",\"podspecDir\":\"modules/expo-scroll-forwarder/ios\"}],\"swiftModuleNames\":[\"ExpoScrollForwarder\"],\"modules\":[\"ExpoScrollForwarderModule\"],\"appDelegateSubscribers\":[],\"reactDelegateHandlers\":[],\"debugOnly\":false,\"packageVersion\":\"\"},{\"packageName\":\"expo-sharing\",\"pods\":[{\"podName\":\"ExpoSharing\",\"podspecDir\":\"node_modules/expo-sharing/ios\"}],\"swiftModuleNames\":[\"ExpoSharing\"],\"modules\":[\"SharingModule\"],\"appDelegateSubscribers\":[],\"reactDelegateHandlers\":[],\"debugOnly\":false,\"packageVersion\":\"14.0.8\"},{\"packageName\":\"expo-sms\",\"pods\":[{\"podName\":\"ExpoSMS\",\"podspecDir\":\"node_modules/expo-sms/ios\"}],\"swiftModuleNames\":[\"ExpoSMS\"],\"modules\":[\"ExpoSMSModule\"],\"appDelegateSubscribers\":[],\"reactDelegateHandlers\":[],\"debugOnly\":false,\"packageVersion\":\"14.0.8\"},{\"packageName\":\"expo-splash-screen\",\"pods\":[{\"podName\":\"ExpoSplashScreen\",\"podspecDir\":\"node_modules/expo-splash-screen/ios\"}],\"swiftModuleNames\":[\"ExpoSplashScreen\"],\"modules\":[\"SplashScreenModule\"],\"appDelegateSubscribers\":[\"SplashScreenAppDelegateSubscriber\"],\"reactDelegateHandlers\":[],\"debugOnly\":false,\"packageVersion\":\"31.0.12\"},{\"packageName\":\"expo-structured-headers\",\"pods\":[{\"podName\":\"EXStructuredHeaders\",\"podspecDir\":\"node_modules/expo-structured-headers/ios\"}],\"swiftModuleNames\":[\"EXStructuredHeaders\"],\"modules\":[],\"appDelegateSubscribers\":[],\"reactDelegateHandlers\":[],\"debugOnly\":false,\"packageVersion\":\"5.0.0\"},{\"packageName\":\"expo-system-ui\",\"pods\":[{\"podName\":\"ExpoSystemUI\",\"podspecDir\":\"node_modules/expo-system-ui/ios\"}],\"swiftModuleNames\":[\"ExpoSystemUI\"],\"modules\":[\"ExpoSystemUIModule\"],\"appDelegateSubscribers\":[],\"reactDelegateHandlers\":[],\"debugOnly\":false,\"packageVersion\":\"6.0.9\"},{\"packageName\":\"expo-task-manager\",\"pods\":[{\"podName\":\"EXTaskManager\",\"podspecDir\":\"node_modules/expo-task-manager/ios\"}],\"swiftModuleNames\":[\"EXTaskManager\"],\"modules\":[],\"appDelegateSubscribers\":[],\"reactDelegateHandlers\":[],\"debugOnly\":false,\"packageVersion\":\"14.0.9\"},{\"packageName\":\"expo-updates\",\"pods\":[{\"podName\":\"EXUpdates\",\"podspecDir\":\"node_modules/expo-updates/ios\"}],\"swiftModuleNames\":[\"EXUpdates\"],\"modules\":[\"UpdatesModule\"],\"appDelegateSubscribers\":[],\"reactDelegateHandlers\":[\"ExpoUpdatesReactDelegateHandler\"],\"debugOnly\":false,\"packageVersion\":\"29.0.15\"},{\"packageName\":\"expo-updates-interface\",\"pods\":[{\"podName\":\"EXUpdatesInterface\",\"podspecDir\":\"node_modules/expo-updates-interface/ios\"}],\"swiftModuleNames\":[\"EXUpdatesInterface\"],\"modules\":[],\"appDelegateSubscribers\":[],\"reactDelegateHandlers\":[],\"debugOnly\":false,\"packageVersion\":\"2.0.0\"},{\"packageName\":\"expo-video\",\"pods\":[{\"podName\":\"ExpoVideo\",\"podspecDir\":\"node_modules/expo-video/ios\"}],\"swiftModuleNames\":[\"ExpoVideo\"],\"modules\":[\"VideoModule\"],\"appDelegateSubscribers\":[],\"reactDelegateHandlers\":[],\"debugOnly\":false,\"packageVersion\":\"3.0.15\"},{\"packageName\":\"expo-web-browser\",\"pods\":[{\"podName\":\"ExpoWebBrowser\",\"podspecDir\":\"node_modules/expo-web-browser/ios\"}],\"swiftModuleNames\":[\"ExpoWebBrowser\"],\"modules\":[\"WebBrowserModule\"],\"appDelegateSubscribers\":[],\"reactDelegateHandlers\":[],\"debugOnly\":false,\"packageVersion\":\"15.0.10\"},{\"packageName\":\"react-native-device-attest\",\"pods\":[{\"podName\":\"ReactNativeDeviceAttest\",\"podspecDir\":\"node_modules/react-native-device-attest/ios\"}],\"swiftModuleNames\":[\"ReactNativeDeviceAttest\"],\"modules\":[\"ReactNativeDeviceAttestModule\"],\"appDelegateSubscribers\":[],\"reactDelegateHandlers\":[],\"debugOnly\":false,\"packageVersion\":\"0.1.6\"},{\"packageName\":\"unimodules-app-loader\",\"pods\":[{\"podName\":\"UMAppLoader\",\"podspecDir\":\"node_modules/unimodules-app-loader/ios\"}],\"swiftModuleNames\":[\"UMAppLoader\"],\"modules\":[],\"appDelegateSubscribers\":[],\"reactDelegateHandlers\":[],\"debugOnly\":false,\"packageVersion\":\"6.0.8\"}]}","reasons":["expoAutolinkingIos"],"hash":"191fbbbbc5f84468e1b3a5cbd20b6e877c9b0804"},{"type":"contents","id":"expoConfig","contents":"{\"android\":{\"adaptiveIcon\":{\"backgroundColor\":\"#006AFF\",\"foregroundImage\":\"assets/icon-android-foreground.png\",\"monochromeImage\":\"assets/icon-android-monochrome.png\"},\"icon\":\"assets/app-icons/android_icon_default_next.png\",\"intentFilters\":[{\"action\":\"VIEW\",\"autoVerify\":true,\"category\":[\"BROWSABLE\",\"DEFAULT\"],\"data\":[{\"host\":\"bsky.app\",\"scheme\":\"https\"},{\"host\":\"localhost:19006\",\"scheme\":\"http\"}]}],\"package\":\"xyz.blueskyweb.app\",\"permissions\":[\"android.permission.ACCESS_COARSE_LOCATION\",\"android.permission.ACCESS_FINE_LOCATION\",\"android.permission.READ_CONTACTS\",\"android.permission.WRITE_CONTACTS\"]},\"androidNavigationBar\":{\"barStyle\":\"light-content\"},\"androidStatusBar\":{\"backgroundColor\":\"#0c7cff\",\"barStyle\":\"light-content\"},\"extra\":{\"eas\":{\"build\":{\"experimental\":{\"ios\":{\"appExtensions\":[{\"bundleIdentifier\":\"xyz.blueskyweb.app.AppClip\",\"targetName\":\"BlueskyClip\"},{\"bundleIdentifier\":\"xyz.blueskyweb.app.BlueskyNSE\",\"entitlements\":{\"com.apple.security.application-groups\":[\"group.app.bsky\"]},\"targetName\":\"BlueskyNSE\"},{\"bundleIdentifier\":\"xyz.blueskyweb.app.Share-with-Bluesky\",\"entitlements\":{\"com.apple.security.application-groups\":[\"group.app.bsky\"]},\"targetName\":\"Share-with-Bluesky\"}]}}},\"projectId\":\"55bd077a-d905-4184-9c7f-94789ba0f302\"}},\"icon\":\"assets/app-icons/ios_icon_default_next.png\",\"ios\":{\"associatedDomains\":[\"appclips:bsky.app\",\"appclips:go.bsky.app\",\"applinks:bsky.app\",\"applinks:staging.bsky.app\"],\"bundleIdentifier\":\"xyz.blueskyweb.app\",\"config\":{\"usesNonExemptEncryption\":false},\"entitlements\":{\"com.apple.developer.kernel.extended-virtual-addressing\":true,\"com.apple.developer.kernel.increased-memory-limit\":true,\"com.apple.security.application-groups\":\"group.app.bsky\"},\"icon\":\"assets/app-icons/ios_icon_default_next.png\",\"infoPlist\":{\"CFBundleLocalizations\":[\"an\",\"ast\",\"ca\",\"cy\",\"da\",\"de\",\"el\",\"en\",\"eo\",\"es\",\"eu\",\"fi\",\"fr\",\"fy\",\"ga\",\"gd\",\"gl\",\"hi\",\"hu\",\"ia\",\"id\",\"it\",\"ja\",\"km\",\"ko\",\"ne\",\"nl\",\"pl\",\"pt-BR\",\"pt-PT\",\"ro\",\"ru\",\"sv\",\"th\",\"tr\",\"uk\",\"vi\",\"yue\",\"zh-Hans\",\"zh-Hant\"],\"CFBundleSpokenName\":\"Blue Sky\",\"NSCameraUsageDescription\":\"Used for profile pictures, posts, and other kinds of content.\",\"NSMicrophoneUsageDescription\":\"Used for posts and other kinds of content.\",\"NSPhotoLibraryAddUsageDescription\":\"Used to save images to your library.\",\"NSPhotoLibraryUsageDescription\":\"Used for profile pictures, posts, and other kinds of content\",\"UIBackgroundModes\":[\"remote-notification\"],\"UIDesignRequiresCompatibility\":true},\"privacyManifests\":{\"NSPrivacyAccessedAPITypes\":[{\"NSPrivacyAccessedAPIType\":\"NSPrivacyAccessedAPICategoryDiskSpace\",\"NSPrivacyAccessedAPITypeReasons\":[\"85F4.1\",\"E174.1\"]},{\"NSPrivacyAccessedAPIType\":\"NSPrivacyAccessedAPICategoryFileTimestamp\",\"NSPrivacyAccessedAPITypeReasons\":[\"0A2A.1\",\"3B52.1\",\"C617.1\"]},{\"NSPrivacyAccessedAPIType\":\"NSPrivacyAccessedAPICategorySystemBootTime\",\"NSPrivacyAccessedAPITypeReasons\":[\"35F9.1\"]},{\"NSPrivacyAccessedAPIType\":\"NSPrivacyAccessedAPICategoryUserDefaults\",\"NSPrivacyAccessedAPITypeReasons\":[\"1C8F.1\",\"CA92.1\"]}],\"NSPrivacyCollectedDataTypes\":[{\"NSPrivacyCollectedDataType\":\"NSPrivacyCollectedDataTypeCrashData\",\"NSPrivacyCollectedDataTypeLinked\":false,\"NSPrivacyCollectedDataTypePurposes\":[\"NSPrivacyCollectedDataTypePurposeAppFunctionality\"],\"NSPrivacyCollectedDataTypeTracking\":false},{\"NSPrivacyCollectedDataType\":\"NSPrivacyCollectedDataTypeOtherDiagnosticData\",\"NSPrivacyCollectedDataTypeLinked\":false,\"NSPrivacyCollectedDataTypePurposes\":[\"NSPrivacyCollectedDataTypePurposeAppFunctionality\"],\"NSPrivacyCollectedDataTypeTracking\":false},{\"NSPrivacyCollectedDataType\":\"NSPrivacyCollectedDataTypePerformanceData\",\"NSPrivacyCollectedDataTypeLinked\":false,\"NSPrivacyCollectedDataTypePurposes\":[\"NSPrivacyCollectedDataTypePurposeAppFunctionality\"],\"NSPrivacyCollectedDataTypeTracking\":false}]},\"supportsTablet\":false},\"name\":\"Bluesky\",\"newArchEnabled\":false,\"owner\":\"blueskysocial\",\"platforms\":[\"android\",\"ios\",\"web\"],\"plugins\":[\"expo-localization\",\"expo-video\",\"expo-web-browser\",\"plugins/notificationsExtension/withNotificationsExtension.js\",\"plugins/shareExtension/withShareExtensions.js\",\"plugins/starterPackAppClipExtension/withStarterPackAppClip.js\",\"plugins/withAndroidDayNightThemePlugin.js\",\"plugins/withAndroidManifestFCMIconPlugin.js\",\"plugins/withAndroidManifestIntentQueriesPlugin.js\",\"plugins/withAndroidManifestLargeHeapPlugin.js\",\"plugins/withAndroidNoJitpackPlugin.js\",\"plugins/withAndroidStylesAccentColorPlugin.js\",\"plugins/withGradleJVMHeapSizeIncrease.js\",\"react-native-compressor\",[\"@bitdrift/react-native\",{\"networkInstrumentation\":true}],[\"@mozzius/expo-dynamic-app-icon\",{\"core_aurora\":{\"android\":\"assets/app-icons/android_icon_core_aurora.png\",\"ios\":\"assets/app-icons/ios_icon_core_aurora.png\",\"prerendered\":true},\"core_bonfire\":{\"android\":\"assets/app-icons/android_icon_core_bonfire.png\",\"ios\":\"assets/app-icons/ios_icon_core_bonfire.png\",\"prerendered\":true},\"core_classic\":{\"android\":\"assets/app-icons/android_icon_core_classic.png\",\"ios\":\"assets/app-icons/ios_icon_core_classic.png\",\"prerendered\":true},\"core_flat_black\":{\"android\":\"assets/app-icons/android_icon_core_flat_black.png\",\"ios\":\"assets/app-icons/ios_icon_core_flat_black.png\",\"prerendered\":true},\"core_flat_blue\":{\"android\":\"assets/app-icons/android_icon_core_flat_blue.png\",\"ios\":\"assets/app-icons/ios_icon_core_flat_blue.png\",\"prerendered\":true},\"core_flat_white\":{\"android\":\"assets/app-icons/android_icon_core_flat_white.png\",\"ios\":\"assets/app-icons/ios_icon_core_flat_white.png\",\"prerendered\":true},\"core_midnight\":{\"android\":\"assets/app-icons/android_icon_core_midnight.png\",\"ios\":\"assets/app-icons/ios_icon_core_midnight.png\",\"prerendered\":true},\"core_sunrise\":{\"android\":\"assets/app-icons/android_icon_core_sunrise.png\",\"ios\":\"assets/app-icons/ios_icon_core_sunrise.png\",\"prerendered\":true},\"core_sunset\":{\"android\":\"assets/app-icons/android_icon_core_sunset.png\",\"ios\":\"assets/app-icons/ios_icon_core_sunset.png\",\"prerendered\":true},\"default_dark\":{\"android\":\"assets/app-icons/android_icon_legacy_dark.png\",\"ios\":\"assets/app-icons/ios_icon_legacy_dark.png\",\"prerendered\":true},\"default_light\":{\"android\":\"assets/app-icons/android_icon_legacy_light.png\",\"ios\":\"assets/app-icons/ios_icon_legacy_light.png\",\"prerendered\":true}}],[\"expo-build-properties\",{\"android\":{\"buildReactNativeFromSource\":false,\"buildToolsVersion\":\"35.0.0\",\"compileSdkVersion\":35,\"targetSdkVersion\":35},\"ios\":{\"buildReactNativeFromSource\":true,\"deploymentTarget\":\"15.1\"}}],[\"expo-contacts\",{\"contactsPermission\":\"I agree to allow Bluesky to use my contacts for friend discovery until I opt out.\"}],[\"expo-font\",{\"fonts\":[\"assets/fonts/inter/Inter-Bold.otf\",\"assets/fonts/inter/Inter-BoldItalic.otf\",\"assets/fonts/inter/Inter-Italic.otf\",\"assets/fonts/inter/Inter-Medium.otf\",\"assets/fonts/inter/Inter-MediumItalic.otf\",\"assets/fonts/inter/Inter-Regular.otf\",\"assets/fonts/inter/Inter-SemiBold.otf\",\"assets/fonts/inter/Inter-SemiBoldItalic.otf\",\"assets/fonts/inter/InterVariable-Italic.woff2\",\"assets/fonts/inter/InterVariable.woff2\"]}],[\"expo-location\"],[\"expo-notifications\",{\"color\":\"#1185fe\",\"icon\":\"assets/icon-android-notification.png\",\"sounds\":[\"assets/dm.mp3\"]}],[\"expo-screen-orientation\",{\"initialOrientation\":\"PORTRAIT_UP\"}],[\"expo-splash-screen\",{\"android\":{\"backgroundColor\":\"#0c7cff\",\"dark\":{\"backgroundColor\":\"#0c2a49\",\"image\":\"assets/splash-android-icon-dark.png\",\"imageWidth\":150},\"image\":\"assets/splash-android-icon.png\",\"imageWidth\":150},\"ios\":{\"backgroundColor\":\"#ffffff\",\"dark\":{\"backgroundColor\":\"#001429\",\"enableFullScreenImage_legacy\":true,\"image\":\"assets/splash-dark.png\",\"resizeMode\":\"cover\"},\"enableFullScreenImage_legacy\":true,\"image\":\"assets/splash.png\",\"resizeMode\":\"cover\"}}],[\"react-native-edge-to-edge\",{\"android\":{\"enforceNavigationBarContrast\":false}}]],\"primaryColor\":\"#1083fe\",\"runtimeVersion\":{\"policy\":\"appVersion\"},\"scheme\":\"bluesky\",\"sdkVersion\":\"54.0.0\",\"slug\":\"bluesky\",\"updates\":{\"checkAutomatically\":\"NEVER\",\"enabled\":false,\"fallbackToCacheTimeout\":30000,\"url\":\"https://updates.bsky.app/manifest\"},\"userInterfaceStyle\":\"automatic\",\"version\":\"1.113.0\",\"web\":{\"favicon\":\"assets/favicon.png\"}}","reasons":["expoConfig"],"hash":"7126a1ab136b6753c499c4862d41764d89b12709"},{"type":"contents","id":"packageJson:scripts","contents":"{\"prepare\":\"is-ci || husky install\",\"postinstall\":\"patch-package && yarn intl:compile-if-needed\",\"prebuild\":\"EXPO_NO_GIT_STATUS=1 expo prebuild --clean\",\"android:prod\":\"expo run:android --variant release\",\"android:profile\":\"BSKY_PROFILE=1 expo run:android --variant release\",\"web\":\"expo start --web\",\"use-build-number\":\"./scripts/useBuildNumberEnv.sh\",\"use-build-number-with-bump\":\"./scripts/useBuildNumberEnvWithBump.sh\",\"build-web\":\"expo export:web && node ./scripts/post-web-build.js\",\"build-all\":\"yarn intl:build && yarn use-build-number-with-bump eas build --platform all\",\"build-ios\":\"yarn use-build-number-with-bump eas build -p ios\",\"build-android\":\"yarn use-build-number-with-bump eas build -p android\",\"build\":\"yarn use-build-number-with-bump eas build\",\"build-embed\":\"cd bskyembed && yarn build && yarn build-snippet && cd .. && node ./scripts/post-embed-build.js\",\"start\":\"expo start --dev-client\",\"start:prod\":\"expo start --dev-client --no-dev --minify\",\"test\":\"NODE_ENV=test jest --forceExit --testTimeout=20000 --bail\",\"test-watch\":\"NODE_ENV=test jest --watchAll\",\"test-ci\":\"NODE_ENV=test jest --ci --forceExit --reporters=default --reporters=jest-junit\",\"test-coverage\":\"NODE_ENV=test jest --coverage\",\"lint\":\"eslint --cache --ext .js,.jsx,.ts,.tsx src\",\"lint-native\":\"swiftlint ./modules && ktlint ./modules\",\"lint-native:fix\":\"swiftlint --fix ./modules && ktlint --format ./modules\",\"typecheck\":\"tsc --project ./tsconfig.check.json\",\"e2e:mock-server\":\"NODE_ENV=development ./jest/dev-infra/with-test-redis-and-db.sh ts-node --project tsconfig.e2e.json __e2e__/mock-server.ts\",\"e2e:build\":\"EXPO_PUBLIC_ENV=e2e NODE_ENV=test RN_SRC_EXT=e2e.ts,e2e.tsx expo run:ios\",\"e2e:build-android\":\"EXPO_PUBLIC_ENV=e2e NODE_ENV=test RN_SRC_EXT=e2e.ts,e2e.tsx expo run:android\",\"e2e:start\":\"EXPO_PUBLIC_ENV=e2e NODE_ENV=test RN_SRC_EXT=e2e.ts,e2e.tsx expo start\",\"e2e:run\":\"maestro test __e2e__\",\"perf:test\":\"NODE_ENV=test maestro test\",\"perf:test:run\":\"NODE_ENV=test maestro test __e2e__/perf-test.yml\",\"perf:test:measure\":\"NODE_ENV=test flashlight test --bundleId xyz.blueskyweb.app --testCommand \\\"yarn perf:test\\\" --duration 150000 --resultsFilePath .perf/results.json\",\"perf:test:results\":\"NODE_ENV=test flashlight report .perf/results.json\",\"perf:measure\":\"NODE_ENV=test flashlight measure\",\"intl:build\":\"yarn intl:extract:all && yarn intl:compile\",\"intl:extract\":\"lingui extract --clean --locale en\",\"intl:extract:all\":\"lingui extract --clean\",\"intl:compile\":\"lingui compile\",\"intl:compile-if-needed\":\"is-ci || [ -f src/locale/locales/en/messages.js ] || yarn intl:compile\",\"intl:pull\":\"crowdin download translations --verbose -b main\",\"intl:push\":\"crowdin push translations --verbose -b main\",\"intl:push-sources\":\"crowdin push sources --verbose -b main\",\"nuke\":\"rm -rf ./node_modules && rm -rf ./ios && rm -rf ./android\",\"update-extensions\":\"bash scripts/updateExtensions.sh\",\"export\":\"npx expo export --dump-sourcemap && yarn upload-native-sourcemaps\",\"upload-native-sourcemaps\":\"npx sentry-expo-upload-sourcemaps dist\",\"make-deploy-bundle\":\"bash scripts/bundleUpdate.sh\",\"generate-webpack-stats-file\":\"EXPO_PUBLIC_GENERATE_STATS=1 yarn build-web\",\"open-analyzer\":\"EXPO_PUBLIC_OPEN_ANALYZER=1 yarn build-web\",\"icons:optimize\":\"svgo -f ./assets/icons\"}","reasons":["packageJson:scripts"],"hash":"2497cab087291eaa4e31dfa2e3c74e84fd2150f2"},{"type":"contents","id":"rncoreAutolinkingConfig:android","contents":"{\"@bitdrift/react-native\":{\"root\":\"node_modules/@bitdrift/react-native\",\"name\":\"@bitdrift/react-native\",\"platforms\":{\"android\":{\"sourceDir\":\"node_modules/@bitdrift/react-native/android\",\"packageImportPath\":\"import com.bdreactnative.BdReactNativePackage;\",\"packageInstance\":\"new BdReactNativePackage()\",\"buildTypes\":[],\"libraryName\":\"RNBdReactNativeSpec\",\"componentDescriptors\":[],\"cmakeListsPath\":\"node_modules/@bitdrift/react-native/android/build/generated/source/codegen/jni/CMakeLists.txt\",\"cxxModuleCMakeListsModuleName\":null,\"cxxModuleCMakeListsPath\":null,\"cxxModuleHeaderName\":null,\"isPureCxxDependency\":false}}},\"@bsky.app/react-native-mmkv\":{\"root\":\"node_modules/@bsky.app/react-native-mmkv\",\"name\":\"@bsky.app/react-native-mmkv\",\"platforms\":{\"android\":{\"sourceDir\":\"node_modules/@bsky.app/react-native-mmkv/android\",\"packageImportPath\":\"import com.reactnativemmkv.MmkvPackage;\",\"packageInstance\":\"new MmkvPackage()\",\"buildTypes\":[],\"libraryName\":\"reactnativemmkv\",\"componentDescriptors\":[],\"cmakeListsPath\":\"node_modules/@bsky.app/react-native-mmkv/android/build/generated/source/codegen/jni/CMakeLists.txt\",\"cxxModuleCMakeListsModuleName\":null,\"cxxModuleCMakeListsPath\":null,\"cxxModuleHeaderName\":null,\"isPureCxxDependency\":false}}},\"@mattermost/react-native-paste-input\":{\"root\":\"node_modules/@mattermost/react-native-paste-input\",\"name\":\"@mattermost/react-native-paste-input\",\"platforms\":{\"android\":{\"sourceDir\":\"node_modules/@mattermost/react-native-paste-input/android\",\"packageImportPath\":\"import com.mattermost.pasteinputtext.PasteTextInputPackage;\",\"packageInstance\":\"new PasteTextInputPackage()\",\"buildTypes\":[],\"libraryName\":\"PasteTextInputSpecs\",\"componentDescriptors\":[\"PasteTextInputComponentDescriptor\"],\"cmakeListsPath\":\"node_modules/@mattermost/react-native-paste-input/android/build/generated/source/codegen/jni/CMakeLists.txt\",\"cxxModuleCMakeListsModuleName\":null,\"cxxModuleCMakeListsPath\":null,\"cxxModuleHeaderName\":null,\"isPureCxxDependency\":false}}},\"@react-native-async-storage/async-storage\":{\"root\":\"node_modules/@react-native-async-storage/async-storage\",\"name\":\"@react-native-async-storage/async-storage\",\"platforms\":{\"android\":{\"sourceDir\":\"node_modules/@react-native-async-storage/async-storage/android\",\"packageImportPath\":\"import com.reactnativecommunity.asyncstorage.AsyncStoragePackage;\",\"packageInstance\":\"new AsyncStoragePackage()\",\"buildTypes\":[],\"libraryName\":\"rnasyncstorage\",\"componentDescriptors\":[],\"cmakeListsPath\":\"node_modules/@react-native-async-storage/async-storage/android/build/generated/source/codegen/jni/CMakeLists.txt\",\"cxxModuleCMakeListsModuleName\":null,\"cxxModuleCMakeListsPath\":null,\"cxxModuleHeaderName\":null,\"isPureCxxDependency\":false}}},\"@sentry/react-native\":{\"root\":\"node_modules/@sentry/react-native\",\"name\":\"@sentry/react-native\",\"platforms\":{\"android\":{\"sourceDir\":\"node_modules/@sentry/react-native/android\",\"packageImportPath\":\"import io.sentry.react.RNSentryPackage;\",\"packageInstance\":\"new RNSentryPackage()\",\"buildTypes\":[],\"libraryName\":\"RNSentrySpec\",\"componentDescriptors\":[\"RNSentryReplayMaskComponentDescriptor\",\"RNSentryReplayUnmaskComponentDescriptor\"],\"cmakeListsPath\":\"node_modules/@sentry/react-native/android/build/generated/source/codegen/jni/CMakeLists.txt\",\"cxxModuleCMakeListsModuleName\":null,\"cxxModuleCMakeListsPath\":null,\"cxxModuleHeaderName\":null,\"isPureCxxDependency\":false}}},\"expo\":{\"root\":\"node_modules/expo\",\"name\":\"expo\",\"platforms\":{\"android\":{\"sourceDir\":\"node_modules/expo/android\",\"packageImportPath\":\"import expo.modules.ExpoModulesPackage;\",\"packageInstance\":\"new ExpoModulesPackage()\",\"buildTypes\":[],\"componentDescriptors\":[],\"cmakeListsPath\":\"node_modules/expo/android/build/generated/source/codegen/jni/CMakeLists.txt\",\"cxxModuleCMakeListsModuleName\":null,\"cxxModuleCMakeListsPath\":null,\"cxxModuleHeaderName\":null,\"isPureCxxDependency\":false}}},\"react-native-compressor\":{\"root\":\"node_modules/react-native-compressor\",\"name\":\"react-native-compressor\",\"platforms\":{\"android\":{\"sourceDir\":\"node_modules/react-native-compressor/android\",\"packageImportPath\":\"import com.reactnativecompressor.CompressorPackage;\",\"packageInstance\":\"new CompressorPackage()\",\"buildTypes\":[],\"libraryName\":\"Compressor\",\"componentDescriptors\":[],\"cmakeListsPath\":\"node_modules/react-native-compressor/android/build/generated/source/codegen/jni/CMakeLists.txt\",\"cxxModuleCMakeListsModuleName\":null,\"cxxModuleCMakeListsPath\":null,\"cxxModuleHeaderName\":null,\"isPureCxxDependency\":false}}},\"react-native-date-picker\":{\"root\":\"node_modules/react-native-date-picker\",\"name\":\"react-native-date-picker\",\"platforms\":{\"android\":{\"sourceDir\":\"node_modules/react-native-date-picker/android\",\"packageImportPath\":\"import com.henninghall.date_picker.DatePickerPackage;\",\"packageInstance\":\"new DatePickerPackage()\",\"buildTypes\":[],\"libraryName\":\"RNDatePickerSpecs\",\"componentDescriptors\":[\"RNDatePickerComponentDescriptor\"],\"cmakeListsPath\":\"node_modules/react-native-date-picker/android/build/generated/source/codegen/jni/CMakeLists.txt\",\"cxxModuleCMakeListsModuleName\":null,\"cxxModuleCMakeListsPath\":null,\"cxxModuleHeaderName\":null,\"isPureCxxDependency\":false}}},\"react-native-edge-to-edge\":{\"root\":\"node_modules/react-native-edge-to-edge\",\"name\":\"react-native-edge-to-edge\",\"platforms\":{\"android\":{\"sourceDir\":\"node_modules/react-native-edge-to-edge/android\",\"packageImportPath\":\"import com.zoontek.rnedgetoedge.EdgeToEdgePackage;\",\"packageInstance\":\"new EdgeToEdgePackage()\",\"buildTypes\":[],\"libraryName\":\"RNEdgeToEdge\",\"componentDescriptors\":[],\"cmakeListsPath\":\"node_modules/react-native-edge-to-edge/android/build/generated/source/codegen/jni/CMakeLists.txt\",\"cxxModuleCMakeListsModuleName\":null,\"cxxModuleCMakeListsPath\":null,\"cxxModuleHeaderName\":null,\"isPureCxxDependency\":false}}},\"react-native-gesture-handler\":{\"root\":\"node_modules/react-native-gesture-handler\",\"name\":\"react-native-gesture-handler\",\"platforms\":{\"android\":{\"sourceDir\":\"node_modules/react-native-gesture-handler/android\",\"packageImportPath\":\"import com.swmansion.gesturehandler.RNGestureHandlerPackage;\",\"packageInstance\":\"new RNGestureHandlerPackage()\",\"buildTypes\":[],\"libraryName\":\"rngesturehandler_codegen\",\"componentDescriptors\":[\"RNGestureHandlerButtonComponentDescriptor\",\"RNGestureHandlerRootViewComponentDescriptor\"],\"cmakeListsPath\":\"node_modules/react-native-gesture-handler/android/build/generated/source/codegen/jni/CMakeLists.txt\",\"cxxModuleCMakeListsModuleName\":null,\"cxxModuleCMakeListsPath\":null,\"cxxModuleHeaderName\":null,\"isPureCxxDependency\":false}}},\"react-native-get-random-values\":{\"root\":\"node_modules/react-native-get-random-values\",\"name\":\"react-native-get-random-values\",\"platforms\":{\"android\":{\"sourceDir\":\"node_modules/react-native-get-random-values/android\",\"packageImportPath\":\"import org.linusu.RNGetRandomValuesPackage;\",\"packageInstance\":\"new RNGetRandomValuesPackage()\",\"buildTypes\":[],\"componentDescriptors\":[],\"cmakeListsPath\":\"node_modules/react-native-get-random-values/android/build/generated/source/codegen/jni/CMakeLists.txt\",\"cxxModuleCMakeListsModuleName\":null,\"cxxModuleCMakeListsPath\":null,\"cxxModuleHeaderName\":null,\"isPureCxxDependency\":false}}},\"react-native-keyboard-controller\":{\"root\":\"node_modules/react-native-keyboard-controller\",\"name\":\"react-native-keyboard-controller\",\"platforms\":{\"android\":{\"sourceDir\":\"node_modules/react-native-keyboard-controller/android\",\"packageImportPath\":\"import com.reactnativekeyboardcontroller.KeyboardControllerPackage;\",\"packageInstance\":\"new KeyboardControllerPackage()\",\"buildTypes\":[],\"libraryName\":\"reactnativekeyboardcontroller\",\"componentDescriptors\":[\"KeyboardControllerViewComponentDescriptor\",\"KeyboardGestureAreaComponentDescriptor\",\"OverKeyboardViewComponentDescriptor\",\"KeyboardBackgroundViewComponentDescriptor\"],\"cmakeListsPath\":\"node_modules/react-native-keyboard-controller/android/src/main/jni/CMakeLists.txt\",\"cxxModuleCMakeListsModuleName\":null,\"cxxModuleCMakeListsPath\":null,\"cxxModuleHeaderName\":null,\"isPureCxxDependency\":false}}},\"react-native-pager-view\":{\"root\":\"node_modules/react-native-pager-view\",\"name\":\"react-native-pager-view\",\"platforms\":{\"android\":{\"sourceDir\":\"node_modules/react-native-pager-view/android\",\"packageImportPath\":\"import com.reactnativepagerview.PagerViewPackage;\",\"packageInstance\":\"new PagerViewPackage()\",\"buildTypes\":[],\"libraryName\":\"pagerview\",\"componentDescriptors\":[\"RNCViewPagerComponentDescriptor\"],\"cmakeListsPath\":\"node_modules/react-native-pager-view/android/build/generated/source/codegen/jni/CMakeLists.txt\",\"cxxModuleCMakeListsModuleName\":null,\"cxxModuleCMakeListsPath\":null,\"cxxModuleHeaderName\":null,\"isPureCxxDependency\":false}}},\"react-native-reanimated\":{\"root\":\"node_modules/react-native-reanimated\",\"name\":\"react-native-reanimated\",\"platforms\":{\"android\":{\"sourceDir\":\"node_modules/react-native-reanimated/android\",\"packageImportPath\":\"import com.swmansion.reanimated.ReanimatedPackage;\",\"packageInstance\":\"new ReanimatedPackage()\",\"buildTypes\":[],\"libraryName\":\"rnreanimated\",\"componentDescriptors\":[],\"cmakeListsPath\":\"node_modules/react-native-reanimated/android/build/generated/source/codegen/jni/CMakeLists.txt\",\"cxxModuleCMakeListsModuleName\":null,\"cxxModuleCMakeListsPath\":null,\"cxxModuleHeaderName\":null,\"isPureCxxDependency\":false}}},\"react-native-safe-area-context\":{\"root\":\"node_modules/react-native-safe-area-context\",\"name\":\"react-native-safe-area-context\",\"platforms\":{\"android\":{\"sourceDir\":\"node_modules/react-native-safe-area-context/android\",\"packageImportPath\":\"import com.th3rdwave.safeareacontext.SafeAreaContextPackage;\",\"packageInstance\":\"new SafeAreaContextPackage()\",\"buildTypes\":[],\"libraryName\":\"safeareacontext\",\"componentDescriptors\":[\"RNCSafeAreaProviderComponentDescriptor\",\"RNCSafeAreaViewComponentDescriptor\"],\"cmakeListsPath\":\"node_modules/react-native-safe-area-context/android/src/main/jni/CMakeLists.txt\",\"cxxModuleCMakeListsModuleName\":null,\"cxxModuleCMakeListsPath\":null,\"cxxModuleHeaderName\":null,\"isPureCxxDependency\":false}}},\"react-native-screens\":{\"root\":\"node_modules/react-native-screens\",\"name\":\"react-native-screens\",\"platforms\":{\"android\":{\"sourceDir\":\"node_modules/react-native-screens/android\",\"packageImportPath\":\"import com.swmansion.rnscreens.RNScreensPackage;\",\"packageInstance\":\"new RNScreensPackage()\",\"buildTypes\":[],\"libraryName\":\"rnscreens\",\"componentDescriptors\":[\"RNSFullWindowOverlayComponentDescriptor\",\"RNSScreenContainerComponentDescriptor\",\"RNSScreenNavigationContainerComponentDescriptor\",\"RNSScreenStackHeaderConfigComponentDescriptor\",\"RNSScreenStackHeaderSubviewComponentDescriptor\",\"RNSScreenStackComponentDescriptor\",\"RNSSearchBarComponentDescriptor\",\"RNSScreenComponentDescriptor\",\"RNSScreenFooterComponentDescriptor\",\"RNSScreenContentWrapperComponentDescriptor\",\"RNSModalScreenComponentDescriptor\",\"RNSBottomTabsComponentDescriptor\",\"RNSSafeAreaViewComponentDescriptor\"],\"cmakeListsPath\":\"node_modules/react-native-screens/android/src/main/jni/CMakeLists.txt\",\"cxxModuleCMakeListsModuleName\":null,\"cxxModuleCMakeListsPath\":null,\"cxxModuleHeaderName\":null,\"isPureCxxDependency\":false}}},\"react-native-svg\":{\"root\":\"node_modules/react-native-svg\",\"name\":\"react-native-svg\",\"platforms\":{\"android\":{\"sourceDir\":\"node_modules/react-native-svg/android\",\"packageImportPath\":\"import com.horcrux.svg.SvgPackage;\",\"packageInstance\":\"new SvgPackage()\",\"buildTypes\":[],\"libraryName\":\"rnsvg\",\"componentDescriptors\":[\"RNSVGCircleComponentDescriptor\",\"RNSVGClipPathComponentDescriptor\",\"RNSVGDefsComponentDescriptor\",\"RNSVGFeBlendComponentDescriptor\",\"RNSVGFeColorMatrixComponentDescriptor\",\"RNSVGFeCompositeComponentDescriptor\",\"RNSVGFeFloodComponentDescriptor\",\"RNSVGFeGaussianBlurComponentDescriptor\",\"RNSVGFeMergeComponentDescriptor\",\"RNSVGFeOffsetComponentDescriptor\",\"RNSVGFilterComponentDescriptor\",\"RNSVGEllipseComponentDescriptor\",\"RNSVGForeignObjectComponentDescriptor\",\"RNSVGGroupComponentDescriptor\",\"RNSVGImageComponentDescriptor\",\"RNSVGLinearGradientComponentDescriptor\",\"RNSVGLineComponentDescriptor\",\"RNSVGMarkerComponentDescriptor\",\"RNSVGMaskComponentDescriptor\",\"RNSVGPathComponentDescriptor\",\"RNSVGPatternComponentDescriptor\",\"RNSVGRadialGradientComponentDescriptor\",\"RNSVGRectComponentDescriptor\",\"RNSVGSvgViewAndroidComponentDescriptor\",\"RNSVGSymbolComponentDescriptor\",\"RNSVGTextComponentDescriptor\",\"RNSVGTextPathComponentDescriptor\",\"RNSVGTSpanComponentDescriptor\",\"RNSVGUseComponentDescriptor\"],\"cmakeListsPath\":\"node_modules/react-native-svg/android/src/main/jni/CMakeLists.txt\",\"cxxModuleCMakeListsModuleName\":null,\"cxxModuleCMakeListsPath\":null,\"cxxModuleHeaderName\":null,\"isPureCxxDependency\":false}}},\"react-native-view-shot\":{\"root\":\"node_modules/react-native-view-shot\",\"name\":\"react-native-view-shot\",\"platforms\":{\"android\":{\"sourceDir\":\"node_modules/react-native-view-shot/android\",\"packageImportPath\":\"import fr.greweb.reactnativeviewshot.RNViewShotPackage;\",\"packageInstance\":\"new RNViewShotPackage()\",\"buildTypes\":[],\"libraryName\":\"rnviewshot\",\"componentDescriptors\":[],\"cmakeListsPath\":\"node_modules/react-native-view-shot/android/build/generated/source/codegen/jni/CMakeLists.txt\",\"cxxModuleCMakeListsModuleName\":null,\"cxxModuleCMakeListsPath\":null,\"cxxModuleHeaderName\":null,\"isPureCxxDependency\":false}}},\"react-native-webview\":{\"root\":\"node_modules/react-native-webview\",\"name\":\"react-native-webview\",\"platforms\":{\"android\":{\"sourceDir\":\"node_modules/react-native-webview/android\",\"packageImportPath\":\"import com.reactnativecommunity.webview.RNCWebViewPackage;\",\"packageInstance\":\"new RNCWebViewPackage()\",\"buildTypes\":[],\"libraryName\":\"RNCWebViewSpec\",\"componentDescriptors\":[\"RNCWebViewComponentDescriptor\"],\"cmakeListsPath\":\"node_modules/react-native-webview/android/build/generated/source/codegen/jni/CMakeLists.txt\",\"cxxModuleCMakeListsModuleName\":null,\"cxxModuleCMakeListsPath\":null,\"cxxModuleHeaderName\":null,\"isPureCxxDependency\":false}}}}","reasons":["rncoreAutolinkingAndroid"],"hash":"a4717fc044eb640cfd444e46c14ba6458f7b7dd7"},{"type":"contents","id":"rncoreAutolinkingConfig:ios","contents":"{\"@bitdrift/react-native\":{\"root\":\"node_modules/@bitdrift/react-native\",\"name\":\"@bitdrift/react-native\",\"platforms\":{\"ios\":{\"podspecPath\":\"node_modules/@bitdrift/react-native/BdReactNative.podspec\",\"version\":\"0.6.8\",\"configurations\":[],\"scriptPhases\":[]}}},\"@bsky.app/react-native-mmkv\":{\"root\":\"node_modules/@bsky.app/react-native-mmkv\",\"name\":\"@bsky.app/react-native-mmkv\",\"platforms\":{\"ios\":{\"podspecPath\":\"node_modules/@bsky.app/react-native-mmkv/react-native-mmkv.podspec\",\"version\":\"2.12.5\",\"configurations\":[],\"scriptPhases\":[]}}},\"@mattermost/react-native-paste-input\":{\"root\":\"node_modules/@mattermost/react-native-paste-input\",\"name\":\"@mattermost/react-native-paste-input\",\"platforms\":{\"ios\":{\"podspecPath\":\"node_modules/@mattermost/react-native-paste-input/react-native-paste-input.podspec\",\"version\":\"0.8.1\",\"configurations\":[],\"scriptPhases\":[]}}},\"@react-native-async-storage/async-storage\":{\"root\":\"node_modules/@react-native-async-storage/async-storage\",\"name\":\"@react-native-async-storage/async-storage\",\"platforms\":{\"ios\":{\"podspecPath\":\"node_modules/@react-native-async-storage/async-storage/RNCAsyncStorage.podspec\",\"version\":\"2.2.0\",\"configurations\":[],\"scriptPhases\":[]}}},\"@sentry/react-native\":{\"root\":\"node_modules/@sentry/react-native\",\"name\":\"@sentry/react-native\",\"platforms\":{\"ios\":{\"podspecPath\":\"node_modules/@sentry/react-native/RNSentry.podspec\",\"version\":\"6.20.0\",\"configurations\":[],\"scriptPhases\":[]}}},\"expo\":{\"root\":\"node_modules/expo\",\"name\":\"expo\",\"platforms\":{\"ios\":{\"podspecPath\":\"node_modules/expo/Expo.podspec\",\"version\":\"54.0.27\",\"configurations\":[],\"scriptPhases\":[]}}},\"react-native-compressor\":{\"root\":\"node_modules/react-native-compressor\",\"name\":\"react-native-compressor\",\"platforms\":{\"ios\":{\"podspecPath\":\"node_modules/react-native-compressor/react-native-compressor.podspec\",\"version\":\"1.13.0\",\"configurations\":[],\"scriptPhases\":[]}}},\"react-native-date-picker\":{\"root\":\"node_modules/react-native-date-picker\",\"name\":\"react-native-date-picker\",\"platforms\":{\"ios\":{\"podspecPath\":\"node_modules/react-native-date-picker/react-native-date-picker.podspec\",\"version\":\"5.0.13\",\"configurations\":[],\"scriptPhases\":[]}}},\"react-native-gesture-handler\":{\"root\":\"node_modules/react-native-gesture-handler\",\"name\":\"react-native-gesture-handler\",\"platforms\":{\"ios\":{\"podspecPath\":\"node_modules/react-native-gesture-handler/RNGestureHandler.podspec\",\"version\":\"2.28.0\",\"configurations\":[],\"scriptPhases\":[]}}},\"react-native-get-random-values\":{\"root\":\"node_modules/react-native-get-random-values\",\"name\":\"react-native-get-random-values\",\"platforms\":{\"ios\":{\"podspecPath\":\"node_modules/react-native-get-random-values/react-native-get-random-values.podspec\",\"version\":\"1.11.0\",\"configurations\":[],\"scriptPhases\":[]}}},\"react-native-keyboard-controller\":{\"root\":\"node_modules/react-native-keyboard-controller\",\"name\":\"react-native-keyboard-controller\",\"platforms\":{\"ios\":{\"podspecPath\":\"node_modules/react-native-keyboard-controller/react-native-keyboard-controller.podspec\",\"version\":\"1.18.5\",\"configurations\":[],\"scriptPhases\":[]}}},\"react-native-pager-view\":{\"root\":\"node_modules/react-native-pager-view\",\"name\":\"react-native-pager-view\",\"platforms\":{\"ios\":{\"podspecPath\":\"node_modules/react-native-pager-view/react-native-pager-view.podspec\",\"version\":\"6.8.0\",\"configurations\":[],\"scriptPhases\":[]}}},\"react-native-reanimated\":{\"root\":\"node_modules/react-native-reanimated\",\"name\":\"react-native-reanimated\",\"platforms\":{\"ios\":{\"podspecPath\":\"node_modules/react-native-reanimated/RNReanimated.podspec\",\"version\":\"3.19.1\",\"configurations\":[],\"scriptPhases\":[]}}},\"react-native-safe-area-context\":{\"root\":\"node_modules/react-native-safe-area-context\",\"name\":\"react-native-safe-area-context\",\"platforms\":{\"ios\":{\"podspecPath\":\"node_modules/react-native-safe-area-context/react-native-safe-area-context.podspec\",\"version\":\"5.6.1\",\"configurations\":[],\"scriptPhases\":[]}}},\"react-native-screens\":{\"root\":\"node_modules/react-native-screens\",\"name\":\"react-native-screens\",\"platforms\":{\"ios\":{\"podspecPath\":\"node_modules/react-native-screens/RNScreens.podspec\",\"version\":\"4.19.0\",\"configurations\":[],\"scriptPhases\":[]}}},\"react-native-svg\":{\"root\":\"node_modules/react-native-svg\",\"name\":\"react-native-svg\",\"platforms\":{\"ios\":{\"podspecPath\":\"node_modules/react-native-svg/RNSVG.podspec\",\"version\":\"15.12.1\",\"configurations\":[],\"scriptPhases\":[]}}},\"react-native-uitextview\":{\"root\":\"node_modules/react-native-uitextview\",\"name\":\"react-native-uitextview\",\"platforms\":{\"ios\":{\"podspecPath\":\"node_modules/react-native-uitextview/react-native-uitextview.podspec\",\"version\":\"1.4.0\",\"configurations\":[],\"scriptPhases\":[]}}},\"react-native-view-shot\":{\"root\":\"node_modules/react-native-view-shot\",\"name\":\"react-native-view-shot\",\"platforms\":{\"ios\":{\"podspecPath\":\"node_modules/react-native-view-shot/react-native-view-shot.podspec\",\"version\":\"4.0.3\",\"configurations\":[],\"scriptPhases\":[]}}},\"react-native-webview\":{\"root\":\"node_modules/react-native-webview\",\"name\":\"react-native-webview\",\"platforms\":{\"ios\":{\"podspecPath\":\"node_modules/react-native-webview/react-native-webview.podspec\",\"version\":\"13.15.0\",\"configurations\":[],\"scriptPhases\":[]}}}}","reasons":["rncoreAutolinkingIos"],"hash":"bf03b0514a8440b17ba5659aa2b03f074a05431f"}]

Generated by PR labeler 🤖

@mozzius mozzius changed the title enable fabric on iso enable fabric on iOS Jun 20, 2025
@haileyok haileyok changed the title enable fabric on iOS Fabric: Fix iOS bottom sheets, fix ios and android paste input Jun 22, 2025
@haileyok haileyok changed the title Fabric: Fix iOS bottom sheets, fix ios and android paste input Fabric: Fix iOS bottom sheets, scroll forwarder, fix ios and android paste input Jun 22, 2025
@haileyok haileyok marked this pull request as ready for review June 22, 2025 15:35
@haileyok haileyok changed the title Fabric: Fix iOS bottom sheets, scroll forwarder, fix ios and android paste input Fabric: Update iOS bottom sheets, scroll forwarder, fix ios and android paste input Jun 22, 2025
@mozzius mozzius force-pushed the hailey/fabric-ios branch from c5f63d3 to 7b5366c Compare June 26, 2025 06:42
@rodperottoni
Copy link
Copy Markdown

CleanShot 2025-06-27 at 13 24 38@2x

I seem to still run into dialog issues after enabling the new arch + making the changes to use RCTSurfaceTouchHandler. 🤔

@mozzius
Copy link
Copy Markdown
Member

mozzius commented Sep 13, 2025

@haileyok I rebased to be on top of samuel/expo-54. you may not be surprised to learn it no longer compiles

@mozzius mozzius changed the base branch from samuel/expo-54 to main December 26, 2025 15:59
@arcalinea arcalinea temporarily deployed to hailey/fabric-ios - social-app PR #8544 December 26, 2025 16:09 — with Render Destroyed
@arcalinea arcalinea temporarily deployed to hailey/fabric-ios - social-app PR #8544 December 26, 2025 16:09 — with Render Destroyed
@arcalinea arcalinea temporarily deployed to hailey/fabric-ios - social-app PR #8544 December 26, 2025 16:16 — with Render Destroyed
@arcalinea arcalinea temporarily deployed to hailey/fabric-ios - social-app PR #8544 December 26, 2025 16:28 — with Render Destroyed
@arcalinea arcalinea temporarily deployed to hailey/fabric-ios - social-app PR #8544 December 26, 2025 16:35 — with Render Destroyed
@arcalinea arcalinea temporarily deployed to hailey/fabric-ios - social-app PR #8544 December 26, 2025 16:49 — with Render Destroyed
@rodperottoni
Copy link
Copy Markdown

Hey guys, I really like the implementation of bottom sheets you have. I've been trying to make it work with the New Arch for a while and only now arrived to a solution (the code in this PR still results in bottom sheets taking up the entire screen and crashing when the app is reloaded).

Here's a gist in case you want it for Bluesky: https://gist.github.com/rodperottoni/2f68ca45167b39cf6d68e2e6b69ecd35

Things to note:

  • on iOS 26+, corner radius is left unset so the new liquid glass corner radius is used instead
  • I had the help of our friend Claude for some of the things you see there - mostly around the layout of subviews, etc.

Hope it helps!

CleanShot 2026-02-02 at 20 00 42@2x

@mozzius
Copy link
Copy Markdown
Member

mozzius commented Feb 2, 2026

Hey - nice, thank you!!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

4 participants