diff --git a/packages/react-native/ReactCommon/react/renderer/componentregistry/ComponentDescriptorRegistry.cpp b/packages/react-native/ReactCommon/react/renderer/componentregistry/ComponentDescriptorRegistry.cpp index e8b4616f62e..469fc5c2335 100644 --- a/packages/react-native/ReactCommon/react/renderer/componentregistry/ComponentDescriptorRegistry.cpp +++ b/packages/react-native/ReactCommon/react/renderer/componentregistry/ComponentDescriptorRegistry.cpp @@ -85,12 +85,21 @@ const ComponentDescriptor& ComponentDescriptorRegistry::at( if (it == _registryByName.end()) { if (ReactNativeFeatureFlags::useFabricInterop()) { + // When interop is enabled, if the component is not found we rely on + // UnstableLegacyViewManagerAutomaticComponentDescriptor to support legacy + // components in new architecture. auto componentDescriptor = std::make_shared< const UnstableLegacyViewManagerAutomaticComponentDescriptor>( parameters_, unifiedComponentName); registerComponentDescriptor(componentDescriptor); return *_registryByName.find(unifiedComponentName)->second; } else { + // When interop is disabled, if the component is not found we rely on + // fallbackComponentDescriptor (default: + // UnimplementedNativeViewComponentDescriptor). + // UnimplementedNativeViewComponentDescriptor displays a View in debug + // mode to alert the developer that the component is not properly + // configured, and an empty view in release mode. if (_fallbackComponentDescriptor == nullptr) { throw std::invalid_argument( ("Unable to find componentDescriptor for " + unifiedComponentName)