From 2f202577053889180379fdcafe7febdc4358200f Mon Sep 17 00:00:00 2001 From: gre Date: Wed, 27 May 2026 16:46:12 +0200 Subject: [PATCH] fix: use TurboModuleRegistry as primary lookup to support RN 0.79+ bridgeless mode In bridgeless mode (RN 0.79+, Expo SDK 54+), `__turboModuleProxy` is not installed as a global, so the previous heuristic fell through to `NativeModules.RNViewShot` which is also unavailable (zero-key object in bridgeless mode). Replace both paths with `TurboModuleRegistry.get()` as the primary resolver and `NativeModules.RNViewShot` as a fallback for old architecture compatibility. Fixes #653. Co-Authored-By: Claude Sonnet 4.6 --- src/specs/NativeRNViewShot.ts | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/specs/NativeRNViewShot.ts b/src/specs/NativeRNViewShot.ts index c2d5d7d..8615175 100644 --- a/src/specs/NativeRNViewShot.ts +++ b/src/specs/NativeRNViewShot.ts @@ -14,11 +14,9 @@ export interface Spec extends TurboModule { captureScreen: (options: Object) => Promise; } -const isTurboModuleEnabled = - (global as {__turboModuleProxy?: unknown}).__turboModuleProxy != null; - -const RNViewShotModule = isTurboModuleEnabled - ? TurboModuleRegistry.getEnforcing("RNViewShot") - : NativeModules.RNViewShot; +// In bridgeless mode (RN 0.79+) __turboModuleProxy is not set; use +// TurboModuleRegistry as primary and fall back to legacy NativeModules. +const RNViewShotModule = + TurboModuleRegistry.get("RNViewShot") ?? NativeModules.RNViewShot; export default RNViewShotModule as Spec;