Clears user identity, attributes, cached entitlements, and signal queue. Generates a new anonymous ID.
reset() clears all user data including provisional entitlements that haven’t been verified. Use this when users log out or switch accounts.
Signature
Parameters
None
Return Value
Type: void
What Gets Cleared
When you call reset():
User identity (returns to anonymous)
All user attributes
Cached entitlements (provisional and verified)
Queued grant signals
Generates new anonymous UUID
Examples
Basic Reset
import Encore from '@encore/web-sdk' ;
Encore . reset ();
After Logout
function handleLogout () {
// Clear your app's session
clearAppSession ();
// Reset Encore
Encore . reset ();
// Redirect to login
window . location . href = '/login' ;
}
Account Switching
async function switchAccount ( newUserId ) {
// Clear previous user data
Encore . reset ();
// Load new user
const user = await loadUserData ( newUserId );
// Identify new user
Encore . identify ( user . id , {
email: user . email ,
subscriptionTier: user . subscription
});
}
Framework Integration
import Encore from '@encore/web-sdk' ;
import { useAuth } from './hooks/useAuth' ;
function LogoutButton () {
const { logout } = useAuth ();
const handleLogout = async () => {
// Clear app state
await logout ();
// Reset Encore
Encore . reset ();
// Redirect
window . location . href = '/login' ;
};
return (
< button onClick = { handleLogout } >
Logout
</ button >
);
}
When to Call reset()
User Logout
When a user logs out of your application: function logout () {
clearUserSession ();
Encore . reset ();
redirectToLogin ();
}
Account Switching
When switching between different user accounts: async function switchUser ( newUserId ) {
Encore . reset ();
await loadNewUser ( newUserId );
Encore . identify ( newUserId );
}
Testing/Development
During testing to start with a clean slate: // In test setup
beforeEach (() => {
Encore . reset ();
});
Privacy Compliance
When users request data deletion: function handleDataDeletion () {
await deleteUserDataFromBackend ();
Encore . reset ();
}
After Reset
After calling reset():
A new anonymous UUID is generated
The user has no entitlements
All cached data is cleared
You can call identify() again with a different user
// Reset to anonymous
Encore . reset ();
// New anonymous ID generated
console . log ( Encore . getCurrentUserId ()); // New UUID
// No entitlements
console . log ( Encore . isActive ({ type: 'freeTrial' })); // false
// Can identify a new user
Encore . identify ( 'new-user-456' );
Complete Example
import Encore from '@encore/web-sdk' ;
class AuthManager {
async logout () {
try {
// 1. Clear app session
await this . clearServerSession ();
this . clearLocalStorage ();
// 2. Reset Encore SDK
Encore . reset ();
// 3. Clear app state
this . clearAppState ();
// 4. Redirect
window . location . href = '/login' ;
} catch ( error ) {
console . error ( 'Logout failed:' , error );
}
}
async switchAccount ( newUserId ) {
try {
// 1. Reset current user
Encore . reset ();
// 2. Switch server session
await this . switchServerSession ( newUserId );
// 3. Load new user data
const user = await this . loadUserData ( newUserId );
// 4. Identify new user with Encore
Encore . identify ( user . id , {
email: user . email ,
subscriptionTier: user . subscription
});
// 5. Update app state
this . updateAppState ( user );
} catch ( error ) {
console . error ( 'Account switch failed:' , error );
}
}
clearLocalStorage () {
localStorage . removeItem ( 'authToken' );
localStorage . removeItem ( 'userId' );
localStorage . removeItem ( 'userData' );
}
clearAppState () {
// Clear your app's state management
store . dispatch ({ type: 'LOGOUT' });
}
}
// Usage
const auth = new AuthManager ();
// Logout
await auth . logout ();
// Switch accounts
await auth . switchAccount ( 'different-user-789' );
Best Practices
1. Reset Before Switching Users
Always reset when changing users:
// Good
async function switchUser ( newUserId ) {
Encore . reset (); // ✅ Clear old user first
Encore . identify ( newUserId );
}
// Avoid
function switchUser ( newUserId ) {
Encore . identify ( newUserId ); // ❌ Old data might persist
}
2. Clear App State Too
Reset both Encore and your app:
// Good
function logout () {
clearAppState (); // ✅ Clear app first
Encore . reset (); // ✅ Then Encore
redirectToLogin ();
}
3. Handle Errors Gracefully
async function safeLogout () {
try {
await clearServerSession ();
} catch ( error ) {
console . error ( 'Server logout failed:' , error );
} finally {
// Always reset locally
Encore . reset ();
redirectToLogin ();
}
}
4. Don’t Reset on Page Refresh
Only reset on explicit logout:
// Good: On explicit logout
logoutButton . addEventListener ( 'click' , () => {
Encore . reset ();
});
// Avoid: On page load
window . addEventListener ( 'load' , () => {
Encore . reset (); // ❌ Would lose data on refresh
});
Troubleshooting
Lost entitlements after reset
Expected behavior : reset() clears all entitlements by design.Solution :
Don’t call reset() on page refresh
Only call on explicit logout or account switch
Entitlements will be restored when user logs back in and presents another offer
Symptom : getCurrentUserId() returns same ID after resetSolution :
Ensure SDK is properly initialized
Check browser console for errors
Try hard refresh (clear cache)
Verify you’re not calling identify() immediately after reset
Next Steps
After resetting: