itms-services OTA install no longer auto-closes the running app on iOS 26 (works on iOS 18)

We distribute an enterprise iOS app using the itms-services:// protocol for OTA updates. The update flow is triggered from within the running app itself via React Native's Linking.openURL():

`itms-services://?action=download-manifest&url=https://[our-server]/manifest.plist

Expected behavior (works on iOS 18.7.2):

  1. User taps "Update" inside the app
  2. Linking.openURL() opens the itms-services URL
  3. iOS shows the system "Install" confirmation dialog
  4. User taps "Install"
  5. iOS automatically closes/backgrounds the running app
  6. Installation proceeds and completes

Actual behavior (broken on iOS 26.7, 26.6, 26.5): Steps 1–4 are identical, but at step 5 the app remains in the foreground and the installation does not proceed. The app icon on the home screen shows a "Waiting..." state. Only when the user manually force-quits the app does the installation begin.

Environment:

  • iOS 26.7 (issue reproduces) vs iOS 18.7.2 (works correctly)
  • Same .ipa build, same manifest.plist, same server
  • App is enterprise-distributed (ad hoc / in-house signing)
  • React Native 0.85.3 (but the JS code has not changed — same build on both devices)
  • The manifest.plist and .ipa are served over HTTPS with valid certificates

Questions:

  1. Is this an intentional behavior change in iOS 26? If so, is there documentation?
  2. What is the recommended approach for triggering an OTA update from within the app that is being updated on iOS 26?
  3. Is there a supported API to programmatically background/suspend the app after opening the itms-services URL to allow the installation to proceed?
itms-services OTA install no longer auto-closes the running app on iOS 26 (works on iOS 18)
 
 
Q