Error: Invalid Refresh Token: Refresh Token Not Found
Solution: Improved session handling and automatic token refresh
- Before: Immediately signed out on any session error
- After: Attempts to refresh the session before signing out
Logic Flow:
Session Error Detected
↓
Is it a Refresh Token error?
↓ Yes
Try to refresh session
↓
Refresh successful? → Keep user logged in ✅
↓ No
Sign out user ❌
- Added proper error handling for
setSession() - Shows success message when login completes
- Better error messages for debugging
- Session automatically saved to AsyncStorage
auth: {
storage: AsyncStorage, // Persist to device storage
autoRefreshToken: true, // Auto-refresh before expiry
persistSession: true, // Keep session across app restarts
detectSessionInUrl: false, // We handle OAuth manually
}- User clicks "Continue with Google"
- Signs in with Google
- Tokens received via deep link
setSession()saves to AsyncStorage- User stays logged in ✅
- App checks AsyncStorage for session
- If found, loads the session
- If refresh token expired, tries to refresh
- If refresh works, user stays logged in ✅
- Only signs out if refresh fails
- Happens automatically before token expires
- Supabase handles this in the background
- No user interaction needed
Before:
- User logs in
- Closes app
- Opens app → Logged out ❌
After:
- User logs in
- Closes app
- Opens app → Still logged in ✅
- Session persists for 7 days (default)
- Tokens stored securely in AsyncStorage
- Auto-refresh prevents expired sessions
- Only signs out on critical auth failures
- Session expires after 7 days of inactivity
To verify the fix:
- Sign in with Google OAuth
- Close the app completely
- Reopen the app
- You should still be logged in!
If you see the refresh token error again, check:
- AsyncStorage permissions
- Network connectivity during OAuth
- Supabase project settings