Performance: React context in client components
MEDIUM IMPACT
This affects interaction responsiveness and rendering speed by controlling how often components re-render when context changes.
const UserContext = React.createContext(null); const ThemeContext = React.createContext(null); function App() { const [user, setUser] = React.useState({ name: 'Alice' }); const [theme, setTheme] = React.useState('light'); return ( <UserContext.Provider value={user}> <ThemeContext.Provider value={theme}> <UserProfile /> <ThemeSwitcher /> </ThemeContext.Provider> </UserContext.Provider> ); } function UserProfile() { const user = React.useContext(UserContext); return <div>{user.name}</div>; } function ThemeSwitcher() { const theme = React.useContext(ThemeContext); return <button>{theme}</button>; }
const MyContext = React.createContext({ user: {}, theme: 'light' }); function App() { const [user, setUser] = React.useState({ name: 'Alice' }); const [theme, setTheme] = React.useState('light'); return ( <MyContext.Provider value={{ user, theme }}> <UserProfile /> <ThemeSwitcher /> </MyContext.Provider> ); } function UserProfile() { const { user } = React.useContext(MyContext); return <div>{user.name}</div>; } function ThemeSwitcher() { const { theme } = React.useContext(MyContext); return <button>{theme}</button>; }
| Pattern | DOM Operations | Reflows | Paint Cost | Verdict |
|---|---|---|---|---|
| Single large context for multiple states | Many components re-render unnecessarily | Multiple reflows triggered | Higher paint cost due to frequent updates | [X] Bad |
| Multiple small contexts for separate states | Only relevant components re-render | Fewer reflows triggered | Lower paint cost with targeted updates | [OK] Good |