Dark mode is no longer just a "cool feature"βitβs an essential part of modern UI/UX.
It improves readability, reduces eye strain, and even helps save battery on OLED screens.

But how do you implement it in React, Angular, and Vue? Letβs dive in and build a seamless dark mode switcher in each of these frameworks! 
π― Why Dark Mode?
Before we start coding, hereβs why you should consider adding dark mode to your app:
β User Preference: Many users prefer dark mode for extended reading.
β Battery Efficiency: OLED screens consume less power in dark mode.
β Modern Aesthetics: Apps with dark mode look sleek and future-ready.
β Accessibility: Helps users with light sensitivity or visual impairments.
βοΈ Implementing Dark Mode in React
Reactβs useState & localStorage make it easy to toggle dark mode.
πΉ Steps:
Store theme preference in localStorage.
Toggle dark mode using CSS classes.
Update state based on the saved preference.
πΉ React Dark Mode Code:
import React, { useState, useEffect } from "react"; 
const App = () => { 
  const [darkMode, setDarkMode] = useState( 
    localStorage.getItem("theme") === "dark" 
  ); 
  useEffect(() => { 
    document.body.classList.toggle("dark-mode", darkMode); 
    localStorage.setItem("theme", darkMode ? "dark" : "light"); 
  }, [darkMode]); 
  return ( 
    <div> 
      <button onClick={() => setDarkMode(!darkMode)}> 
        {darkMode ? "Switch to Light Mode" : "Switch to Dark Mode"} 
      </button> 
    </div> 
  ); 
}; 
export default App; 
πΉ CSS for Dark Mode:
body.dark-mode { 
  background-color: #121212; 
  color: #ffffff; 
} 
π Explore more React dark mode techniques: https://react.dev/
π °οΈ Implementing Dark Mode in Angular
Angular allows you to toggle dark mode using services and CSS variables.
πΉ Steps:
Create a Theme Service to handle mode switching.
Store the user preference in localStorage.
Apply the selected theme dynamically using CSS variables.
πΉ Angular Dark Mode Code:
theme.service.ts 
import { Injectable } from '@angular/core'; 
@Injectable({ 
  providedIn: 'root' 
}) 
export class ThemeService { 
  private darkMode = false; 
  constructor() { 
    this.darkMode = localStorage.getItem("theme") === "dark"; 
    this.updateTheme(); 
  } 
  toggleTheme() { 
    this.darkMode = !this.darkMode; 
    localStorage.setItem("theme", this.darkMode ? "dark" : "light"); 
    this.updateTheme(); 
  } 
  updateTheme() { 
    document.body.classList.toggle("dark-mode", this.darkMode); 
  } 
} 
app.component.ts
import { Component } from '@angular/core'; 
import { ThemeService } from './theme.service'; 
@Component({ 
  selector: 'app-root', 
  template: ` 
    <button (click)="toggleTheme()">Toggle Dark Mode</button> 
  ` 
}) 
export class AppComponent { 
  constructor(private themeService: ThemeService) {} 
  toggleTheme() { 
    this.themeService.toggleTheme(); 
  } 
} 
styles.css
body.dark-mode { 
  --bg-color: #121212; 
  --text-color: #ffffff; 
} 
body { 
  background-color: var(--bg-color); 
  color: var(--text-color); 
} 
π Angular Dark Mode Best Practices: https://angular.io/guide/theming
π· Implementing Dark Mode in Vue
Vueβs reactive properties and Vuex make dark mode integration simple.
πΉ Steps:
Store the theme preference in localStorage.
Use Vueβs reactive state to track theme changes.
Apply dark mode using CSS classes.
πΉ Vue Dark Mode Code:
<template> 
  <div :class="{ 'dark-mode': isDarkMode }"> 
    <button @click="toggleTheme"> 
      {{ isDarkMode ? "Switch to Light Mode" : "Switch to Dark Mode" }} 
    </button> 
  </div> 
</template> 
<script> 
export default { 
  data() { 
    return { 
      isDarkMode: localStorage.getItem("theme") === "dark" 
    }; 
  }, 
  methods: { 
    toggleTheme() { 
      this.isDarkMode = !this.isDarkMode; 
      localStorage.setItem("theme", this.isDarkMode ? "dark" : "light"); 
      document.body.classList.toggle("dark-mode", this.isDarkMode); 
    } 
  } 
}; 
</script> 
<style> 
.dark-mode { 
  background-color: #121212; 
  color: #ffffff; 
} 
</style> 
π Learn more about Vue theming: https://vuejs.org/guide/scaling-up/theming.html
π₯ Pro Tips for a Better Dark Mode Experience
**β Use CSS Variables β **Makes it easier to switch themes dynamically.
β Save User Preferences β Use localStorage to persist dark mode settings.
β Provide a Toggle Button β Users should easily switch between light & dark.
β Test Accessibility β Ensure proper contrast for readability.
π Want to explore more advanced theming? Check out this CSS Dark Mode Guide.
π‘ Which Framework Handles Dark Mode Best?
β Use React if you want a simple hook-based approach.
β Choose Angular for enterprise apps with structured theming.
β Go with Vue for a lightweight and reactive dark mode switcher.
π¬ Which framework do you prefer for dark mode?
Share your thoughts in the comments!
π’ Stay Updated with More Frontend Insights!
π Follow DCT Technology for web development tips, design trends, and UI/UX guides! π
              
    
Top comments (0)