Proximity
Proximity is the first behaviour: not a capability of its own, but a composition of two — Geolocation provides positions, Notifications provides the voice, and proximity gives the combination a meaning: tell me when I enter the radius of a place.
That layering is the mental model for everything on this page. Proximity adds no permission of its own — it activates only when both underlying capabilities are granted — and it inherits every boundary they have. If the OS can’t produce a position, proximity is quiet. If notifications are silenced, proximity is silent. The behaviour can never do more than its building blocks allow; what it adds is judgement about when the blocks should act.
Driven by what things are
Places participate in proximity by what they are, not by where they happen to appear. A place’s type declares it: published places carry coordinates, and the platform keeps a small public feed of them — a JSON extract that updates automatically whenever content changes. The installed app reads that feed once and then knows, on every page, what’s worth being told about. Reading an article three pages deep? You’ll still be told when you come within range of a place — by default 150 metres.
Because the feed is cached like everything else, this keeps working offline against the last-known set of places. And because the feed contains only public data — names, coordinates, links of published places — there’s nothing in it that isn’t already on the website.
The boundary is the message
Proximity notifies on entering the radius, and the boundary logic is deliberately one-sided:
- Arriving inside the radius — including opening the app while you’re already there — produces exactly one notification for that place.
- Staying inside produces nothing further. You are not notified per step.
- GPS wobble at the edge produces nothing: re-arming requires genuinely leaving (one and a half times the radius), not flickering across the line.
- Leave and come back later, and you’ll be told once again.
Each notification names the place, states the distance, and offers to open the place page or directions.
Privacy, inherited and kept
The composition keeps the promises of its parts. The feed travels to your device; your position is compared against it on your device. Nothing about where you are or what you were told leaves the phone. The platform publishes coordinates; it never collects them.
Limits, inherited and honest
Proximity works while the app is open in the foreground — that’s the geolocation boundary, and it’s inherited, not chosen. A closed app cannot watch your position; the web platform forbids it, by design. When server-sent push (Web Push v2) arrives it will let a closed app receive content notifications, but it will not — cannot — turn into background location tracking. “Notify me near a place, even with the app closed” is beyond what the open web offers today, on any site; it’s useful to know that limit is the platform’s, not this implementation’s.
A family, not a feature
Proximity is the first behaviour, not the last. The pattern — platform content plus device capabilities plus a small piece of judgement — generalises: reminders for events you’ve saved (time plus notifications, rather than place plus notifications) is a natural sibling, and others will follow the same shape. Each new behaviour gets its own page here, inherits the capability permissions it composes, and adds no new ones of its own. That’s the quiet rule of this family: behaviours add meaning, never access.