Make DeviceInfo use main queue setup#50109
Conversation
|
This pull request was exported from Phabricator. Differential Revision: D71347449 |
|
This pull request was exported from Phabricator. Differential Revision: D71347449 |
3c38ca5 to
169b755
Compare
|
This pull request was exported from Phabricator. Differential Revision: D71347449 |
169b755 to
55b220d
Compare
|
This pull request was exported from Phabricator. Differential Revision: D71347449 |
55b220d to
5215e2f
Compare
|
This pull request was exported from Phabricator. Differential Revision: D71347449 |
5215e2f to
be6cb6b
Compare
|
This pull request was exported from Phabricator. Differential Revision: D71347449 |
be6cb6b to
f8dc4df
Compare
|
This pull request was exported from Phabricator. Differential Revision: D71347449 |
f8dc4df to
f9b3c9b
Compare
|
This pull request was exported from Phabricator. Differential Revision: D71347449 |
f9b3c9b to
787f6fd
Compare
…#49957) Summary: Pull Request resolved: facebook#49957 ## Changes This diff introduces the api for "main queue modules" into turbo modules. This will occur occurs before any rendering. ## Rationale Rendering can now include main -> js sync calls. If we allow js -> main sync calls during rendering, react native can deadlock. With this diff, we can move the js -> main sync calls to before any rendering happens. ## APIs **Buck API:** Plugin: ``` react_module_plugin_providers( name = "AccessibilityManager", native_class_func = "RCTAccessibilityManagerCls", unstable_requires_main_queue_setup = True, ) ``` **OSS API:** [codegenConfig](https://reactnative.dev/docs/the-new-architecture/using-codegen) in package.json: ``` "codegenConfig": { "name": "<SpecName>", "type": "<types>", "jsSrcsDir": "<source_dir>", "android": { "javaPackageName": "<java.package.name>" }, "ios": { "modules": { "AccessibilityManager": { "className": "RCTAccessibilityManager", "unstableRequiresMainQueueSetup": true } } } }, ``` Changelog: [iOS][Added] Introduce unstableRequiresMainQueueSetup api to modules Differential Revision: D70413478 Reviewed By: cipolleschi
…#50040) Summary: Pull Request resolved: facebook#50040 This diff implements main queue module setup. Sometimes, people need to capture uikit things, and use them from javascript. In those cases, people can write main queue modules. These modules will be eagerly initialized on the main queue, during react native init. ## On Necessity **Sync** dispatches to the main thread from the js thread can deadlock react native. And **async** dispatches to the main thread from the js thread sometimes might not be enough: it could lead to flickery rendering. So, we need to allow people to capture ui thread things, before any js executes. ## Caveat This api is dangerous and discouraged. All react native surfaces will pay the cost of one surface introducing a main queue module. It could also slow down common/critical interactions in your app, if you're not careful. We will introduce performance logging for this infrastructure. So that we can monitor and file tasks, when main queue module init starts taking "too long." Changelog: [General][Breaking]: Introduce beforeload callback arg into ReactInstance::loadScript Differential Revision: D71084243 Reviewed By: mdvacca
Summary: We will use main queue setup of native modules to solve this problem instead. Changelog: [Internal] Differential Revision: D71341038 Reviewed By: mdvacca
|
This pull request was exported from Phabricator. Differential Revision: D71347449 |
787f6fd to
89a764e
Compare
|
This pull request was exported from Phabricator. Differential Revision: D71347449 |
89a764e to
0a63475
Compare
Summary: Pull Request resolved: facebook#50111 ## Rationale Rendering can now include main -> js sync calls. If we allow js -> main sync calls during rendering, react native can deadlock. So, this diff moves the js -> main sync calls to "main queue module setup", which occurs before rendering. Changelog: [Internal] Reviewed By: mdvacca Differential Revision: D71480047
|
This pull request was exported from Phabricator. Differential Revision: D71347449 |
0a63475 to
b21ea2e
Compare
Summary: Pull Request resolved: facebook#50109 ## Rationale Rendering can now include main -> js sync calls. If we allow js -> main sync calls during rendering, react native can deadlock. So, this diff moves the js -> main sync calls to "main queue module setup", which occurs before rendering. Changelog: [Internal] Differential Revision: D71347449 Reviewed By: mdvacca
Summary: Pull Request resolved: facebook#50109 ## Rationale Rendering can now include main -> js sync calls. If we allow js -> main sync calls during rendering, react native can deadlock. So, this diff moves the js -> main sync calls to "main queue module setup", which occurs before rendering. Changelog: [Internal] Reviewed By: mdvacca Differential Revision: D71347449
|
This pull request was exported from Phabricator. Differential Revision: D71347449 |
b21ea2e to
bb9d69a
Compare
|
This pull request has been merged in 6fa6387. |
Summary:
Rationale
Rendering can now include main -> js sync calls.
If we allow js -> main sync calls during rendering, react native can deadlock.
So, this diff moves the js -> main sync calls to "main queue module setup", which occurs before rendering.
Changelog: [Internal]
Reviewed By: mdvacca
Differential Revision: D71347449