Back to compare picker

Location permission flow vs Permission request vs Map view vs Address entry vs Privacy settings vs Offline state

Use location permission flow when a task needs current device coordinates and must explain purpose, timing, precision, permission scope, errors, stale coordinates, fallback, settings recovery, and retention. Use permission request for generic resource access, map view for spatial display, address entry for typed or selected places, privacy settings for durable controls, and offline state for connectivity loss.

Learn the decision

Match the interaction to the person's task

Use location permission flow when a task needs current device coordinates and must explain purpose, timing, precision, permission scope, errors, stale coordinates, fallback, settings recovery, and retention. Use permission request for generic resource access, map view for spatial display, address entry for typed or selected places, privacy settings for durable controls, and offline state for connectivity loss.

Location permission flow

Use it when: Current device coordinates materially improve a task such as nearby search, route start, check-in, delivery estimate, safety sharing, field work, or support diagnostics.

Make this state clear: Unsupported browser, blocked iframe, missing permissions policy, insecure context, or disabled location services state.

Observe the result: A user taps Check in nearby, grants Allow once, sees the current fix and accuracy, confirms the place, and the app discards coordinates after check-in.

Study the full pattern →

Permission request

Use it when: A feature needs operating-system, browser, or device authorization to access location, camera, microphone, photos, contacts, notifications, Bluetooth, clipboard, motion sensors, storage access, or another powerful feature.

Make this state clear: Contextual request state tied to the user action that needs the resource.

Observe the result: A user denies precise location, chooses approximate location instead, and the app still shows nearby pickup points with lower accuracy.

Study the full pattern →

Map view

Use it when: Users choose or inspect objects by where they are, how near they are, or what area they fall inside.

Make this state clear: Default map state with visible viewport, zoom level or distance context, markers, layer state, result count, and synchronized fallback list.

Observe the result: A dispatcher pans to the west district, the result count and list update to the current bounds, a cluster expands at closer zoom, and the selected incident popup remains tied to the marker.

Study the full pattern →

Address entry

Use it when: The product needs a complete postal, delivery, billing, service, or official contact address.

Make this state clear: Initial state with country or domestic coverage explained and lookup or manual entry available.

Observe the result: A user enters SW1A1AA, sees several addresses, selects Flat 2, adds an organization name, and reviews the stored line, town, postcode, and country parts before continuing.

Study the full pattern →

Privacy settings

Use it when: Users need ongoing control over personal data collection, saved activity, visibility, app access, device permissions, connected services, data sharing, or personalization.

Make this state clear: Privacy settings overview with categories and current effective values.

Observe the result: A user pauses saved activity, clears search history for a date range, disables ad personalization, hides birthday visibility, revokes a connected app, and sees which values apply immediately versus after sync.

Study the full pattern →

Offline state

Use it when: Connection loss or server reachability changes the user's current task.

Make this state clear: Offline banner or local status that names affected scope.

Observe the result: A user loses connection while editing an inspection note, sees it saved on this device, attaches photos to a queue, and later watches the queue sync after reconnect.

Study the full pattern →

Practice the judgment: Imagine this situation: The app asks for exact location on first load before users choose a location-dependent task. Write the person's goal, choose one of these patterns, and show the state that helps the person continue. Use the decision rules and source trail below to explain your choice.

Review the underlying principle →

Decision dimensions

