Short summary of the simplified situation:We have two applications, lets call them appA and appB. In appA, we have a button that allows you to either open the app store to download appB if appB is not installed, or open appB if it is installed. Every time appA is opened / resumed, it checks if appB is installed by performing a [[UIApplication sharedApplication] canOpenURL: <<appB's URL scheme>>], if the result is true, appA's button says Open AppB, otherwise it says Get AppB.When appA's button is tapped, it does the canOpenURL check again, and either opens the App Store to appB, or opens appB via a deep link. Pretty simple stuff. Literally, the code is:if ( [[UIApplication sharedApplication] canOpenURL:appBDeepLink] ) { [[UIApplication sharedApplication] openURL: appBDeepLink]; } else { [[UIApplication sharedApplication] openURL: appBAppStoreLink]; }This all works as expected, however, if you change appB's installation state and go back to appA, the call to openURL freezes for 5-10 second