From 113bd2f5921fea45a224168c7aec99e1bcfd7fd3 Mon Sep 17 00:00:00 2001 From: evanbacon Date: Sat, 12 Oct 2024 20:37:25 -0500 Subject: [PATCH 1/2] prevent fatal crashes when launching App Clips --- .../react-native/Libraries/LinkingIOS/RCTLinkingManager.mm | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/react-native/Libraries/LinkingIOS/RCTLinkingManager.mm b/packages/react-native/Libraries/LinkingIOS/RCTLinkingManager.mm index 3fa06c43979b..80dbd6026e9f 100644 --- a/packages/react-native/Libraries/LinkingIOS/RCTLinkingManager.mm +++ b/packages/react-native/Libraries/LinkingIOS/RCTLinkingManager.mm @@ -75,7 +75,9 @@ + (BOOL)application:(UIApplication *)application restorationHandler:(nonnull void (^)(NSArray> *_Nullable))restorationHandler { if ([userActivity.activityType isEqualToString:NSUserActivityTypeBrowsingWeb]) { - NSDictionary *payload = @{@"url" : userActivity.webpageURL.absoluteString}; + // This can be nullish when launching an App Clip. + NSString *urlString = userActivity.webpageURL ? userActivity.webpageURL.absoluteString : @""; + NSDictionary *payload = @{@"url" : urlString}; [[NSNotificationCenter defaultCenter] postNotificationName:kOpenURLNotification object:self userInfo:payload]; } return YES; From fbb9cab0ef1cf927db2dcf61e8916dc5a3bd351a Mon Sep 17 00:00:00 2001 From: evanbacon Date: Sat, 12 Oct 2024 20:39:20 -0500 Subject: [PATCH 2/2] Update RCTLinkingManager.mm --- .../react-native/Libraries/LinkingIOS/RCTLinkingManager.mm | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/packages/react-native/Libraries/LinkingIOS/RCTLinkingManager.mm b/packages/react-native/Libraries/LinkingIOS/RCTLinkingManager.mm index 80dbd6026e9f..ad75ed482c49 100644 --- a/packages/react-native/Libraries/LinkingIOS/RCTLinkingManager.mm +++ b/packages/react-native/Libraries/LinkingIOS/RCTLinkingManager.mm @@ -74,10 +74,9 @@ + (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(nonnull void (^)(NSArray> *_Nullable))restorationHandler { - if ([userActivity.activityType isEqualToString:NSUserActivityTypeBrowsingWeb]) { - // This can be nullish when launching an App Clip. - NSString *urlString = userActivity.webpageURL ? userActivity.webpageURL.absoluteString : @""; - NSDictionary *payload = @{@"url" : urlString}; + // This can be nullish when launching an App Clip. + if ([userActivity.activityType isEqualToString:NSUserActivityTypeBrowsingWeb] && userActivity.webpageURL != nil) { + NSDictionary *payload = @{@"url" : userActivity.webpageURL.absoluteString}; [[NSNotificationCenter defaultCenter] postNotificationName:kOpenURLNotification object:self userInfo:payload]; } return YES;