# Expo mobile starter

> Start from an Expo application with the Agsemble SDK, local persistence, and retry-safe observation sync.

Human-readable version: https://agsemble.com/docs/guides/expo

## Download and configure

The starter includes the SDK source and a working application, so it does not depend on a public package registry.

```text
Download: https://agsemble.com/downloads/agsemble-expo-starter.zip

EXPO_PUBLIC_AGSEMBLE_API_KEY=ag_test_...
EXPO_PUBLIC_AGSEMBLE_BASE_URL=https://api.agsemble.com
```

## Offline-first write sequence

- Create an obs_* identifier on the device.
- Persist the observation locally with pending status.
- Send it with the same value as Idempotency-Key.
- Mark it synced only after a successful response.
- Reuse the same identifier after timeouts or restarts.

## Before a store release

- Move API keys to a backend or secure issuance flow; do not ship a production secret in the app bundle.
- Keep the capability check in startup diagnostics.
- Display source attribution for exported weather and satellite results.
- Test sync under airplane mode, intermittent connections, and duplicated retries.
