Logo
READLEARNKNOWCONNECT
Back to Lessons

    Page

  • - Why Best Practices Matter
  • - ✅ Best Practices to Follow
  • - ❌ Common Pitfalls to Avoid
  • - Avoid Re-Renders with memo and useCallback
  • - Organizing Your Folder Structure
  • - Mini Project Step

26. Best Practices and Common Pitfalls

Level: AdvancedDuration: 22m

Why Best Practices Matter

React gives you freedom, but that also means it's easy to write messy, hard-to-maintain code. Following best practices ensures your app is clean, scalable, and easy to debug—especially as it grows.

✅ Best Practices to Follow

  • Keep components small and focused (Single Responsibility Principle)
  • Use clear folder structure for scalability
  • Lift state only when necessary
  • Use meaningful variable and component names
  • Keep UI logic and business logic separated
  • Use environment variables for API keys
  • Prefer functional components and hooks

❌ Common Pitfalls to Avoid

  • Overusing useState instead of combining with reducers or context
  • Keeping too much state in the parent component
  • Not memoizing expensive calculations or components
  • Re-fetching data unnecessarily on every render
  • Inline functions or objects causing re-renders
  • Deep prop drilling instead of using context or state libraries
  • Ignoring error boundaries and crash states

Avoid Re-Renders with memo and useCallback

Unnecessary re-renders slow down your app. Wrap stable components in React.memo and use useCallback to memoize functions passed as props.

jsx
const Button = React.memo(({ onClick }) => {
  console.log('Rendered')
  return <button onClick={onClick}>Click</button>
})

export default function App() {
  const handleClick = useCallback(() => console.log('Clicked'), [])
  return <Button onClick={handleClick} />
}

Organizing Your Folder Structure

Instead of dumping everything in a components folder, organize by feature for better scalability.

Bad StructureGood Structure
components/, pages/, utils/features/auth, features/dashboard, components/shared
files mixed by typefiles grouped by feature
hard to scaleeasy to maintain

Mini Project Step

Refactor your app by organizing components into a feature-based folder structure and identify at least two components to memoize for performance improvement.