Device consents
A browser can do things for a site that a plain web page cannot — know where you are, raise a notification, and over time more. None of it happens without your say-so. CTXR calls that say-so a consent, and keeps the word deliberately apart from a platform permission: a permission is a right an actor holds inside a space; a consent is a device capability a visitor grants to their own browser. Different thing, different word — so the two never blur.
This page is the shared model behind every device consent. The individual ones — Geolocation and Notifications — and the Proximity behaviour built on them all follow these rules.
The shared model
- Granted to the device, not to an account. A consent lives in the browser. There’s nothing to log into and nothing stored about you on a server — which is exactly why the anonymous visitor of Anonymous by default can use these at all.
- Asked only on your gesture. A consent is never requested on page load. You tap a button; the site explains, in one combined dialog, what it wants; and the browser’s own native prompt does the actual asking. A single dialog can cover location and notifications together — one clear choice, not a trail of pop-ups.
- Per capability, and revocable. Grant location without notifications, or the reverse. Revoke either in your browser or system settings at any time, and the page simply degrades — no distance sorting, or silence — never an error, never a nag.
- Resumes on return. Once granted, a consent resumes on your next visit without asking again, because the grant was the gesture.
- The OS has the last word. Operating-system rules no website can change — iOS requiring the app to be installed, Focus modes, per-app toggles — sit above all of this. The exact limits live on each consent’s own page.
You don’t build these — you use them
The consents are part of the platform. A developer doesn’t write geolocation plumbing or a notification flow; the platform’s brokers already implement them. To use one, you drop a small markup hook into your template and the broker handles the prompt, the device API, and the graceful degradation for you. Those hooks — the place of use — are catalogued in PWA hooks & attributes. This page is the why and what; that page is the how.
The consents available today
| Consent | Lets a site… | Detail |
|---|---|---|
| Location | sort by distance, show where you are, drive proximity | Geolocation |
| Notifications | raise an alert worth interrupting for | Notifications |
More will join this family on the same pattern (camera, microphone, audio): one consent model, one page each, one hook to use it. The Proximity behaviour shows how consents compose into something with meaning, while adding no new consent of its own.