Troubleshooting

Diagnose configuration, authentication, contract, subscription, upload, and push failures by boundary.

SymptomBoundary to checkResolution
Client shows a configuration error at launchBackend presetSet the selected mode's required base URL and origin. Do not configure fallback behavior.
Auth returns 403 MISSING_OR_NULL_ORIGINTrusted originMake the client's exact request Origin match the host allow-list. Do not confuse it with a deep-link scheme.
Native social sign-in is rejectedOAuth audienceConfigure the active mobile solution's Apple bundle ID and Google client IDs on the host.
get-session returns 200 with nullSession lifecycleTreat the session as invalid, clear secure state and caches, and return to sign-in.
App API returns 401 UNAUTHENTICATEDBearer sessionInvalidate once; do not retry in a loop or fall back to Supabase.
API schema or error code differs by hostContract driftCompare the host mirror to the canonical OpenAPI and run conformance tests.
Purchase succeeds but another surface stays lockedWebhook and identityVerify webhook authorization, explicit product mapping, and RevenueCat user identity. Refresh the host snapshot.
Upload presign succeeds but completion failsStorage boundaryVerify MIME/size limits, direct-upload response, object key, and host storage credentials.
Android test push is unavailableCapability boundaryExpected in v1: register the FCM token, but do not call the APNs-only test endpoint.
Expo Unified fails on WebRuntime restrictionExpected: Unified supports Expo iOS/Android only. Build Web in Standalone mode.

Include the host request ID and stable error code in support reports. Never include Bearer tokens, cookies, presigned URLs, secrets, or full provider payloads.