Skip to content

Commit 1151ea1

Browse files
javachehuntie
authored andcommitted
Fix DefaultReactNativeHost assuming lazyViewManagers are always available (#43334)
Summary: Pull Request resolved: #43334 cortinico flagged that bridge + fabric regressed in 0.74, likely due to D53406841. Changelog: [Android][Fixed] Fix registration of ViewManagers in new renderer when not using lazyViewManagers. Reviewed By: fkgozali Differential Revision: D54551645 fbshipit-source-id: 0783030cd0d2900a3a254ae04c9ea4e51035272a
1 parent a9ec420 commit 1151ea1

File tree

2 files changed

+16
-6
lines changed

2 files changed

+16
-6
lines changed

packages/react-native/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManager.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -998,6 +998,11 @@ public Collection<String> getViewManagerNames() {
998998
if (names != null) {
999999
uniqueNames.addAll(names);
10001000
}
1001+
} else {
1002+
FLog.w(
1003+
ReactConstants.TAG,
1004+
"Package %s is not a ViewManagerOnDemandReactPackage, view managers will not be loaded",
1005+
reactPackage.getClass().getSimpleName());
10011006
}
10021007
Systrace.endSection(TRACE_TAG_REACT_JAVA_BRIDGE);
10031008
}

packages/react-native/ReactAndroid/src/main/java/com/facebook/react/defaults/DefaultReactNativeHost.kt

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -49,13 +49,18 @@ protected constructor(
4949
DefaultComponentsRegistry.register(componentFactory)
5050

5151
val viewManagerRegistry =
52-
ViewManagerRegistry(
53-
object : ViewManagerResolver {
54-
override fun getViewManager(viewManagerName: String) =
55-
reactInstanceManager.createViewManager(viewManagerName)
52+
if (lazyViewManagersEnabled) {
53+
ViewManagerRegistry(
54+
object : ViewManagerResolver {
55+
override fun getViewManager(viewManagerName: String) =
56+
reactInstanceManager.createViewManager(viewManagerName)
5657

57-
override fun getViewManagerNames() = reactInstanceManager.viewManagerNames
58-
})
58+
override fun getViewManagerNames() = reactInstanceManager.viewManagerNames
59+
})
60+
} else {
61+
ViewManagerRegistry(
62+
reactInstanceManager.getOrCreateViewManagers(reactApplicationContext))
63+
}
5964

6065
FabricUIManagerProviderImpl(
6166
componentFactory, ReactNativeConfig.DEFAULT_CONFIG, viewManagerRegistry)

0 commit comments

Comments
 (0)