expo-modules-core
Version:
The core of Expo Modules architecture
27 lines (24 loc) • 873 B
text/typescript
import { NativeModules, Platform } from 'react-native';
import { registerWebGlobals } from './web';
/**
* Ensures that the native modules are installed in the current runtime.
* Otherwise, it synchronously calls a native function that installs them.
*/
export function ensureNativeModulesAreInstalled(): void {
if (globalThis.expo) {
return;
}
try {
if (Platform.OS === 'web') {
// Requiring web folder sets up the `globalThis.expo` object.
registerWebGlobals();
} else {
// TODO: ExpoModulesCore shouldn't be optional here,
// but to keep backwards compatibility let's just ignore it in SDK 50.
// In most cases the modules were already installed from the native side.
NativeModules.ExpoModulesCore?.installModules();
}
} catch (error) {
console.error(`Unable to install Expo modules: ${error}`);
}
}