iOS 27 beta: setExposureModeCustom has no effect on front TrueDepth camera (builtInTrueDepthCamera)

On every iOS 27.0 beta, setExposureModeCustom(duration:iso:completionHandler:) on the front TrueDepth camera (.builtInTrueDepthCamera, position .front) no longer has any observable effect on the video stream. Frame brightness continues to track continuous auto exposure. The same code applies exposure correctly on iOS 26.x and iOS 18.x on the same devices.

Reproduced on iPhone 14 Pro Max, iPhone 16, iPhone 16 Pro Max, and iPhone 17 Pro Max running iOS 27.0 betas. Not reproducible on any earlier iOS on the same hardware.

Configuration:

  • AVCaptureSession with the TrueDepth device as video input
  • AVCaptureVideoDataOutput (BGRA) plus AVCaptureDepthDataOutput connected
  • Session running, auto exposure settled

Repro:

  1. Start the session above and wait ~2 s for AE to settle.

  2. Apply a custom exposure that should visibly overexpose the image:

    try device.lockForConfiguration() let format = device.activeFormat device.setExposureModeCustom( duration: CMTime(value: 1, timescale: 15), iso: format.maxISO, // device reports ISO ran completionHandler: nil ) device.unlockForConfiguration()

  3. Observe mean luma of delivered frames.

Expected: frames become heavily overexposed (max ISO at 1/15 s). Actual: frame brightness is unchanged and keeps adapting with call never happened. No error is thrown, lockForConfiguration succeeds, and isExposureModeSupported(.custom) returns true. The device als custom range (ISO 20...1920, duration up to 1/15 s), so there is no API-visible signal that the command was not applied. [READBACK RESULT: state her device.exposureMode / device.iso / device.exposureDuration reflect the requested values after the call.]

Possibly related: on earlier releases the completionHandler f fired on builtInTrueDepthCamera (https://developer.apple.com/forums/thread/770566), while the exposure values themselves were still applied. On i longer applied either.

Questions:

  1. Is this an intentional change (for example, the system ret while the TrueDepth/depth pipeline is active), or a regression?
  2. If intentional, what is the supported way for an app to de refused, and is custom exposure still possible while an AVCaptureDepthDataOutput is connected?
iOS 27 beta: setExposureModeCustom has no effect on front TrueDepth camera (builtInTrueDepthCamera)
 
 
Q