From 8f31921cf57b2b9f51d7762c28b0f2765a751466 Mon Sep 17 00:00:00 2001 From: andy <40680668+ajsmth@users.noreply.github.com> Date: Mon, 15 Aug 2022 14:23:01 -0700 Subject: [PATCH] [dev-launcher][ios] fix deferred deep links (#18614) --- packages/expo-dev-launcher/CHANGELOG.md | 1 + .../ExpoDevLauncherReactDelegateHandler.swift | 14 +++++++++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/packages/expo-dev-launcher/CHANGELOG.md b/packages/expo-dev-launcher/CHANGELOG.md index ee9635a3a1f7f..1784624ca402e 100644 --- a/packages/expo-dev-launcher/CHANGELOG.md +++ b/packages/expo-dev-launcher/CHANGELOG.md @@ -21,6 +21,7 @@ ### 🐛 Bug fixes - Fixed `the function must be called on main queue` error when the app is reload from the error screen on iOS. ([#18563](https://github.com/expo/expo/pull/18563) by [@lukmccall](https://github.com/lukmccall)) +- Fix deferred deep link handling on iOS. ([#18614](https://github.com/expo/expo/pull/18614)) by [@ajsmth](https://github.com/ajsmth) ### 💡 Others diff --git a/packages/expo-dev-launcher/ios/ReactDelegateHandler/ExpoDevLauncherReactDelegateHandler.swift b/packages/expo-dev-launcher/ios/ReactDelegateHandler/ExpoDevLauncherReactDelegateHandler.swift index dcb36b9c893b6..d205535de2ca7 100644 --- a/packages/expo-dev-launcher/ios/ReactDelegateHandler/ExpoDevLauncherReactDelegateHandler.swift +++ b/packages/expo-dev-launcher/ios/ReactDelegateHandler/ExpoDevLauncherReactDelegateHandler.swift @@ -73,7 +73,19 @@ public class ExpoDevLauncherReactDelegateHandler: ExpoReactDelegateHandler, RCTB // MARK: EXDevelopmentClientControllerDelegate implementations public func devLauncherController(_ developmentClientController: EXDevLauncherController, didStartWithSuccess success: Bool) { - let bridge = RCTBridge(delegate: self.bridgeDelegate, launchOptions: self.launchOptions) + var launchOptions: [AnyHashable: Any] = [:] + + if let initialLaunchOptions = self.launchOptions { + for (key, value) in initialLaunchOptions { + launchOptions[key] = value + } + } + + for (key, value) in developmentClientController.getLaunchOptions() { + launchOptions[key] = value + } + + let bridge = RCTBridge(delegate: self.bridgeDelegate, launchOptions: launchOptions) developmentClientController.appBridge = bridge let rootView = RCTRootView(bridge: bridge!, moduleName: self.rootViewModuleName!, initialProperties: self.rootViewInitialProperties)