Dimension Location permission flowPermission requestMap viewAddress entryPrivacy settingsOffline state
UI or UX UI + UX - Permission-gated current-location request and recovery flowUI + UX - Contextual operating-system or browser permission request for device resources, powerful browser features, private user data, or local capabilitiesUI + UX - Spatial viewport for location-based objects, layers, and routesUI + UX - Structured postal or contact address capture flowUI + UX - Durable privacy-control surface for account, product, device, app-access, activity, visibility, and sharing settingsUI + UX - Connectivity-mode and local-work continuity state
UI guidance Render location access as a task-scoped flow with purpose text, current permission state, requested precision, scope, native-prompt handoff, granted fix, denied recovery, manual fallback, stale-coordinate labels, and stop-sharing controls.Render a permission request as a contextual feature gate that names the resource, user action, immediate benefit, system prompt timing, available choices, and fallback before invoking the OS or browser permission prompt.Render a real spatial viewport with visible map region, zoom state, scale or distance context, markers or shapes anchored to coordinates, selected-place detail, cluster counts, visible layer/filter controls, and a fallback list or table for the same results.Render address capture as a labelled fieldset or page section with address line, locality, region when needed, postal code, country, and an address lookup only when its coverage is clear.Render privacy settings as a returnable control surface with current effective values, privacy categories, data types, app or service access, account/device/product scope, source of truth, managed or unavailable reasons, last updated status, and save or immediate-apply feedback.Show offline status where it changes the current task, naming what remains available such as cached reports, local draft editing, queued saves, or read-only history.
UX guidance Use a location permission flow when current device coordinates materially reduce effort or improve a location-dependent task and users can understand why location is needed before the browser or OS prompt appears.Use permission request when a feature needs operating-system or browser authorization for resources such as location, camera, microphone, photos, contacts, notifications, Bluetooth, clipboard, motion sensors, or other powerful features.Use Map view when the user's decision depends on where objects are, how far apart they are, what falls inside the current area, which route or coverage applies, or how dense nearby points are.Use address entry when the service needs a complete address for delivery, billing, correspondence, identity, eligibility, routing, tax, or account records and downstream systems need reliable address parts.Use privacy settings when users need to inspect and change ongoing privacy posture for saved activity, profile visibility, app access, device permissions, data sharing, ad personalization, location, connected apps, or product privacy dashboards.Use offline state to preserve trust and task continuity when connection loss changes what users can read, edit, submit, sync, refresh, or share.
Good UI A route check-in says Use current location to confirm you are at Gate B, offers Use current location or Enter address, accepts approximate location for city-level help, and labels the returned fix as accurate to 42 m.A field service app asks for location only when the user taps Start route, explains that current location will verify arrival, then opens the system permission prompt and offers manual address entry if declined.A clinic finder map shows visible bounds, zoom level, selected clinic marker, appointment availability markers, a transit layer toggle, cluster counts, distance chips, and a synchronized results list.A benefits claim asks for postcode lookup, lists matching addresses, includes Enter address manually, and then shows editable address line 1, address line 2, town or city, postcode, and country.An account privacy dashboard groups Saved activity, Profile visibility, Ad personalization, Connected apps, Location history, Device permissions, and Data deletion, with current values, scope labels, last updated times, and unavailable reasons.A field report says Offline: 3 edits saved on this device, cached customer history shown from 10:42, Submit disabled until connection returns, and Retry connection.
Bad UI The home page triggers the browser location prompt before users choose any location-dependent action.An app asks for location, contacts, photos, and notifications on first launch before the user knows why any resource is needed.The selected popup is detached from the marker or opens outside the viewport.A selected address is stored as a provider label rather than structured parts.A single Privacy mode switch claims to turn everything off but leaves ad personalization, public profile visibility, connected apps, and activity retention unchanged.A blank page says You are offline even though the app has cached drafts and help content.
Good UX A user taps Check in nearby, grants Allow once, sees the current fix and accuracy, confirms the place, and the app discards coordinates after check-in.A user denies precise location, chooses approximate location instead, and the app still shows nearby pickup points with lower accuracy.A dispatcher pans to the west district, the result count and list update to the current bounds, a cluster expands at closer zoom, and the selected incident popup remains tied to the marker.A user enters SW1A1AA, sees several addresses, selects Flat 2, adds an organization name, and reviews the stored line, town, postcode, and country parts before continuing.A user pauses saved activity, clears search history for a date range, disables ad personalization, hides birthday visibility, revokes a connected app, and sees which values apply immediately versus after sync.A user loses connection while editing an inspection note, sees it saved on this device, attaches photos to a queue, and later watches the queue sync after reconnect.
Bad UX A user chooses delivery estimate and the app demands precise location even though postal code entry would work.A user denies microphone access and the app loops the same system prompt every time they tap anything in the support screen.A user filters to open locations but the map markers update while the list still shows closed locations, causing the wrong branch to be selected.A checkout removes Apartment 4B after validation and the parcel is delivered to the wrong household.A user withdraws a consent prompt, but privacy settings still show personalization enabled because the source of truth and sync state are hidden.A submitted offline form disappears from the screen even though it was neither queued nor accepted by the server.
Best fit Current device coordinates materially improve a task such as nearby search, route start, check-in, delivery estimate, safety sharing, field work, or support diagnostics.A feature needs operating-system, browser, or device authorization to access location, camera, microphone, photos, contacts, notifications, Bluetooth, clipboard, motion sensors, storage access, or another powerful feature.Users choose or inspect objects by where they are, how near they are, or what area they fall inside.The product needs a complete postal, delivery, billing, service, or official contact address.Users need ongoing control over personal data collection, saved activity, visibility, app access, device permissions, connected services, data sharing, or personalization.Connection loss or server reachability changes the user's current task.
Avoid when Typed address, postal code, saved place, or map selection is simpler and less invasive.The decision is consent to optional data use rather than access to a device or browser resource.Location is only a label or decorative backdrop.The product only needs one short location label, room name, or delivery note.The task is a first-time opt-in to one optional purpose; use consent prompt.A single request failed while the rest of the app is reachable and an error state is clearer.
Required state Unsupported browser, blocked iframe, missing permissions policy, insecure context, or disabled location services state.Contextual request state tied to the user action that needs the resource.Default map state with visible viewport, zoom level or distance context, markers, layer state, result count, and synchronized fallback list.Initial state with country or domestic coverage explained and lookup or manual entry available.Privacy settings overview with categories and current effective values.Offline banner or local status that names affected scope.
Accessibility burden Label Use current location, Enter address, Retry, Open settings, Stop sharing, and Clear location controls visibly and programmatically.Use a labelled region or dialog title that names the resource and feature, such as Allow location for route check-in.Expose the map name, current area, result count, active filters, layers, selected place, and location permission state as text.Group related address fields with a clear heading or legend that states which address is being requested.Use clear headings, labels, descriptions, and status text for each privacy category and control.Announce significant connectivity changes with status messaging when they affect the current task.
Common misuse Prompting for location before users choose a task that needs it.Asking for multiple resources at launch before the user has attempted the relevant feature.Treating geolocation denial as a dead end.Forcing every address through a domestic postcode or ZIP lookup.Replacing privacy settings with a privacy policy link or legal notice.Showing only a browser-style offline page when useful cached or local content exists.

