Found by the new iOS e2e suite (#81).
What
config/mobile.ts declares:
urlSchemes: ['benchreview'],iOS registers the scheme and hands the URL to the app — but the native shell does nothing with it. benchreview://judges leaves the WebView on whatever page it was already showing.
Verified on an iPhone 17 Pro simulator against a bundled (MOBILE_E2E=1) build: the app stayed on the coming-soon page through the full 30s wait. The screenshot is in the run output under storage/framework/runtime/e2e/ios/tests/.
Why it matters
It is the same shape as #80 — an entitlement declared with nothing on the other side of it — and it fails the same way, silently. Nothing logs, nothing errors; the link simply does not go anywhere.
It also blocked the offline flow, which originally reached its second page via the scheme. That flow navigates through the menu now, so the offline test fails only for offline reasons.
Reproduce
bun run test:e2e:ios -- --flow=deep-link --include-pendingThe flow is kept as .maestro/flows/pending-03-deep-link.yaml rather than deleted — it is the evidence. The runner skips pending-* by default so a red suite always means a regression rather than a known bug.
Likely shape of the fix
The shell needs to map an incoming URL to a WebView navigation: strip the scheme and load the remaining path against the bundled site or the configured server. Worth checking whether this is bench's to fix or belongs in the Stacks mobile shell — the generated Sources are framework-owned, same as the PRODUCT_NAME gap #81 ran into.