// HTTP 431 Error Prevention for Clerk Authentication // These optimizations reduce token size and prevent header overflow export const authOptimizations = { // Reduce session data payload sessionConfig: { // Shorter session duration reduces token size maxAgeInSeconds: 60 * 60 * 12, // 12 hours instead of 24 // Disable unnecessary features that increase token size allowDangerousEmailAccountLinking: false, // Skip session refresh to reduce token bloat skipSessionRefresh: false, }, // Cookie optimizations cookieConfig: { sameSite: 'lax' as const, secure: process.env.NODE_ENV === 'production', // Reduce cookie size by limiting domains domain: process.env.NODE_ENV === 'production' ? undefined : 'localhost', }, // Development optimizations developmentConfig: { // Clear local storage on sign out to prevent token accumulation clearTokensOnSignOut: true, // Use shorter token names in development useShortTokenNames: true, }, // Redirect optimizations redirectConfig: { // Use simple URLs to reduce redirect chain length signInUrl: '/sign-in', signUpUrl: '/sign-up', afterSignInUrl: '/', afterSignUpUrl: '/', // Prevent long redirect URLs avoidRedirectChains: true, } }; // Utility to clear potentially large tokens export const clearLargeTokens = () => { if (typeof window !== 'undefined') { // Clear localStorage items that might contain large tokens const clerkKeys = Object.keys(localStorage).filter(key => key.includes('clerk') || key.includes('session') ); clerkKeys.forEach(key => { const value = localStorage.getItem(key); if (value && value.length > 1000) { // If token is unusually large localStorage.removeItem(key); console.warn(`Cleared large token: ${key}`); } }); } };