import * as SecureStore from "expo-secure-store"; import type { TokenCache } from "@clerk/expo"; /** * Persists the Clerk session JWT in the OS-level secure keystore (Android * Keystore / iOS Keychain) instead of Clerk's in-memory default, so the * signed-in session survives an app restart. */ export const secureTokenCache: TokenCache = { async getToken(key) { try { return await SecureStore.getItemAsync(key); } catch { return null; } }, async saveToken(key, value) { try { await SecureStore.setItemAsync(key, value); } catch { // Storage write failed (e.g. no keystore available) — session simply // won't persist across restarts; sign-in flow still works this run. } }, async clearToken(key) { try { await SecureStore.deleteItemAsync(key); } catch { // best-effort cleanup } }, };