The Geolocation module captures the user's coordinates via the browser's geolocation API and submits them to the backend. Useful for jurisdictional rules and fraud signals.
Follows a backend-process pattern variant with a permission step. Requires a user gesture before the browser will prompt for permission.
Tag
<incode-geolocation> is a standard Web Component. Importing the UI subpath registers the custom element; importing the CSS applies the module's styles.
import '@incodetech/web/geolocation';
import '@incodetech/web/geolocation/styles.css';
Properties
| Property | Type | Required | Description |
|---|---|---|---|
config |
GeolocationConfig |
❌ | Configuration options |
onFinish |
() => void |
❌ | Called when location is captured (or skipped) |
onError |
(error: string) => void |
❌ | Called when an error occurs |
Configuration
type GeolocationConfig = {
allowUserToSkipGeolocation?: boolean;
};
| Option | Type | Required | Description |
|---|---|---|---|
allowUserToSkipGeolocation |
boolean |
❌ | When true, a Skip button is shown on the permission-denied screen. Default false. Backend-driven via flow config. |
State machine
GeolocationState is a discriminated union over status:
| Status | Description |
|---|---|
idle |
Initial state. |
requestingLocation |
Browser permission prompt visible / location lookup in progress. |
locationAcquired |
Got coordinates; transitioning to submit. |
permissionDenied |
User denied permission. Show retry instructions or Skip (if enabled). |
submitting |
Sending coordinates to the backend. |
finished |
Terminal. |
See also
- Module Patterns → backend-process
- Individual Modules
- Troubleshooting → CSP: geolocation needs no special CSP, but may need feature-policy delegation in iframes