Make AppState use main queue setup#50115
Conversation
|
This pull request was exported from Phabricator. Differential Revision: D71348561 |
|
This pull request was exported from Phabricator. Differential Revision: D71348561 |
24593eb to
da904a9
Compare
|
This pull request was exported from Phabricator. Differential Revision: D71348561 |
da904a9 to
293a0eb
Compare
|
This pull request was exported from Phabricator. Differential Revision: D71348561 |
293a0eb to
309da7b
Compare
|
This pull request was exported from Phabricator. Differential Revision: D71348561 |
309da7b to
8dac8cf
Compare
|
This pull request was exported from Phabricator. Differential Revision: D71348561 |
8dac8cf to
44c2e57
Compare
|
This pull request was exported from Phabricator. Differential Revision: D71348561 |
44c2e57 to
2662b58
Compare
|
This pull request was exported from Phabricator. Differential Revision: D71348561 |
2662b58 to
37fd915
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: D71348561 |
37fd915 to
85206fc
Compare
|
This pull request was exported from Phabricator. Differential Revision: D71348561 |
85206fc to
bf6b138
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
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
|
This pull request was exported from Phabricator. Differential Revision: D71348561 |
bf6b138 to
82ed9cb
Compare
|
This pull request was exported from Phabricator. Differential Revision: D71348561 |
82ed9cb to
e8055ce
Compare
Summary: Pull Request resolved: facebook#50112 ## 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: D71347448 Reviewed By: mdvacca
Summary: Pull Request resolved: facebook#50113 ## 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: D71348559 Reviewed By: mdvacca
Summary: Pull Request resolved: facebook#50115 ## 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: D71348561
|
This pull request was exported from Phabricator. Differential Revision: D71348561 |
e8055ce to
af06bd1
Compare
|
This pull request has been merged in 886319b. |
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: D71348561