Picture-in-Picture does not work on iOS.
The PiP button is never rendered in the native player controls — it is not greyed out or inactive, it is simply absent.
Video playback itself works normally.
The same code on Android shows the PiP button and PiP works as expected.
Additionally, background audio does not work on iOS: with bkmodeEnabled at its documented default of true and UIBackgroundModes → audio declared in Info.plist, locking the screen during playback stops the sound.
It should keep playing. Both issues reproduce on every attempt on a real device.
opened 12:22PM - 27 Aug 26 UTC
## Bug Report
### Capacitor Version
```
Latest Dependencies:
@capacitor/cli:… 8.5.0
@capacitor/core: 8.5.0
@capacitor/android: 8.5.0
@capacitor/ios: 8.5.0
Installed Dependencies:
@capacitor/ios: 8.0.1
@capacitor/cli: 7.4.5
@capacitor/android: 8.0.1
@capacitor/core: 8.0.1
```
### Plugin Version
```
@capgo/capacitor-video-player": "^8.2.7
```
### Platform(s)
iOS
### Current Behavior
Picture-in-Picture does not work on iOS.
The PiP button is never rendered in the native player controls — it is not greyed out or inactive, it is simply absent.
Video playback itself works normally.
The same code on Android shows the PiP button and PiP works as expected.
Additionally, background audio does not work on iOS: with `bkmodeEnabled` at its documented default of `true` and `UIBackgroundModes → audio` declared in `Info.plist`, locking the screen during playback stops the sound.
It should keep playing. Both issues reproduce on every attempt on a real device
### Expected Behavior
With `pipEnabled: true`, the PiP button should appear in the iOS player controls and Picture in Picture should work, as stated in the README support matrix (`Picture in Picture | iOS ✅ | Android ✅`).
But PiP button does not work on iOS.
### Code Reproduction
```
await VideoPlayer.initPlayer({
playerId: 'session-player',
mode: 'fullscreen',
url: this.session.url,
title: this.session.title,
artwork: this.session.playbackImageUrl,
pipEnabled: true,
exitOnEnd: false,
chromecast: false,
});
```
`ios/App/App/Info.plist` — the Chromecast keys from the documentation, plus the audio background mode:
```xml
<key>NSBonjourServices</key>
<array>
<string>_googlecast._tcp</string>
<string>_CC1AD845._googlecast._tcp</string>
</array>
<key>NSLocalNetworkUsageDescription</key>
<string>This app uses the local network to discover Cast-enabled devices on your WiFi network.</string>
<key>UIBackgroundModes</key>
<array>
<string>audio</string>
</array>
```
<img width="1125" height="2436" alt="Image" src="https://github.com/user-attachments/assets/02676940-1493-418c-97b5-d71abd5797d6" />
I have a play button and forward and backward, but for privacy, I removed it.
### Other Technical Details
`npm --version` output: 10.9.3
`node --version` output: v22.20.0
`pod --version` output (iOS issues only): 1.16.2