/
/
useTodos hook — encapsulates all todo CRUD operations and localStorage persistence. Returns a stable API that the App component consumes without needing to know about storage details.
11 export function useTodos() { 12 const [todos, setTodos] = useState<Todo[]>(() => { 13 const stored = localStorage.getItem(STORAGE_KEY); 14 return stored ? JSON.parse(stored) : []; 15 }); 16
Persistence sync — writes to localStorage on every state change
18 useEffect(() => { 19 localStorage.setItem(STORAGE_KEY, JSON.stringify(todos)); 20 }, [todos]);