expo-video PiP behaves very differently on iOS vs Android


In SDK 54 docs, startPictureInPicture() is documented identically for Android and iOS, and I don’t see any documented known issue explaining why manual PiP would feel video-scoped on iOS but activity/app-scoped on Android. Is this an undocumented platform difference, an Expo bug, or expected Android PiP semantics leaking through the abstraction?

My stack:

  • Expo SDK 54

  • expo-video ~3.0.16

  • React Native 0.81.5

  • expo-router ~6.0.23

  • expo-share-extension ^5.0.6

So the intended UX is:

  1. User taps the share icon on the onboarding card.

  2. Native share sheet opens.

  3. A small PiP instructional video stays visible while the user is in the share flow.

  4. User picks my app from the share options.

  5. My share extension / share target handles the payload.

  6. User comes back and onboarding advances once I detect that the share succeeded.

    All within my app without exiting.

Instead, on Android, I’m seeing this sequence:

  1. User taps the share icon on the onboarding link preview card.

  2. The whole app immediately goes into PiP.

  3. I see the Android home screen behind it.

  4. Eventually I get back to the app / share flow somehow.

  5. I can tap my app in the share menu.

  6. It seems like the share may actually succeed, but my onboarding screen often does not detect it on the first try.

  7. I see my retry UI (“Try again”).

  8. If I repeat the same flow a second time, onboarding usually advances.

I may be mixing share quirks with PiP. But I am surprised at the fundamental difference of interpretation: iOS does the specified video as PiP whereas Android is treating the whole app for PiP and going to home screen.

1
May 29 at 8:06 AM
User AvatarBhargav
#android#expo#picture-in-picture#android-picture-in-picture

No answer found for this question yet.