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:
User taps the share icon on the onboarding card.
Native share sheet opens.
A small PiP instructional video stays visible while the user is in the share flow.
User picks my app from the share options.
My share extension / share target handles the payload.
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:
User taps the share icon on the onboarding link preview card.
The whole app immediately goes into PiP.
I see the Android home screen behind it.
Eventually I get back to the app / share flow somehow.
I can tap my app in the share menu.
It seems like the share may actually succeed, but my onboarding screen often does not detect it on the first try.
I see my retry UI (“Try again”).
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.