Skip to content

Commit b9dcc1b

Browse files
rozelefacebook-github-bot
authored andcommitted
Flip the order of component descriptor registration (#53953)
Summary: Pull Request resolved: #53953 For TurboModule registration, we register custom / app-specific TurboModules before core TurboModules to ensure that app-specific module overrides are preferred over core / default behaviors. This provides a similar behavior for Fabric component descriptor registration. ## Changelog [Internal] Reviewed By: alanleedev Differential Revision: D83273376 fbshipit-source-id: fd0fb5f10d2bc29839ae554f0e3cfc18d7957848
1 parent 49b0045 commit b9dcc1b

3 files changed

Lines changed: 55 additions & 53 deletions

File tree

packages/react-native/ReactAndroid/src/main/jni/react/fabric/CoreComponentsRegistry.cpp

Lines changed: 45 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -32,54 +32,52 @@ namespace facebook::react::CoreComponentsRegistry {
3232
std::shared_ptr<const ComponentDescriptorProviderRegistry>
3333
sharedProviderRegistry() {
3434
static auto providerRegistry =
35-
[]() -> std::shared_ptr<ComponentDescriptorProviderRegistry> {
36-
auto providerRegistry =
37-
std::make_shared<ComponentDescriptorProviderRegistry>();
38-
39-
providerRegistry->add(concreteComponentDescriptorProvider<
40-
AndroidProgressBarComponentDescriptor>());
41-
providerRegistry->add(concreteComponentDescriptorProvider<
42-
AndroidSwipeRefreshLayoutComponentDescriptor>());
43-
providerRegistry->add(concreteComponentDescriptorProvider<
44-
ActivityIndicatorViewComponentDescriptor>());
45-
providerRegistry->add(concreteComponentDescriptorProvider<
46-
AndroidTextInputComponentDescriptor>());
47-
providerRegistry->add(
48-
concreteComponentDescriptorProvider<ViewComponentDescriptor>());
49-
providerRegistry->add(
50-
concreteComponentDescriptorProvider<ImageComponentDescriptor>());
51-
providerRegistry->add(concreteComponentDescriptorProvider<
52-
ModalHostViewComponentDescriptor>());
53-
providerRegistry->add(concreteComponentDescriptorProvider<
54-
AndroidSwitchComponentDescriptor>());
55-
providerRegistry->add(
56-
concreteComponentDescriptorProvider<SafeAreaViewComponentDescriptor>());
57-
providerRegistry->add(
58-
concreteComponentDescriptorProvider<TextComponentDescriptor>());
59-
providerRegistry->add(
60-
concreteComponentDescriptorProvider<RawTextComponentDescriptor>());
61-
providerRegistry->add(
62-
concreteComponentDescriptorProvider<ScrollViewComponentDescriptor>());
63-
providerRegistry->add(
64-
concreteComponentDescriptorProvider<
65-
AndroidHorizontalScrollContentViewComponentDescriptor>());
66-
providerRegistry->add(
67-
concreteComponentDescriptorProvider<ParagraphComponentDescriptor>());
68-
providerRegistry->add(concreteComponentDescriptorProvider<
69-
AndroidDrawerLayoutComponentDescriptor>());
70-
providerRegistry->add(concreteComponentDescriptorProvider<
71-
DebuggingOverlayComponentDescriptor>());
72-
providerRegistry->add(concreteComponentDescriptorProvider<
73-
LayoutConformanceComponentDescriptor>());
74-
providerRegistry->add(
75-
concreteComponentDescriptorProvider<VirtualViewComponentDescriptor>());
76-
providerRegistry->add(concreteComponentDescriptorProvider<
77-
VirtualViewExperimentalComponentDescriptor>());
78-
79-
return providerRegistry;
80-
}();
81-
35+
std::make_shared<ComponentDescriptorProviderRegistry>();
8236
return providerRegistry;
8337
}
8438

39+
void addCoreComponents(
40+
std::shared_ptr<const ComponentDescriptorProviderRegistry>
41+
providerRegistry) {
42+
providerRegistry->add(concreteComponentDescriptorProvider<
43+
AndroidProgressBarComponentDescriptor>());
44+
providerRegistry->add(concreteComponentDescriptorProvider<
45+
AndroidSwipeRefreshLayoutComponentDescriptor>());
46+
providerRegistry->add(concreteComponentDescriptorProvider<
47+
ActivityIndicatorViewComponentDescriptor>());
48+
providerRegistry->add(concreteComponentDescriptorProvider<
49+
AndroidTextInputComponentDescriptor>());
50+
providerRegistry->add(
51+
concreteComponentDescriptorProvider<ViewComponentDescriptor>());
52+
providerRegistry->add(
53+
concreteComponentDescriptorProvider<ImageComponentDescriptor>());
54+
providerRegistry->add(
55+
concreteComponentDescriptorProvider<ModalHostViewComponentDescriptor>());
56+
providerRegistry->add(
57+
concreteComponentDescriptorProvider<AndroidSwitchComponentDescriptor>());
58+
providerRegistry->add(
59+
concreteComponentDescriptorProvider<SafeAreaViewComponentDescriptor>());
60+
providerRegistry->add(
61+
concreteComponentDescriptorProvider<TextComponentDescriptor>());
62+
providerRegistry->add(
63+
concreteComponentDescriptorProvider<RawTextComponentDescriptor>());
64+
providerRegistry->add(
65+
concreteComponentDescriptorProvider<ScrollViewComponentDescriptor>());
66+
providerRegistry->add(
67+
concreteComponentDescriptorProvider<
68+
AndroidHorizontalScrollContentViewComponentDescriptor>());
69+
providerRegistry->add(
70+
concreteComponentDescriptorProvider<ParagraphComponentDescriptor>());
71+
providerRegistry->add(concreteComponentDescriptorProvider<
72+
AndroidDrawerLayoutComponentDescriptor>());
73+
providerRegistry->add(concreteComponentDescriptorProvider<
74+
DebuggingOverlayComponentDescriptor>());
75+
providerRegistry->add(concreteComponentDescriptorProvider<
76+
LayoutConformanceComponentDescriptor>());
77+
providerRegistry->add(
78+
concreteComponentDescriptorProvider<VirtualViewComponentDescriptor>());
79+
providerRegistry->add(concreteComponentDescriptorProvider<
80+
VirtualViewExperimentalComponentDescriptor>());
81+
}
82+
8583
} // namespace facebook::react::CoreComponentsRegistry

packages/react-native/ReactAndroid/src/main/jni/react/fabric/CoreComponentsRegistry.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,4 +14,7 @@ namespace facebook::react::CoreComponentsRegistry {
1414
std::shared_ptr<const ComponentDescriptorProviderRegistry>
1515
sharedProviderRegistry();
1616

17+
void addCoreComponents(
18+
std::shared_ptr<const ComponentDescriptorProviderRegistry> registry);
19+
1720
} // namespace facebook::react::CoreComponentsRegistry

packages/react-native/ReactAndroid/src/main/jni/react/newarchdefaults/DefaultComponentsRegistry.cpp

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -36,18 +36,19 @@ void DefaultComponentsRegistry::setRegistryRunction(
3636
.flavor = nullptr};
3737

3838
auto providerRegistry = CoreComponentsRegistry::sharedProviderRegistry();
39-
if (registerCodegenComponentDescriptorsFromEntryPoint) {
40-
registerCodegenComponentDescriptorsFromEntryPoint(providerRegistry);
41-
} else {
42-
LOG(WARNING)
43-
<< "Codegen component descriptors were not configured from JNI_OnLoad";
44-
}
4539
if (registerComponentDescriptorsFromEntryPoint) {
4640
registerComponentDescriptorsFromEntryPoint(providerRegistry);
4741
} else {
4842
LOG(WARNING)
4943
<< "Custom component descriptors were not configured from JNI_OnLoad";
5044
}
45+
if (registerCodegenComponentDescriptorsFromEntryPoint) {
46+
registerCodegenComponentDescriptorsFromEntryPoint(providerRegistry);
47+
} else {
48+
LOG(WARNING)
49+
<< "Codegen component descriptors were not configured from JNI_OnLoad";
50+
}
51+
CoreComponentsRegistry::addCoreComponents(providerRegistry);
5152

5253
auto registry = providerRegistry->createComponentDescriptorRegistry(params);
5354
auto& mutableRegistry = const_cast<ComponentDescriptorRegistry&>(*registry);

0 commit comments

Comments
 (0)