I made a simple iOS app that uses the Screen Time API to block a selection of apps. Once blocked, you have to scan the QR code on the ESP32 screen. This QR code is updated every 30 seconds using the TOTP algorithm (which is used by authenticator apps). It only uses a hardcoded shared key and the current timestamp, so there is no need to make the ESP32 and the iPhone communicate together. You do need to connect the ESP to WiFi at boot to sync its clock via NTP.
This design allows the QR code to be displayed on anything (e.g. a web page), but having it on a dedicated device adds more friction, which we want!