UNPKG

@nutrient-sdk/react-native

Version:
65 lines (56 loc) 1.93 kB
/** * Detects whether React Native New Architecture (Fabric/TurboModules) is enabled */ // Check for Fabric (new rendering system) export function isFabricEnabled(): boolean { // @ts-ignore return global.nativeFabricUIManager != null; } // Check for TurboModules (new native module system) export function areTurboModulesEnabled(): boolean { // @ts-ignore return global.__turboModuleProxy != null; } // Check for Bridgeless mode (experimental) export function isBridgelessEnabled(): boolean { // @ts-ignore return global.RN$Bridgeless === true; } // Main function to check if New Architecture is enabled export function isNewArchitectureEnabled(): boolean { return isFabricEnabled() || areTurboModulesEnabled() || isBridgelessEnabled(); } // Get descriptive name of current architecture export function getArchitectureName(): string { if (isBridgelessEnabled()) { return 'Bridgeless'; } else if (isFabricEnabled() && areTurboModulesEnabled()) { return 'New Architecture (Fabric + TurboModules)'; } else if (isFabricEnabled()) { return 'Fabric Only'; } else if (areTurboModulesEnabled()) { return 'TurboModules Only'; } else { return 'Legacy (Paper)'; } } // Debug logging function export function logArchitectureInfo(): void { const architecture = getArchitectureName(); const details = { fabric: isFabricEnabled(), turboModules: areTurboModulesEnabled(), bridgeless: isBridgelessEnabled(), }; console.log(`[PSPDFKit] Architecture: ${architecture}`, details); } // CommonJS compatibility // @ts-ignore - module is available in CommonJS environments module.exports = { isNewArchitectureEnabled: isNewArchitectureEnabled, isFabricEnabled: isFabricEnabled, areTurboModulesEnabled: areTurboModulesEnabled, isBridgelessEnabled: isBridgelessEnabled, getArchitectureName: getArchitectureName, logArchitectureInfo: logArchitectureInfo, };