iOS26 captive portal detection changes?

Hi all,

I work on a smart product that, for setup, uses a captive portal to allow users to connect and configure the device.

It emits a WiFi network and runs a captive portal - an HTTP server operates at 10.0.0.1, and a DNS server responds to all requests with 10.0.0.1 to direct "any and all" request to the server.

When iOS devices connect, they send a request to captive.apple.com/hotspot-detect.html; if it returns success, that means they're on the internet; if not, the typical behavior in the past has been to assume you're connected to a captive portal and display what's being served.

I serve any requests to /hotspot-detect.html with my captive portal page (index.html).

This has worked reliably on iOS18 for a long time (user selects my products WiFi network, iOS detects portal and opens it).

But almost everyone who's now trying with iOS26 is having the "automatic pop up" behavior fail - usually it says "Error opening page - Hotspot login cannot open the page because the network connection was lost." However, if opening safari and navigating to any URL (or 10.0.0.1) the portal loads - it's just the iOS auto-detect and open that's not working

iOS18 always succeeds; iOS26 always fails.

Anybody have any idea what changes may have been introduced in iOS26 on this front, or anything I can do to help prompt or coax iOS26 into loading the portal? It typically starts reading, but then stops mid-read.

iOS26 captive portal detection changes?
 
 
Q