Location permission flow

UI or UX
UI + UX - Permission-gated current-location request and recovery flow
UI guidance
Render location access as a task-scoped flow with purpose text, current permission state, requested precision, scope, native-prompt handoff, granted fix, denied recovery, manual fallback, stale-coordinate labels, and stop-sharing controls.
UX guidance
Use a location permission flow when current device coordinates materially reduce effort or improve a location-dependent task and users can understand why location is needed before the browser or OS prompt appears.
Good UI
A route check-in says Use current location to confirm you are at Gate B, offers Use current location or Enter address, accepts approximate location for city-level help, and labels the returned fix as accurate to 42 m.
Bad UI
The home page triggers the browser location prompt before users choose any location-dependent action.
Good UX
A user taps Check in nearby, grants Allow once, sees the current fix and accuracy, confirms the place, and the app discards coordinates after check-in.
Bad UX
A user chooses delivery estimate and the app demands precise location even though postal code entry would work.
Best fit
Current device coordinates materially improve a task such as nearby search, route start, check-in, delivery estimate, safety sharing, field work, or support diagnostics.
Avoid when
Typed address, postal code, saved place, or map selection is simpler and less invasive.
Required state
Unsupported browser, blocked iframe, missing permissions policy, insecure context, or disabled location services state.
Accessibility burden
Label Use current location, Enter address, Retry, Open settings, Stop sharing, and Clear location controls visibly and programmatically.
Common misuse
Prompting for location before users choose a task that needs it.

Permission request

