In the dev tools I am getting this error "Error reading value for key auth: "undefined" is not valid JSON". The console show me this as full errors
useLocalStorage code last version is this
import { useState, useEffect } from "react";
export const useLocalStorage = (key, defaultValue) => {
  if (typeof window === 'undefined') {
    throw new Error("useLocalStorage hook can only be used in a browser environment.");
  }
  if (!key || typeof key !== "string") {
    throw new Error("Invalid key for useLocalStorage hook.");
  }
  const [value, setValue] = useState(() => {
    try {
      const storedValue = localStorage.getItem(key);
      if (storedValue !== undefined && storedValue !== null) {
        return JSON.parse(storedValue);
      } else {
        return defaultValue;
      }
    } catch (error) {
      console.error(`Error reading value for key ${key}: ${error.message}`);
      return defaultValue;
    }
  });
  useEffect(() => {
    const handleStorageChange = (event) => {
      if (event.key === key) {
        try {
          const newValue = JSON.parse(event.newValue);
          setValue(newValue);
        } catch (error) {
          console.error(`Error parsing new value for key ${key}: ${error.message}`);
        }
      }
    };
    window.addEventListener("storage", handleStorageChange);
    
    return () => {
      window.removeEventListener("storage", handleStorageChange);
    };
  }, [key]);
  const setLocalStorageValue = (newValue) => {
    if (newValue === undefined || newValue === null) {
      throw new Error("Invalid value for useLocalStorage hook.");
    }
    try {
      localStorage.setItem(key, JSON.stringify(newValue));
      setValue(newValue);
    } catch (error) {
      console.error(`Error setting value for key ${key}: ${error.message}`);
    }
  };
  const clearLocalStorageValue = () => {
    try {
      localStorage.removeItem(key);
      setValue(defaultValue);
    } catch (error) {
      console.error(`Error clearing value for key ${key}: ${error.message}`);
    }
  };
  return [value, setLocalStorageValue, clearLocalStorageValue];
};
The AuthContext and AuthProvider is this:
import { createContext, useContext } from "react";
import { useLocalStorage } from "../hooks/useLocalStorage";
const initialState = {
  _id: '',
  name: '',
  email: '',
  accessToken: '',
};
export const AuthContext = createContext();
export const AuthProvider = ({ children }) => {
  const [auth, setAuth] = useLocalStorage('auth', initialState);
  const userLogin = (authData) => {
    setAuth(authData);
  };
  const userLogout = () => {
    setAuth(initialState);
  };
  return (
    <AuthContext.Provider value={{
        user: auth,
        userLogin,
        userLogout,
        isAuth: auth.name,
    }}>
        {children}
    </AuthContext.Provider>
  )
}
export const useAuthContext = () => {
   const authState = useContext(AuthContext);
   return authState;
}
I try to fixed the issue by changing adding if statemenst. This my prevoius code:
import { useState, useEffect } from "react";
 
export const useLocalStorage = (key, defaultValue) => {
  if (!key || typeof key !== "string") {
    throw new Error("Invalid key for useLocalStorage hook");
  }
 
  const [value, setValue] = useState(() => {
    try {
      const storedValue = localStorage.getItem(key);
      return storedValue !== undefined && storedValue !== null ? JSON.parse(storedValue) : defaultValue;
    } catch (error) {
      console.error(`Error reading value for key ${key}: ${error.message}`);
      return defaultValue;
    }
  });
 
  useEffect(() => {
    const handleStorageChange = (event) => {
      if (event.key === key) {
        try {
          const newValue = JSON.parse(event.newValue);
          setValue(newValue);
        } catch (error) {
          console.error(`Error parsing new value for key ${key}: ${error.message}`);
        }
      }
    };
 
    window.addEventListener("storage", handleStorageChange);
 
    return () => {
      window.removeEventListener("storage", handleStorageChange);
    };
  }, [key]);
 
  const setLocalStorageValue = (newValue) => {
    if (!newValue) {
      throw new Error("Invalid value for useLocalStorage hook");
    }
    try {
      localStorage.setItem(key, JSON.stringify(newValue));
      setValue(newValue);
    } catch (error) {
      console.error(`Error setting value for key ${key}: ${error.message}`);
    }
  };
 
  return [value, setLocalStorageValue];
};
The verification for the undefined and null with if statements did not fixed this isssue. Not sure why i am still getting this issue. Could you help me, please?
 
    