iOS Simulator (18.4) crashes when user clicks allow for Speech Recognition permission popup

When a new application runs on iOS 18.4 simulator and tries to access the Speech Framework, prompting a request for authorisation to use Speech Recognition, the application will crash if the user clicks allow. Same issue in the visionOS 2.4 simulator.

Using Swift 6. Report Identifier: FB17686186

/// Checks speech recognition availability and requests necessary permissions.
@MainActor
func checkAvailabilityAndPermissions() async {
    logger.debug("Checking speech recognition availability and permissions...")
    
    // 1. Verify that the speechRecognizer instance exists
    guard let recognizer = speechRecognizer else {
        logger.error("Speech recognizer is nil - speech recognition won't be available.")
        reportError(.configurationError(description: "Speech recognizer could not be created."), context: "checkAvailabilityAndPermissions")
        self.isAvailable = false
        return
    }
    
    // 2. Check recognizer availability (might change at runtime)
    if !recognizer.isAvailable {
        logger.error("Speech recognizer is not available for the current locale.")
        reportError(.configurationError(description: "Speech recognizer not available."), context: "checkAvailabilityAndPermissions")
        self.isAvailable = false
        return
    }
    logger.trace("Speech recognizer exists and is available.")

    // 3. Request Speech Recognition Authorization
    // IMPORTANT: Add `NSSpeechRecognitionUsageDescription` to Info.plist
    let speechAuthStatus = SFSpeechRecognizer.authorizationStatus()
    logger.debug("Current Speech Recognition authorization status: \(speechAuthStatus.rawValue)")
    
    if speechAuthStatus == .notDetermined {
        logger.info("Requesting speech recognition authorization...")
        // Use structured concurrency to wait for permission result
        let authStatus = await withCheckedContinuation { continuation in
            SFSpeechRecognizer.requestAuthorization { status in
                continuation.resume(returning: status)
            }
        }
        logger.debug("Received authorization status: \(authStatus.rawValue)")
        
        // Now handle the authorization result
        let speechAuthorized = (authStatus == .authorized)
        handleAuthorizationStatus(status: authStatus, type: "Speech Recognition")
        
        // If speech is granted, now check microphone
        if speechAuthorized { 
            await checkMicrophonePermission()
        }
    } else {
        // Already determined, just handle it
        let speechAuthorized = (speechAuthStatus == .authorized)
        handleAuthorizationStatus(status: speechAuthStatus, type: "Speech Recognition")
        
        // If speech is already authorized, check microphone
        if speechAuthorized {
            await checkMicrophonePermission()
        }
    }
}
iOS Simulator (18.4) crashes when user clicks allow for Speech Recognition permission popup
 
 
Q