UI or UX
UI + UX - Contextual operating-system or browser permission request for device resources, powerful browser features, private user data, or local capabilities
UI guidance
Render a permission request as a contextual feature gate that names the resource, user action, immediate benefit, system prompt timing, available choices, and fallback before invoking the OS or browser permission prompt.
UX guidance
Use permission request when a feature needs operating-system or browser authorization for resources such as location, camera, microphone, photos, contacts, notifications, Bluetooth, clipboard, motion sensors, or other powerful features.
Good UI
A field service app asks for location only when the user taps Start route, explains that current location will verify arrival, then opens the system permission prompt and offers manual address entry if declined.
Bad UI
An app asks for location, contacts, photos, and notifications on first launch before the user knows why any resource is needed.
Good UX
A user denies precise location, chooses approximate location instead, and the app still shows nearby pickup points with lower accuracy.
Bad UX
A user denies microphone access and the app loops the same system prompt every time they tap anything in the support screen.
Best fit
A feature needs operating-system, browser, or device authorization to access location, camera, microphone, photos, contacts, notifications, Bluetooth, clipboard, motion sensors, storage access, or another powerful feature.
Avoid when
The decision is consent to optional data use rather than access to a device or browser resource.
Required state
Contextual request state tied to the user action that needs the resource.
Accessibility burden
Use a labelled region or dialog title that names the resource and feature, such as Allow location for route check-in.
Common misuse
Asking for multiple resources at launch before the user has attempted the relevant feature.

Map view

UI or UX
UI + UX - Spatial viewport for location-based objects, layers, and routes
UI guidance
Render a real spatial viewport with visible map region, zoom state, scale or distance context, markers or shapes anchored to coordinates, selected-place detail, cluster counts, visible layer/filter controls, and a fallback list or table for the same results.
UX guidance
Use Map view when the user's decision depends on where objects are, how far apart they are, what falls inside the current area, which route or coverage applies, or how dense nearby points are.
Good UI
A clinic finder map shows visible bounds, zoom level, selected clinic marker, appointment availability markers, a transit layer toggle, cluster counts, distance chips, and a synchronized results list.
Bad UI
The selected popup is detached from the marker or opens outside the viewport.
Good UX
A dispatcher pans to the west district, the result count and list update to the current bounds, a cluster expands at closer zoom, and the selected incident popup remains tied to the marker.
Bad UX
A user filters to open locations but the map markers update while the list still shows closed locations, causing the wrong branch to be selected.
Best fit
Users choose or inspect objects by where they are, how near they are, or what area they fall inside.
Avoid when
Location is only a label or decorative backdrop.
Required state
Default map state with visible viewport, zoom level or distance context, markers, layer state, result count, and synchronized fallback list.
Accessibility burden
Expose the map name, current area, result count, active filters, layers, selected place, and location permission state as text.
Common misuse
Treating geolocation denial as a dead end.

Address entry

UI or UX
UI + UX - Structured postal or contact address capture flow
UI guidance
Render address capture as a labelled fieldset or page section with address line, locality, region when needed, postal code, country, and an address lookup only when its coverage is clear.
UX guidance
Use address entry when the service needs a complete address for delivery, billing, correspondence, identity, eligibility, routing, tax, or account records and downstream systems need reliable address parts.
Good UI
A benefits claim asks for postcode lookup, lists matching addresses, includes Enter address manually, and then shows editable address line 1, address line 2, town or city, postcode, and country.
Bad UI
A selected address is stored as a provider label rather than structured parts.
Good UX
A user enters SW1A1AA, sees several addresses, selects Flat 2, adds an organization name, and reviews the stored line, town, postcode, and country parts before continuing.
Bad UX
A checkout removes Apartment 4B after validation and the parcel is delivered to the wrong household.
Best fit
The product needs a complete postal, delivery, billing, service, or official contact address.
Avoid when
The product only needs one short location label, room name, or delivery note.
Required state
Initial state with country or domestic coverage explained and lookup or manual entry available.
Accessibility burden
Group related address fields with a clear heading or legend that states which address is being requested.
Common misuse
Forcing every address through a domestic postcode or ZIP lookup.

Privacy settings

UI or UX
UI + UX - Durable privacy-control surface for account, product, device, app-access, activity, visibility, and sharing settings
UI guidance
Render privacy settings as a returnable control surface with current effective values, privacy categories, data types, app or service access, account/device/product scope, source of truth, managed or unavailable reasons, last updated status, and save or immediate-apply feedback.
UX guidance
Use privacy settings when users need to inspect and change ongoing privacy posture for saved activity, profile visibility, app access, device permissions, data sharing, ad personalization, location, connected apps, or product privacy dashboards.
Good UI
An account privacy dashboard groups Saved activity, Profile visibility, Ad personalization, Connected apps, Location history, Device permissions, and Data deletion, with current values, scope labels, last updated times, and unavailable reasons.
Bad UI
A single Privacy mode switch claims to turn everything off but leaves ad personalization, public profile visibility, connected apps, and activity retention unchanged.
Good UX
A user pauses saved activity, clears search history for a date range, disables ad personalization, hides birthday visibility, revokes a connected app, and sees which values apply immediately versus after sync.
Bad UX
A user withdraws a consent prompt, but privacy settings still show personalization enabled because the source of truth and sync state are hidden.
Best fit
Users need ongoing control over personal data collection, saved activity, visibility, app access, device permissions, connected services, data sharing, or personalization.
Avoid when
The task is a first-time opt-in to one optional purpose; use consent prompt.
Required state
Privacy settings overview with categories and current effective values.
Accessibility burden
Use clear headings, labels, descriptions, and status text for each privacy category and control.
Common misuse
Replacing privacy settings with a privacy policy link or legal notice.

