CBPeer.identifier changes after OS update and device reboot on iOS 27 (non-bonded BLE peripheral)

Summary

Our app uses CBPeer.identifier in Core Bluetooth to identify BLE peripherals. For the same non-bonded BLE peripheral, we have observed the following behavior:

  • On iOS 18, CBPeer.identifier did not change across OS updates or device reboots.
  • On devices updated to iOS 27.0, the CBPeer.identifier of the same peripheral became a different value after the OS update.
  • On iOS 27.0, we have also confirmed that CBPeer.identifier changes after a device reboot.

API documentation: https://developer.apple.com/documentation/corebluetooth/cbpeer/identifier

We would like to confirm whether this is a specification change in iOS 27 and whether it is intended behavior.

Questions

  1. Is it intended behavior in iOS 27 that CBPeer.identifier for a non-bonded BLE peripheral changes after an OS update or device reboot?
  2. If this is by design, is there any documentation (release notes, technical documents, API reference, etc.) that describes this change?
  3. Under what conditions can the CBPeer.identifier of a non-bonded BLE peripheral change? (e.g., OS update, device reboot, resetting Bluetooth settings, reinstalling the app, after a certain period of time, etc.)
  4. If we need to keep identifying the same non-bonded BLE peripheral across reboots and OS updates, what implementation approach do you recommend?

Any information would be greatly appreciated. Thank you.

CBPeer.identifier changes after OS update and device reboot on iOS 27 (non-bonded BLE peripheral)
 
 
Q