If you're a frontend developer today, it's easy to feel like every new website should be built with React.
Need a landing page? React.
Need a portfolio? React.
Need a company website? React.
Need a simple blog? React.
But there is one question we don't always ask:
Do we actually need React for every website?
The short answer is no.
React is a powerful tool, but like any tool, it makes more sense when it solves a problem you actually have.
What Problem Does React Solve?
React is useful when the UI becomes interactive and complex.
For example, imagine an application with:
- Product filters
- Shopping cart
- User authentication
- Notifications
- Modals
- Tabs
- Search
- Real-time updates
- Complex forms
- Shared application state
Managing all of this with manual DOM manipulation can become difficult.
React gives us a component-based approach.
function ProductCard({ product }) {
return (
<article>
<h2>{product.name}</h2>
<p>{product.price}</p>
<button>Add to Cart</button>
</article>
);
}
The UI is broken into reusable components.
That becomes valuable as the application grows.
But What If My Website Is Simple?
Let's say you're building a website for a small business.
It has:
Home
About
Services
Projects
Contact
Maybe there are a few animations, a contact form, and a mobile menu.
Do you need React?
Probably not.
You could build it with:
HTML
CSS
JavaScript
And potentially use a server-rendered CMS or backend if required.
The browser already knows how to render HTML.
You don't need a JavaScript framework just to display a heading and an image.
The Cost of Adding React
React itself isn't necessarily a problem.
The question is what additional complexity you're introducing.
A React project may involve:
React
↓
Package manager
↓
Build tool
↓
Dependencies
↓
Components
↓
State management
↓
Routing
↓
Data fetching
↓
Deployment configuration
For a large application, this complexity can be justified.
For a five-page static website, it might be unnecessary.
This doesn't mean React is bad.
It means architecture should match the problem.
Example 1: Portfolio Website
Imagine a developer portfolio:
Home
About
Skills
Projects
Contact
Most of the content doesn't change frequently.
You could build it with plain HTML, CSS, and JavaScript.
Benefits:
- Simple architecture
- Very little JavaScript
- Easy to deploy
- Easy to maintain
- Fast initial rendering
Could React build it?
Absolutely.
But being able to use React doesn't automatically mean you should.
Example 2: E-commerce Website
Now consider a large e-commerce application.
You might have:
Product Listing
↓
Filters
↓
Product Details
↓
Cart
↓
Checkout
↓
User Account
The UI has lots of state.
For example:
Selected filters
Cart items
Quantity
User authentication
Loading states
Errors
Product data
Search results
Here, a component-based architecture can be very useful.
React can help organize this complexity.
Example 3: Dashboard
Consider an admin dashboard.
Dashboard
├── Sidebar
├── Header
├── Statistics
├── Charts
├── Tables
├── Filters
└── Notifications
The user may:
- Filter data
- Sort tables
- Open modals
- Change settings
- Update records
- Navigate between sections
- Fetch data from APIs
This is a very different problem from a static marketing website.
React can be a natural fit here.
What About a Landing Page?
This is where things become interesting.
A landing page might contain:
- Hero section
- Animations
- Testimonials
- Pricing
- FAQ
- Lead form
- Scroll interactions
You don't need React just because the page has animations.
CSS can handle many animations.
JavaScript can handle interactions.
Libraries such as GSAP can handle more advanced animations.
So the question shouldn't be:
"Is the website interactive?"
Almost every modern website is interactive.
The better question is:
"How complex is the interaction and UI state?"
React vs Plain JavaScript
Here's a simple way to think about it.
| Requirement | Plain JS | React |
|---|---|---|
| Static pages | ✅ | Usually unnecessary |
| Simple interactions | ✅ | Often unnecessary |
| Small landing page | ✅ | Optional |
| Simple portfolio | ✅ | Optional |
| Large dashboard | Possible | Useful |
| Complex forms | Possible | Useful |
| Large SPA | Difficult to organize | Useful |
| Complex shared state | Possible | Useful |
| Highly interactive application | Possible | Often useful |
The important word here is possible.
Almost anything can be built with vanilla JavaScript.
The question is how maintainable the solution will be.
But There Is Another Side
React can also be useful even for smaller websites if your team already has:
- A React design system
- Reusable components
- Existing React infrastructure
- Shared frontend libraries
- Developers experienced with React
- A larger application planned for the future
For example, if a marketing website is only the first part of a larger product, choosing React may reduce the cost of switching architectures later.
So context matters.
Don't Confuse React With Modern Web Development
One thing I noticed while learning frontend development is that developers sometimes associate:
React = Modern
Vanilla JS = Old
That's not correct.
Modern web development also includes:
- Semantic HTML
- Modern CSS
- Responsive design
- Accessibility
- Performance optimization
- Web APIs
- Progressive enhancement
- Good UX
- SEO
You can build an extremely modern website without React.
You can also build a poorly designed website with React.
The framework doesn't automatically determine the quality of the website.
What About SEO?
SEO is another reason this discussion becomes more complicated.
A simple content-heavy website doesn't automatically need React.
HTML itself is excellent for content.
For applications that need JavaScript rendering, frameworks and rendering strategies such as SSR or SSG can help.
But it's important to understand that:
React itself is not an SEO strategy.
You still need to think about:
- Semantic HTML
- Metadata
- Structured content
- Page performance
- Crawlability
- Accessibility
- URLs
- Internal linking
Performance Matters Too
Adding React doesn't automatically make a website slow.
But adding unnecessary JavaScript can create unnecessary work for the browser.
For a simple page, imagine sending:
HTML
CSS
JavaScript
React
Dependencies
Application code
when the browser could have rendered most of the page directly from HTML and CSS.
That's worth thinking about.
At the same time, for a complex application, React can provide an organized architecture that makes the overall product easier to develop and maintain.
Again:
It depends on the problem.
The Better Question
Instead of asking:
"Should I use React?"
I think we should ask:
1. How interactive is the application?
2. How much UI state do I need?
3. How large will the application become?
4. Does the team already have a React ecosystem?
5. How important are initial performance and JavaScript size?
6. Does the project need a component system?
7. Will the application communicate heavily with APIs?
8. How frequently will the UI change?
These questions give you a better starting point than simply choosing a popular framework.
My Simple Rule
I like to think about it this way:
Simple website
↓
Start simple
↓
HTML + CSS + JavaScript
For a more complex application:
Complex UI
↓
Many components
↓
Lots of state
↓
Frequent UI updates
↓
Consider React or another framework
The framework should solve a problem.
Don't create a problem just to justify using the framework.
Final Thought
React is not the enemy of simple websites.
And vanilla JavaScript isn't the enemy of modern development.
Both have their place.
The real skill isn't knowing how to use React.
The real skill is knowing when you don't need it.
Before starting your next project, don't ask:
"What framework is trending?"
Ask:
"What is the simplest architecture that can solve this problem well?"
Sometimes the answer will be React.
Sometimes it won't.
And that's perfectly fine.
Top comments (0)