plugins.supabase-auth in tauri.conf.json. Two fields are required; the rest have defaults.
src-tauri/tauri.conf.json
Configuration is validated at startup. A typo aborts launch with a message naming the offending field, rather than failing at the first sign-in.
Options
string
required
Your Supabase project URL. For a local stack this is
http://127.0.0.1:54321.string
required
The publishable (anon) key. Never the service-role key — it is readable from the app bundle and bypasses row-level security.
"keychain" | "file" | "none"
default:"keychain"
Where the session is stored between launches.
keychain uses the OS credential store. file writes to the app data directory with 0600 permissions. none keeps the session in memory only, so quitting signs the user out.boolean
default:"true"
Refresh sessions in the background before they expire. The plugin owns this task itself — one task sleeping until
expires_at - refreshBufferSecs, re-evaluated on every state transition.number
default:"60"
How many seconds before expiry the background refresh fires.
number[]
default:"[43823, 43824, 43825]"
Loopback ports tried in order for the OAuth redirect. The plugin binds the first free one and asks GoTrue to redirect to
http://127.0.0.1:<port>/callback.number
default:"300"
How long an abandoned browser round-trip waits before failing with
oauthFlowInterrupted.string
The HTTPS origin a built-in native WebAuthn ceremony asserts. Required on Windows, ignored on macOS (the OS derives the origin from Associated Domains). Must appear in the project’s
GOTRUE_WEBAUTHN_RP_ORIGINS.Changing the callback ports
Supabase matchesadditional_redirect_urls exactly. If you change oauth.callbackPorts, add the matching http://127.0.0.1:<port>/callback URLs to the project.
Session persistence trade-offs
A corrupt or revoked stored session degrades to signed-out at startup. It never crashes the app and never leaves a half-restored session behind.

