@@ -473,6 +473,7 @@ - (void)start
473473 // Load the source asynchronously, then store it for later execution.
474474 dispatch_group_enter (prepareBridge);
475475 __block NSData *sourceCode;
476+ __block NSURL *sourceURL = self.bundleURL ;
476477
477478#if (RCT_DEV | RCT_ENABLE_LOADING_VIEW) && __has_include(<React/RCTDevLoadingViewProtocol.h>)
478479 {
@@ -488,6 +489,9 @@ - (void)start
488489 }
489490
490491 sourceCode = source.data ;
492+ if (source.url ) {
493+ sourceURL = source.url ;
494+ }
491495 dispatch_group_leave (prepareBridge);
492496 }
493497 onProgress: ^(RCTLoadingProgress *progressData) {
@@ -502,7 +506,7 @@ - (void)start
502506 dispatch_group_notify (prepareBridge, dispatch_get_global_queue (QOS_CLASS_USER_INTERACTIVE, 0 ), ^{
503507 RCTCxxBridge *strongSelf = weakSelf;
504508 if (sourceCode && strongSelf.loading ) {
505- [strongSelf executeSourceCode: sourceCode sync: NO ];
509+ [strongSelf executeSourceCode: sourceCode withSourceURL: sourceURL sync: NO ];
506510 }
507511 });
508512 RCT_PROFILE_END_EVENT (RCTProfileTagAlways, @" " );
@@ -1048,7 +1052,7 @@ - (void)registerModuleForFrameUpdates:(id<RCTBridgeModule>)module withModuleData
10481052 [_displayLink registerModuleForFrameUpdates: module withModuleData: moduleData];
10491053}
10501054
1051- - (void )executeSourceCode:(NSData *)sourceCode sync:(BOOL )sync
1055+ - (void )executeSourceCode:(NSData *)sourceCode withSourceURL:( NSURL *)url sync:(BOOL )sync
10521056{
10531057 // This will get called from whatever thread was actually executing JS.
10541058 dispatch_block_t completion = ^{
@@ -1073,12 +1077,13 @@ - (void)executeSourceCode:(NSData *)sourceCode sync:(BOOL)sync
10731077 };
10741078
10751079 if (sync) {
1076- [self executeApplicationScriptSync: sourceCode url: self .bundleURL ];
1080+ [self executeApplicationScriptSync: sourceCode url: url ];
10771081 completion ();
10781082 } else {
1079- [self enqueueApplicationScript: sourceCode url: self .bundleURL onComplete: completion];
1083+ [self enqueueApplicationScript: sourceCode url: url onComplete: completion];
10801084 }
10811085
1086+ // Use the original request URL here - HMRClient uses this to derive the /hot URL and entry point.
10821087 [self .devSettings setupHMRClientWithBundleURL: self .bundleURL];
10831088}
10841089
0 commit comments