"use client"; import { useEffect, useState } from "react"; import type { Session, User } from "@supabase/supabase-js"; import { supabase } from "@/integrations/supabase/client"; interface AuthState { user: User | null; session: Session | null; loading: boolean; } export function useAuth(): AuthState { const [state, setState] = useState({ user: null, session: null, loading: true, }); useEffect(() => { // CRITICAL: subscribe BEFORE getSession (avoid missed events) const { data: { subscription } } = supabase.auth.onAuthStateChange((_event, session) => { setState({ user: session?.user ?? null, session, loading: false }); }); supabase.auth.getSession().then(({ data: { session } }) => { setState({ user: session?.user ?? null, session, loading: false }); }); return () => subscription.unsubscribe(); }, []); return state; }