본문 바로가기
Next.js

[Nextjs] 다크모드 구현하기 - zustand vs next-themes

by ginny. 2025. 5. 10.

zustand vs next-themes 비교

 

특징 zustand next-themes
설정 난이도 간단함 (Provider 불필요) 설정 필요 (ThemeProvider 추가)
HTML <html class="dark"> 자동 적용 ❌ 직접 적용해야 함 ✅ 자동 적용
Flickering 문제 있음 (로컬스토리지 필요) 없음
로컬 저장 지원 ❌ 직접 구현 필요 ✅ 기본 지원
OS 다크모드 감지 ❌ 불가능 ✅ 가능 (defaultTheme="system")
SSR 친화성 ✅ 서버 상태와 충돌 없음 ❌ Hydration mismatch 가능성
전역 상태 관리 용이성 ✅ 다른 상태와 함께 관리 가능 ❌ 다크모드 전용이라 제한적

 

언제 zustand를 쓰고, 언제 next-themes를 써야 할까?

 

zustand가 적절한 경우

  • 다크 모드뿐만 아니라 다른 전역 상태(예: 사용자 설정, UI 상태)도 함께 관리하고 싶을 때
  • Provider 설정 없이 간단한 상태 관리가 필요할 때
  • SSR을 적극적으로 활용하는 프로젝트 (예: getServerSideProps 등)

next-themes가 적절한 경우

  • Tailwind의 dark: 스타일을 자동으로 적용하고 싶을 때
  • OS의 다크 모드 설정을 자동으로 감지하고 싶을 때
  • Flickering 문제 없이 자연스러운 다크 모드 전환이 필요할 때
  • 전역 상태 관리는 필요 없고, 단순한 테마 전환 기능만 필요할 때

댓글