Offline state

UI or UX
UI + UX - Connectivity-mode and local-work continuity state
UI guidance
Show offline status where it changes the current task, naming what remains available such as cached reports, local draft editing, queued saves, or read-only history.
UX guidance
Use offline state to preserve trust and task continuity when connection loss changes what users can read, edit, submit, sync, refresh, or share.
Good UI
A field report says Offline: 3 edits saved on this device, cached customer history shown from 10:42, Submit disabled until connection returns, and Retry connection.
Bad UI
A blank page says You are offline even though the app has cached drafts and help content.
Good UX
A user loses connection while editing an inspection note, sees it saved on this device, attaches photos to a queue, and later watches the queue sync after reconnect.
Bad UX
A submitted offline form disappears from the screen even though it was neither queued nor accepted by the server.
Best fit
Connection loss or server reachability changes the user's current task.
Avoid when
A single request failed while the rest of the app is reachable and an error state is clearer.
Required state
Offline banner or local status that names affected scope.
Accessibility burden
Announce significant connectivity changes with status messaging when they affect the current task.
Common misuse
Showing only a browser-style offline page when useful cached or local content exists.
Decision rules
  • Choose location permission flow when the product needs current device location for a task and must handle pre-prompt rationale, browser or OS prompt timing, allow once, while using, background denial, precise or approximate choice, granted fix, denied state, settings recovery, timeout, unavailable location, cached or stale coordinates, manual fallback, active tracking, stop sharing, and retention.
  • Choose permission request when the design problem is a generic access ask for camera, microphone, notifications, clipboard, contacts, photos, or location; location permission flow is the specialized geolocation lifecycle inside a current-location task.
  • Choose map view when users need to inspect spatial context, markers, routes, regions, layers, clustering, or panning and zooming; a map may consume location but does not own permission purpose, precision, denial recovery, stale-coordinate handling, or tracking stop controls.
  • Choose address entry when users type, paste, search, or select a postal address, delivery address, pickup point, or saved place; do not force device coordinates when a manual address is the simpler and less invasive answer.
  • Choose privacy settings when users manage durable account, device, app, analytics, sharing, location history, or retention preferences outside the immediate task; do not hide task-time location denial recovery only inside settings.
  • Choose offline state when the issue is network absence, cached data, queued work, or reconnect behavior; offline is different from location permission denied, location timeout, inaccurate coordinates, or location services disabled.
  • A complete location permission flow states why location is needed before the native prompt, what precision is acceptable, whether one-time or session access is enough, whether background tracking is requested, and what is stored after the task completes.
  • Location denial must preserve the task through manual address entry, saved place selection, retry, or settings instructions instead of showing a blank map or looping permission prompts.
  • Stale coordinates must be labeled with last updated time and accuracy; never present cached coordinates as a fresh current-location fix.
  • Active tracking must expose a persistent indicator and Stop sharing control, and retained location data must have a clear purpose, duration, and deletion or settings path.
Inspect live examples
Failure modes
  • The app asks for exact location on first load before users choose a location-dependent task.
  • A denied prompt leaves a blank map with no manual address, saved place, retry, or settings recovery.
  • Approximate location is rejected even though city-level routing, tax, store availability, or content personalization would work.
  • Cached coordinates from yesterday are shown as current location.
  • Background tracking begins after a while-using prompt without a visible indicator or stop control.
  • A no-internet banner is shown for a permission denial, causing users to troubleshoot the wrong issue.
  • The app stores latitude and longitude after the task without purpose, retention copy, or privacy settings access.

Saved items