Crash iOS 26.0: [__NSSingleObjectArrayI selectedMediaOptionInMediaSelectionGroup:]: unrecognized selector sent to instance

I'm having a crash on an app that plays videos when the users activates close captions. I was able to replicate the issue on an empty project. The crash happens when the AVPlayerLayer is used to instantiate an AVPictureInPictureController

These are the example project where I tested the crash:

struct ContentView: View {
    var body: some View {
        VStack {
            VideoPlaylistView()
        }
        .frame(maxWidth: .infinity, maxHeight: .infinity)
        .background(Color.black.ignoresSafeArea())
    }
}

class VideoPlaylistViewModel: ObservableObject {
    // Test with other videos
    var player: AVPlayer? = AVPlayer(url: URL(string:"https://d2ufudlfb4rsg4.cloudfront.net/newsnation/WIpkLz23h/adaptive/WIpkLz23h_master.m3u8")!)
}

struct VideoPlaylistView: View {
    @StateObject var viewModel = VideoPlaylistViewModel()

    var body: some View {
        ScrollView {
            VideoCellView(player: viewModel.player)
                .onAppear {
                    viewModel.player?.play()
                }
        }
        .scrollTargetBehavior(.paging)
        .ignoresSafeArea()
    }
}

struct VideoCellView: View {
    let player: AVPlayer?
    @State var isCCEnabled: Bool = false

    var body: some View {
        ZStack {
            PlayerView(player: player)
                .accessibilityIdentifier("Player View")
        }
        .containerRelativeFrame([.horizontal, .vertical])
        .overlay(alignment: .bottom) {
            Button {
                player?.currentItem?.asset.loadMediaSelectionGroup(for: .legible) { group,error in
                    if let group {
                        let option = !isCCEnabled ? group.options.first : nil
                        player?.currentItem?.select(option, in: group)
                        isCCEnabled.toggle()
                    }
                }
            } label: {
                Text("Close Captions")
                    .font(.subheadline)
                    .foregroundStyle(isCCEnabled ? .red : .primary)
                    .buttonStyle(.bordered)
                    .padding(8)
                    .background(Color.blue.opacity(0.75))
            }
            .padding(.bottom, 48)
            .accessibilityIdentifier("Button Close Captions")
        }
    }
}

import Foundation
import UIKit
import SwiftUI
import AVFoundation
import AVKit

struct PlayerView: UIViewRepresentable {
    let player: AVPlayer?

    func updateUIView(_ uiView: UIView, context: UIViewRepresentableContext<PlayerView>) {
    }

    func makeUIView(context: Context) -> UIView {
        let view = PlayerUIView()
        view.playerLayer.player = player
        view.layer.addSublayer(view.playerLayer)
        view.layer.backgroundColor = UIColor.red.cgColor
        
        view.pipController = AVPictureInPictureController(playerLayer: view.playerLayer)
        view.pipController?.requiresLinearPlayback = true
        view.pipController?.canStartPictureInPictureAutomaticallyFromInline = true
        view.pipController?.delegate = view
        return view
    }
}

class PlayerUIView: UIView, AVPictureInPictureControllerDelegate {
    let playerLayer = AVPlayerLayer()
    var pipController: AVPictureInPictureController?

    override init(frame: CGRect) {
        super.init(frame: frame)
    }

    required init?(coder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }

    override func layoutSubviews() {
        super.layoutSubviews()
        playerLayer.frame = bounds
        playerLayer.backgroundColor = UIColor.green.cgColor
    }

    func pictureInPictureController(_ pictureInPictureController: AVPictureInPictureController, failedToStartPictureInPictureWithError error: any Error) {
        print("Error starting Picture in Picture: \(error.localizedDescription)")
    }
}

class AppDelegate: NSObject, UIApplicationDelegate {
    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {

        let audioSession = AVAudioSession.sharedInstance()
        do {
            try audioSession.setCategory(.playback, mode: .moviePlayback)
            try audioSession.setActive(true)
        } catch {
            print("ERR: \(error.localizedDescription)")
        }

        return true
    }
}

UITest to make the app crash:

final class VideoPlaylistSampleUITests: XCTestCase {

    func testCrashiOS26ToggleCloseCaptions() throws {
        let app = XCUIApplication()
        app.launch()
        let videoPlayer = app.otherElements["Player View"]
        XCTAssertTrue(videoPlayer.waitForExistence(timeout: 30))
        let closeCaptionButton = app.buttons["Button Close Captions"]
        for _ in 0..<2000 {
            closeCaptionButton.tap()
        }
    }
}

Crash iOS 26.0: [__NSSingleObjectArrayI selectedMediaOptionInMediaSelectionGroup:]: unrecognized selector sent to instance
 
 
Q