diff --git a/packages/core/ios/ThreadedRuntime.mm b/packages/core/ios/ThreadedRuntime.mm index 055cc60..951a2ec 100644 --- a/packages/core/ios/ThreadedRuntime.mm +++ b/packages/core/ios/ThreadedRuntime.mm @@ -841,7 +841,25 @@ + (RCTHost *)ensureHostWithRuntimeName:(NSString *)runtimeName [[ThreadedRuntimeTurboModuleDelegate alloc] initWithDelegate:delegate]; __weak id weakDelegate = delegate; RCTHostBundleURLProvider bundleURLProvider = ^NSURL *_Nullable { - return [weakDelegate bundleURL]; + NSURL *url = [weakDelegate bundleURL]; + if (url != nil) { + return url; + } + Class devLauncherClass = NSClassFromString(@"EXDevLauncherController"); + if (devLauncherClass != nil) { + SEL sharedSel = NSSelectorFromString(@"sharedInstance"); + SEL sourceUrlSel = NSSelectorFromString(@"sourceUrl"); + if ([devLauncherClass respondsToSelector:sharedSel]) { + id controller = ((id (*)(id, SEL))objc_msgSend)(devLauncherClass, sharedSel); + if ([controller respondsToSelector:sourceUrlSel]) { + NSURL *devLauncherURL = ((NSURL *(*)(id, SEL))objc_msgSend)(controller, sourceUrlSel); + if (devLauncherURL != nil) { + return devLauncherURL; + } + } + } + } + return url; // nil — preserve original behavior for non-dev-client setups. }; RCTHost *host = [[RCTHost alloc] initWithBundleURLProvider:bundleURLProvider hostDelegate:hostDelegate