React vs Vanilla JavaScript: When You Actually Need a Framework

Reaching for React by default, even for a mostly-static page with a sprinkle of interactivity, is a common and often costly over-engineering pattern — the right call depends on what you’re actually building.

When Vanilla JavaScript Is Enough

  • A handful of interactive widgets on an otherwise static page (a form, a dropdown, a modal)
  • Content-heavy sites where SEO and fast initial load matter more than rich interactivity
  • Small internal tools with a short lifespan

When React (or Similar) Genuinely Pays Off

  • Complex, deeply interactive UI with many interdependent pieces of state
  • A team that benefits from component reuse and a shared, enforced structure
  • An application, not a document — something closer to a desktop app than a web page

The tell that you’ve picked wrong in either direction: hand-rolling a React-shaped state management system in vanilla JS for a genuinely complex app (reinventing a worse React), or shipping a multi-hundred-KB framework bundle to render three paragraphs and a button.