Skip to content

[0.72][Draft] Add visionOS support - #2026

Closed
Saad Najmi (Saadnajmi) wants to merge 11 commits into
microsoft:0.72-stablefrom
Saadnajmi:visionos-72
Closed

[0.72][Draft] Add visionOS support#2026
Saad Najmi (Saadnajmi) wants to merge 11 commits into
microsoft:0.72-stablefrom
Saadnajmi:visionos-72

Conversation

@Saadnajmi

Copy link
Copy Markdown
Collaborator

Backport of #2019 with some extra cherry-picks off of upstream main that update some iOS code deprecated in visionOS

…eact#40884)
Summary:
Pull Request resolved: react#40884
[Internal] - Removing usages of deprecated UIUserNotificationType
Reviewed By: christophpurrer
Differential Revision: D50238678
fbshipit-source-id: 16ee8cbec50a2273c0156f89691ef2ac7dea2d25
Summary:
Pull Request resolved: react#41013
[iOS][Breaking] Deleted the no-op didRegisterUserNotificationSettings: callback in RCTPushNotificationManager
Reviewed By: philIip
Differential Revision: D50283620
fbshipit-source-id: 1582367c51c26e5b739cd9284d3b15bfa13274da
…#40949)
Summary:
Pull Request resolved: react#40949
[Internal] Migrating cancelLocalNotifications and cancelAllLocalNotifications off of deprecated UILocalNotification methods
Reviewed By: philIip, cipolleschi
Differential Revision: D50275540
fbshipit-source-id: 3728e53b410322bbb0e269ac1407d197b8d5979f
…ication (react#40948)
Summary:
Pull Request resolved: react#40948
[iOS][Breaking] alertAction is deprecated in PushNotificationIOS. getScheduledLocalNotifications now uses new iOS APIs which do not expose this property.
Reviewed By: cipolleschi
Differential Revision: D50275541
fbshipit-source-id: e4ecad858cd06350c749e7f5a837f36316656183
Summary:
Pull Request resolved: react#41039
[iOS][Breaking] - repeatInterval is deprecated in PushNotificationIOS. Use fireDate and the new fireIntervalSeconds.
Reviewed By: philIip
Differential Revision: D50277316
fbshipit-source-id: ddcc2d2fc9d89d2bacac296848109e98c95c0107
…on (react#41125)
Summary:
The goal of this PR is to migrate deprecated `UIMenuController` to `UIEditMenuInteraction`. `UIMenuController` has been deprecated in iOS 16 and for that reason it's not available for VisionOS.
https://github.com/facebook/react-native/assets/52801365/fed994be-d444-462a-9ed0-39b50531425d
bypass-github-export-checks
<!-- Help reviewers and the release process by writing your own changelog entry.
Pick one each for the category and type tags:
[ANDROID|GENERAL|IOS|INTERNAL] [BREAKING|ADDED|CHANGED|DEPRECATED|REMOVED|FIXED|SECURITY] - Message
For more details, see:
https://reactnative.dev/contributing/changelogs-in-pull-requests
-->
[IOS] [CHANGED] - Migrate RCTTextView to UIEditMenuInteraction
Pull Request resolved: react#41125
Test Plan: Launch RNTester and check for "Selectable Text" example and check that it works for iOS 16/17.
Reviewed By: javache
Differential Revision: D50551016
Pulled By: cipolleschi
fbshipit-source-id: 558ecc5a04a5daa9c4360fabddcab28fba72a323
…react#41214)
Summary:
The goal of this PR is to migrate from deprecated `[UIScreen mainScreen]` and get the `displayScale` from currentTraitCollection. Both of those return the same values.
[IOS] [CHANGED] - retrieve screen scale from trait collection instead of UIScreen mainScreen
Pull Request resolved: react#41214
Test Plan:
Go to Dimensions example and check that everything works as expected
<img src="https://github.com/facebook/react-native/assets/52801365/53141e67-63e2-4c3b-818e-6a232aae8a5b" height="500" />
<img src="https://github.com/facebook/react-native/assets/52801365/33728fce-0298-459c-b63e-a0b8ea34bde1" height="500" />
Reviewed By: NickGerleman
Differential Revision: D50736794
Pulled By: javache
fbshipit-source-id: d512cba1120204be95caf43ac9916f6597e2ccc8
…1388)
Summary:
The goal for this PR is to further remove references for `[UIScreen mainScreen]` and migrate them to use trait collections. This helps out of tree platforms like visionOS (where the `UIScreen` is not available).
bypass-github-export-checks
[INTERNAL] [CHANGED] - use currentTraitCollection for FBSnapshotTestController.m
[IOS] [CHANGED] - use key window width to assign the correct width for RCTDevLoadingView
Pull Request resolved: react#41388
Test Plan:
– Check if tests passes
- Check if `RCTDevLoadingView` shows up correctly.
Screenshot:
![CleanShot 2023-11-09 at 13 48 48@2x](https://github.com/facebook/react-native/assets/52801365/4c91399e-f70a-4e78-8288-bc7b8377c980)
Reviewed By: javache
Differential Revision: D51156230
Pulled By: cipolleschi
fbshipit-source-id: bbe711e0281046a082fd1680b55e2d117915ad00
…eact#41935)
Summary:
This PR optimises RCTKeyWindow() calls in `RCTForceTouchAvailable` method. This method was calling RCTKeyWindow hundreds of times while scrolling on the screen.
Before:
On the video you can see that this function is being called **350 times** just from simple list scrolling. RCTKeyWindow is looping over app windows so it's not a cheap operation.
https://github.com/facebook/react-native/assets/52801365/5b69cbd6-d148-4d06-b672-bd7b60472c13
After: the function is called only few times at the start of the app to get initial layout measurements.
Solution: I think we can check just once for the force touch capabilities as devices can't change it on the fly
bypass-github-export-checks
## Changelog:
[IOS] [FIXED] - Optimise RCTKeyWindow() calls in RCTForceTouchAvailable method
Pull Request resolved: react#41935
Test Plan: CI Green
Reviewed By: dmytrorykun
Differential Revision: D52172510
Pulled By: cipolleschi
fbshipit-source-id: 881a3125a2af4376ce65d785d8eee09c7d8f1f16
…window apps (react#42036)
Summary:
This PRs refactors `RCTKeyWindow()` to be more resilient and work in multi-window apps. After my recent PR got merged (react#41935) it significantly reduced the number of calls to `RCTKeyWindow()` and now it's called only when necessary. So this PR makes this function a bit more resource intensive but it guarantees that we will find current scene's key window.
This would also fix some brownfield scenarios where React Native is working in multi-window mode and in the future allow us to more easily adopt `UIWindowSceneDelegate`
bypass-github-export-checks
[IOS] [CHANGED] - refactor `RCTKeyWindow` to be more resilient and work in multi-window apps
Pull Request resolved: react#42036
Test Plan:
Checkout RNTester example for Alerts and LoadingView.
https://github.com/facebook/react-native/assets/52801365/8cf4d698-db6d-4a12-8d8d-7a5acf34858b
Reviewed By: huntie
Differential Revision: D52431720
Pulled By: cipolleschi
fbshipit-source-id: 0d6ef1d46b2428c30c9f64dae66b95dbc69f0a3b
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@Saadnajmi@ingridwang@okwasniewski