Skip to content

Instantly share code, notes, and snippets.

@MauricioRobayo
Last active July 22, 2021 10:41
Show Gist options
  • Select an option

  • Save MauricioRobayo/36427e523d51f6c3159869291bf657d7 to your computer and use it in GitHub Desktop.

Select an option

Save MauricioRobayo/36427e523d51f6c3159869291bf657d7 to your computer and use it in GitHub Desktop.
Custom react hook to get system color theme preference
import { useEffect, useState } from "react";
const darkModeQuery = window.matchMedia("(prefers-color-scheme: dark)");
const usePrefersColorScheme = () => {
const [colorScheme, setColorScheme] = useState<"dark" | "light">(
darkModeQuery.matches ? "dark" : "light"
);
useEffect(() => {
const updateColorScheme = (event: MediaQueryListEvent) => {
setColorScheme(event.matches ? "dark" : "light");
};
darkModeQuery.addEventListener("change", updateColorScheme);
return () => {
darkModeQuery.removeEventListener("change", updateColorScheme);
};
}, []);
return colorScheme;
};
export default usePrefersColorScheme;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment