diff --git a/node_modules/react-native/Libraries/ReactNative/requireNativeComponent.js b/node_modules/react-native/Libraries/ReactNative/requireNativeComponent.js index 7402bbf..0ba2338 100644 --- a/node_modules/react-native/Libraries/ReactNative/requireNativeComponent.js +++ b/node_modules/react-native/Libraries/ReactNative/requireNativeComponent.js @@ -29,4 +29,16 @@ const requireNativeComponent = (uiViewClassName: string): HostComponent => getNativeComponentAttributes(uiViewClassName), ): any): HostComponent); -module.exports = requireNativeComponent; + +/** + * Cache React components to prevent "ViewManager is already loaded" errors + * when loading a different version of a package, with Snack. + */ + +const cache: any = {}; +const requireNativeComponentCached = (uiViewClassName: string): HostComponent => { + cache[uiViewClassName] = cache[uiViewClassName] || requireNativeComponent(uiViewClassName); + return cache[uiViewClassName]; +}; + +module.exports = requireNativeComponentCached;