<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Ganesh Deshmukh</title>
    <description>The latest articles on DEV Community by Ganesh Deshmukh (@gd_ganesh_deshmukh).</description>
    <link>https://dev.to/gd_ganesh_deshmukh</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4134966%2F9e41001b-94a6-4a86-bebd-df22b6e7cee9.jpg</url>
      <title>DEV Community: Ganesh Deshmukh</title>
      <link>https://dev.to/gd_ganesh_deshmukh</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/gd_ganesh_deshmukh"/>
    <language>en</language>
    <item>
      <title>AI Can Write Frontend Code — What Should Developers Still Know?</title>
      <dc:creator>Ganesh Deshmukh</dc:creator>
      <pubDate>Mon, 21 Sep 2026 06:21:03 +0000</pubDate>
      <link>https://dev.to/gd_ganesh_deshmukh/ai-can-write-frontend-code-what-should-developers-still-know-i2f</link>
      <guid>https://dev.to/gd_ganesh_deshmukh/ai-can-write-frontend-code-what-should-developers-still-know-i2f</guid>
      <description>&lt;p&gt;A few years ago, writing frontend code meant spending a lot of time typing HTML, CSS, and JavaScript yourself.&lt;/p&gt;

&lt;p&gt;Today, AI can generate a complete component in seconds.&lt;/p&gt;

&lt;p&gt;You can ask:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Create a responsive navbar in React with a mobile menu."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And you may get working code almost immediately.&lt;/p&gt;

&lt;p&gt;So this raises an important question:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If AI can write frontend code, what does a frontend developer need to know?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I don't think the answer is "nothing."&lt;/p&gt;

&lt;p&gt;In fact, I think understanding the fundamentals is becoming even more important.&lt;/p&gt;




&lt;h1&gt;
  
  
  AI Can Write Code. But Code Is Not the Whole Job.
&lt;/h1&gt;

&lt;p&gt;A frontend developer's job isn't simply:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Requirement
    ↓
Write code
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Real projects look more like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Business requirement
        ↓
Understand UX
        ↓
Choose architecture
        ↓
Build UI
        ↓
Connect APIs
        ↓
Handle edge cases
        ↓
Accessibility
        ↓
Performance
        ↓
Testing
        ↓
Debugging
        ↓
Deployment
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;AI can help with many of these steps.&lt;/p&gt;

&lt;p&gt;But someone still needs to understand what should actually be built.&lt;/p&gt;




&lt;h1&gt;
  
  
  1. HTML Still Matters
&lt;/h1&gt;

&lt;p&gt;AI can generate HTML very quickly.&lt;/p&gt;

&lt;p&gt;But can you tell whether this is appropriate?&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;onclick=&lt;/span&gt;&lt;span class="s"&gt;"submitForm()"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Submit&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It may visually look like a button.&lt;/p&gt;

&lt;p&gt;But semantically, a real button is usually better:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;button&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"submit"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  Submit
&lt;span class="nt"&gt;&amp;lt;/button&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Understanding semantic HTML helps with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Accessibility&lt;/li&gt;
&lt;li&gt;Keyboard navigation&lt;/li&gt;
&lt;li&gt;SEO&lt;/li&gt;
&lt;li&gt;Browser behavior&lt;/li&gt;
&lt;li&gt;Maintainability&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You don't want to blindly accept generated markup.&lt;/p&gt;

&lt;p&gt;You need to know what good HTML looks like.&lt;/p&gt;




&lt;h1&gt;
  
  
  2. CSS Knowledge Is Still Important
&lt;/h1&gt;

&lt;p&gt;AI can generate CSS.&lt;/p&gt;

&lt;p&gt;But real projects rarely say:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Just make it look nice."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;You may get requirements like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Match the Figma design&lt;/li&gt;
&lt;li&gt;Support mobile, tablet, and desktop&lt;/li&gt;
&lt;li&gt;Handle long text&lt;/li&gt;
&lt;li&gt;Support different content lengths&lt;/li&gt;
&lt;li&gt;Maintain consistent spacing&lt;/li&gt;
&lt;li&gt;Work across browsers&lt;/li&gt;
&lt;li&gt;Avoid layout shifts&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You need to understand things like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Flexbox
Grid
Positioning
Specificity
Cascade
Responsive design
Container queries
Media queries
Typography
Animations
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Otherwise, you may end up accepting CSS that works for one screenshot but breaks everywhere else.&lt;/p&gt;




&lt;h1&gt;
  
  
  3. JavaScript Fundamentals Matter Even More
&lt;/h1&gt;

&lt;p&gt;AI can generate:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;handleClick&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="c1"&gt;// ...&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;But what happens when the code contains:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nf"&gt;useEffect&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nf"&gt;fetchData&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="p"&gt;[]);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Do you understand:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Why the dependency array is empty?&lt;/li&gt;
&lt;li&gt;When the effect runs?&lt;/li&gt;
&lt;li&gt;What happens during re-render?&lt;/li&gt;
&lt;li&gt;What happens if the request fails?&lt;/li&gt;
&lt;li&gt;What happens if the component unmounts?&lt;/li&gt;
&lt;li&gt;Can the request create a race condition?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You don't need to write every line manually.&lt;/p&gt;

&lt;p&gt;But you should be able to &lt;strong&gt;read and reason about the code&lt;/strong&gt;.&lt;/p&gt;




&lt;h1&gt;
  
  
  4. You Still Need to Understand the Browser
&lt;/h1&gt;

&lt;p&gt;This is one of the biggest areas developers shouldn't ignore.&lt;/p&gt;

&lt;p&gt;You should understand:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;HTML
 ↓
DOM
 ↓
CSSOM
 ↓
Render
 ↓
Layout
 ↓
Paint
 ↓
Composite
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You should also understand:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;HTTP&lt;/li&gt;
&lt;li&gt;Cookies&lt;/li&gt;
&lt;li&gt;Local storage&lt;/li&gt;
&lt;li&gt;CORS&lt;/li&gt;
&lt;li&gt;Browser caching&lt;/li&gt;
&lt;li&gt;Network requests&lt;/li&gt;
&lt;li&gt;Events&lt;/li&gt;
&lt;li&gt;DOM&lt;/li&gt;
&lt;li&gt;Rendering&lt;/li&gt;
&lt;li&gt;Web APIs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Why?&lt;/p&gt;

&lt;p&gt;Because when something breaks, you need to know where to look.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"The API works in Postman but doesn't work in the browser."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;AI might suggest ten possible solutions.&lt;/p&gt;

&lt;p&gt;A developer who understands CORS can immediately investigate the browser's security policy and network response.&lt;/p&gt;




&lt;h1&gt;
  
  
  5. Accessibility Cannot Be an Afterthought
&lt;/h1&gt;

&lt;p&gt;AI can generate a beautiful UI.&lt;/p&gt;

&lt;p&gt;But accessibility requires more than visual output.&lt;/p&gt;

&lt;p&gt;You should know:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Semantic HTML&lt;/li&gt;
&lt;li&gt;Keyboard navigation&lt;/li&gt;
&lt;li&gt;Focus management&lt;/li&gt;
&lt;li&gt;ARIA&lt;/li&gt;
&lt;li&gt;Color contrast&lt;/li&gt;
&lt;li&gt;Form labels&lt;/li&gt;
&lt;li&gt;Screen-reader behavior&lt;/li&gt;
&lt;li&gt;Accessible error messages&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;input&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"text"&lt;/span&gt; &lt;span class="na"&gt;placeholder=&lt;/span&gt;&lt;span class="s"&gt;"Email"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;may look fine.&lt;/p&gt;

&lt;p&gt;But a properly labelled form control is generally preferable:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;label&lt;/span&gt; &lt;span class="na"&gt;for=&lt;/span&gt;&lt;span class="s"&gt;"email"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  Email
&lt;span class="nt"&gt;&amp;lt;/label&amp;gt;&lt;/span&gt;

&lt;span class="nt"&gt;&amp;lt;input&lt;/span&gt;
  &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"email"&lt;/span&gt;
  &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"email"&lt;/span&gt;
  &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"email"&lt;/span&gt;
&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;AI can help generate accessible code.&lt;/p&gt;

&lt;p&gt;But developers still need to verify it.&lt;/p&gt;




&lt;h1&gt;
  
  
  6. Performance Still Needs Human Thinking
&lt;/h1&gt;

&lt;p&gt;AI can generate code that works.&lt;/p&gt;

&lt;p&gt;That doesn't mean the code is efficient.&lt;/p&gt;

&lt;p&gt;For example, a page might have:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;10 large images
15 JavaScript libraries
Multiple API requests
Heavy animations
Large fonts
Unused CSS
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Everything may technically work.&lt;/p&gt;

&lt;p&gt;But the user experience may be poor.&lt;/p&gt;

&lt;p&gt;Frontend developers still need to understand:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;LCP&lt;/li&gt;
&lt;li&gt;CLS&lt;/li&gt;
&lt;li&gt;INP&lt;/li&gt;
&lt;li&gt;Image optimization&lt;/li&gt;
&lt;li&gt;Lazy loading&lt;/li&gt;
&lt;li&gt;Code splitting&lt;/li&gt;
&lt;li&gt;Caching&lt;/li&gt;
&lt;li&gt;Bundle size&lt;/li&gt;
&lt;li&gt;Critical rendering path&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The goal isn't:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Make the code work."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The goal is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;"Make the website work well for real users."&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h1&gt;
  
  
  7. Architecture Is More Than Generating Components
&lt;/h1&gt;

&lt;p&gt;Imagine you ask AI:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Create a React product page."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It might generate:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ProductPage.jsx
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;But a real application may need:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;src/
├── components/
├── pages/
├── hooks/
├── services/
├── api/
├── utils/
├── features/
├── stores/
└── types/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Where should the API logic live?&lt;/p&gt;

&lt;p&gt;Should this data be global state?&lt;/p&gt;

&lt;p&gt;Should it be server state?&lt;/p&gt;

&lt;p&gt;Should you use React Query?&lt;/p&gt;

&lt;p&gt;Should the component fetch the data directly?&lt;/p&gt;

&lt;p&gt;Should the page be server-rendered?&lt;/p&gt;

&lt;p&gt;These aren't simply coding questions.&lt;/p&gt;

&lt;p&gt;They're architecture decisions.&lt;/p&gt;




&lt;h1&gt;
  
  
  8. Debugging Is Still a Developer Skill
&lt;/h1&gt;

&lt;p&gt;This may become even more important in an AI-assisted workflow.&lt;/p&gt;

&lt;p&gt;Suppose AI gives you code that looks correct.&lt;/p&gt;

&lt;p&gt;But the application throws:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Cannot read properties of undefined
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;What do you do?&lt;/p&gt;

&lt;p&gt;You need to understand:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Stack trace
↓
Error location
↓
Data flow
↓
State
↓
Network request
↓
Actual root cause
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;AI can help investigate the problem.&lt;/p&gt;

&lt;p&gt;But you still need enough knowledge to verify its suggestions.&lt;/p&gt;

&lt;p&gt;Otherwise, you can end up fixing one error and creating another.&lt;/p&gt;




&lt;h1&gt;
  
  
  9. Security Still Matters
&lt;/h1&gt;

&lt;p&gt;AI-generated code can contain mistakes.&lt;/p&gt;

&lt;p&gt;Frontend developers should understand common issues such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;XSS&lt;/li&gt;
&lt;li&gt;CSRF&lt;/li&gt;
&lt;li&gt;Unsafe HTML rendering&lt;/li&gt;
&lt;li&gt;Exposing secrets&lt;/li&gt;
&lt;li&gt;Insecure authentication handling&lt;/li&gt;
&lt;li&gt;Sensitive data in local storage&lt;/li&gt;
&lt;li&gt;Dependency vulnerabilities&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;element&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;innerHTML&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;userInput&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;should immediately make you think about whether untrusted input is being inserted into the DOM.&lt;/p&gt;

&lt;p&gt;AI can write the code.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;You are still responsible for understanding what the code does.&lt;/strong&gt;&lt;/p&gt;




&lt;h1&gt;
  
  
  10. Testing Becomes More Important
&lt;/h1&gt;

&lt;p&gt;If AI allows developers to produce code faster, we also need reliable ways to verify that code.&lt;/p&gt;

&lt;p&gt;Testing can include:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Unit tests
Integration tests
Component tests
End-to-end tests
Accessibility testing
Visual testing
Performance testing
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For a button, you don't only want to know:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Does it look correct?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;You may also want to check:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Can I reach it using the keyboard?&lt;/li&gt;
&lt;li&gt;Does it work after multiple clicks?&lt;/li&gt;
&lt;li&gt;Does it show the correct loading state?&lt;/li&gt;
&lt;li&gt;Does it handle API failure?&lt;/li&gt;
&lt;li&gt;Does it work on mobile?&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  11. Understanding the Requirement Is a Major Skill
&lt;/h1&gt;

&lt;p&gt;This is something AI cannot magically solve for you.&lt;/p&gt;

&lt;p&gt;A client might say:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"I want a faster checkout."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;What does that actually mean?&lt;/p&gt;

&lt;p&gt;Maybe they mean:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Fewer form fields&lt;/li&gt;
&lt;li&gt;Faster API response&lt;/li&gt;
&lt;li&gt;Better mobile UX&lt;/li&gt;
&lt;li&gt;Fewer checkout steps&lt;/li&gt;
&lt;li&gt;Better error messages&lt;/li&gt;
&lt;li&gt;Faster page loading&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Before writing code, someone needs to understand the actual problem.&lt;/p&gt;

&lt;p&gt;Good developers don't immediately start coding.&lt;/p&gt;

&lt;p&gt;They ask questions.&lt;/p&gt;




&lt;h1&gt;
  
  
  12. AI Changes How We Code
&lt;/h1&gt;

&lt;p&gt;I don't think AI means developers should stop learning syntax.&lt;/p&gt;

&lt;p&gt;But the workflow can change.&lt;/p&gt;

&lt;p&gt;Instead of:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Think
 ↓
Search Google
 ↓
Read documentation
 ↓
Write code
 ↓
Debug
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It can become:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Understand problem
 ↓
Ask AI for an approach
 ↓
Review the generated code
 ↓
Test it
 ↓
Modify it
 ↓
Debug
 ↓
Verify
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The developer becomes more of a &lt;strong&gt;reviewer, problem solver, and system designer&lt;/strong&gt;.&lt;/p&gt;




&lt;h1&gt;
  
  
  13. What Should a Frontend Developer Learn?
&lt;/h1&gt;

&lt;p&gt;If you're starting or growing as a frontend developer, I would still focus on these fundamentals:&lt;/p&gt;

&lt;h3&gt;
  
  
  HTML
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Semantic HTML
Forms
Accessibility
SEO basics
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  CSS
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Box model
Flexbox
Grid
Responsive design
Animations
Modern CSS
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  JavaScript
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Variables
Functions
Scope
Closures
Promises
Async/await
DOM
Events
Modules
Error handling
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Browser
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;HTTP
Cookies
Storage
Caching
CORS
Rendering
DevTools
Network debugging
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  React or another framework
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Components
Props
State
Hooks
Rendering
Performance
Data fetching
Component architecture
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Engineering
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Git
Testing
Accessibility
Performance
Security
Code review
Deployment
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And now add one more skill:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;AI-assisted development
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  14. The New Skill: Knowing What to Ask AI
&lt;/h1&gt;

&lt;p&gt;There is also a new skill developers are developing: giving AI useful context.&lt;/p&gt;

&lt;p&gt;Instead of:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Create a React component."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;You can provide:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Create a reusable React product card.

Requirements:
- React
- TypeScript
- Accessible HTML
- Mobile responsive
- No unnecessary dependencies
- Product data comes from props
- Handle missing image
- Handle long product names
- Use semantic HTML
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The better the problem definition, the more useful the output becomes.&lt;/p&gt;

&lt;p&gt;But even then, the developer needs to review the result.&lt;/p&gt;




&lt;h1&gt;
  
  
  15. Don't Become Dependent on AI
&lt;/h1&gt;

&lt;p&gt;One simple test I like is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;If the AI disappeared tomorrow, could I debug my application?&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;You don't need to memorize every API.&lt;/p&gt;

&lt;p&gt;You don't need to write everything from scratch.&lt;/p&gt;

&lt;p&gt;But you should understand enough to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Read code&lt;/li&gt;
&lt;li&gt;Debug code&lt;/li&gt;
&lt;li&gt;Review code&lt;/li&gt;
&lt;li&gt;Explain code&lt;/li&gt;
&lt;li&gt;Change code&lt;/li&gt;
&lt;li&gt;Identify bad approaches&lt;/li&gt;
&lt;li&gt;Make architectural decisions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That's a much stronger position than simply being able to generate code.&lt;/p&gt;




&lt;h1&gt;
  
  
  Final Thought
&lt;/h1&gt;

&lt;p&gt;AI is changing frontend development.&lt;/p&gt;

&lt;p&gt;There's no reason to ignore it.&lt;/p&gt;

&lt;p&gt;Use it.&lt;/p&gt;

&lt;p&gt;Let it help you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Generate boilerplate&lt;/li&gt;
&lt;li&gt;Explore solutions&lt;/li&gt;
&lt;li&gt;Explain unfamiliar code&lt;/li&gt;
&lt;li&gt;Create tests&lt;/li&gt;
&lt;li&gt;Find bugs&lt;/li&gt;
&lt;li&gt;Refactor code&lt;/li&gt;
&lt;li&gt;Learn new APIs&lt;/li&gt;
&lt;li&gt;Speed up repetitive work&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But don't outsource your understanding.&lt;/p&gt;

&lt;p&gt;A developer who can write 500 lines of code manually isn't necessarily more valuable than someone who can generate those 500 lines in seconds.&lt;/p&gt;

&lt;p&gt;The important skill is knowing:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;What should be built, why it should be built that way, whether the generated code is correct, and how it will behave in the real world.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;AI can help write the code.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Developers still need to understand the web.&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>programming</category>
      <category>humanthinking</category>
    </item>
    <item>
      <title>Do We Really Need React for Every Website?</title>
      <dc:creator>Ganesh Deshmukh</dc:creator>
      <pubDate>Mon, 21 Sep 2026 06:13:30 +0000</pubDate>
      <link>https://dev.to/gd_ganesh_deshmukh/do-we-really-need-react-for-every-website-47jj</link>
      <guid>https://dev.to/gd_ganesh_deshmukh/do-we-really-need-react-for-every-website-47jj</guid>
      <description>&lt;p&gt;If you're a frontend developer today, it's easy to feel like every new website should be built with React.&lt;/p&gt;

&lt;p&gt;Need a landing page? React.&lt;/p&gt;

&lt;p&gt;Need a portfolio? React.&lt;/p&gt;

&lt;p&gt;Need a company website? React.&lt;/p&gt;

&lt;p&gt;Need a simple blog? React.&lt;/p&gt;

&lt;p&gt;But there is one question we don't always ask:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Do we actually need React for every website?&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The short answer is &lt;strong&gt;no&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;React is a powerful tool, but like any tool, it makes more sense when it solves a problem you actually have.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Problem Does React Solve?
&lt;/h2&gt;

&lt;p&gt;React is useful when the UI becomes interactive and complex.&lt;/p&gt;

&lt;p&gt;For example, imagine an application with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Product filters&lt;/li&gt;
&lt;li&gt;Shopping cart&lt;/li&gt;
&lt;li&gt;User authentication&lt;/li&gt;
&lt;li&gt;Notifications&lt;/li&gt;
&lt;li&gt;Modals&lt;/li&gt;
&lt;li&gt;Tabs&lt;/li&gt;
&lt;li&gt;Search&lt;/li&gt;
&lt;li&gt;Real-time updates&lt;/li&gt;
&lt;li&gt;Complex forms&lt;/li&gt;
&lt;li&gt;Shared application state&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Managing all of this with manual DOM manipulation can become difficult.&lt;/p&gt;

&lt;p&gt;React gives us a component-based approach.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;ProductCard&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;product&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;article&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;h2&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;product&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;h2&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;p&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;product&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;price&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;p&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;button&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Add to Cart&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;button&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;article&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The UI is broken into reusable components.&lt;/p&gt;

&lt;p&gt;That becomes valuable as the application grows.&lt;/p&gt;




&lt;h1&gt;
  
  
  But What If My Website Is Simple?
&lt;/h1&gt;

&lt;p&gt;Let's say you're building a website for a small business.&lt;/p&gt;

&lt;p&gt;It has:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Home
About
Services
Projects
Contact
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Maybe there are a few animations, a contact form, and a mobile menu.&lt;/p&gt;

&lt;p&gt;Do you need React?&lt;/p&gt;

&lt;p&gt;Probably not.&lt;/p&gt;

&lt;p&gt;You could build it with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;HTML
CSS
JavaScript
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And potentially use a server-rendered CMS or backend if required.&lt;/p&gt;

&lt;p&gt;The browser already knows how to render HTML.&lt;/p&gt;

&lt;p&gt;You don't need a JavaScript framework just to display a heading and an image.&lt;/p&gt;




&lt;h1&gt;
  
  
  The Cost of Adding React
&lt;/h1&gt;

&lt;p&gt;React itself isn't necessarily a problem.&lt;/p&gt;

&lt;p&gt;The question is what additional complexity you're introducing.&lt;/p&gt;

&lt;p&gt;A React project may involve:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;React
↓
Package manager
↓
Build tool
↓
Dependencies
↓
Components
↓
State management
↓
Routing
↓
Data fetching
↓
Deployment configuration
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For a large application, this complexity can be justified.&lt;/p&gt;

&lt;p&gt;For a five-page static website, it might be unnecessary.&lt;/p&gt;

&lt;p&gt;This doesn't mean React is bad.&lt;/p&gt;

&lt;p&gt;It means &lt;strong&gt;architecture should match the problem&lt;/strong&gt;.&lt;/p&gt;




&lt;h1&gt;
  
  
  Example 1: Portfolio Website
&lt;/h1&gt;

&lt;p&gt;Imagine a developer portfolio:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Home
About
Skills
Projects
Contact
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Most of the content doesn't change frequently.&lt;/p&gt;

&lt;p&gt;You could build it with plain HTML, CSS, and JavaScript.&lt;/p&gt;

&lt;p&gt;Benefits:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Simple architecture&lt;/li&gt;
&lt;li&gt;Very little JavaScript&lt;/li&gt;
&lt;li&gt;Easy to deploy&lt;/li&gt;
&lt;li&gt;Easy to maintain&lt;/li&gt;
&lt;li&gt;Fast initial rendering&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Could React build it?&lt;/p&gt;

&lt;p&gt;Absolutely.&lt;/p&gt;

&lt;p&gt;But being able to use React doesn't automatically mean you should.&lt;/p&gt;




&lt;h1&gt;
  
  
  Example 2: E-commerce Website
&lt;/h1&gt;

&lt;p&gt;Now consider a large e-commerce application.&lt;/p&gt;

&lt;p&gt;You might have:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Product Listing
      ↓
Filters
      ↓
Product Details
      ↓
Cart
      ↓
Checkout
      ↓
User Account
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The UI has lots of state.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Selected filters
Cart items
Quantity
User authentication
Loading states
Errors
Product data
Search results
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here, a component-based architecture can be very useful.&lt;/p&gt;

&lt;p&gt;React can help organize this complexity.&lt;/p&gt;




&lt;h1&gt;
  
  
  Example 3: Dashboard
&lt;/h1&gt;

&lt;p&gt;Consider an admin dashboard.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Dashboard
├── Sidebar
├── Header
├── Statistics
├── Charts
├── Tables
├── Filters
└── Notifications
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The user may:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Filter data&lt;/li&gt;
&lt;li&gt;Sort tables&lt;/li&gt;
&lt;li&gt;Open modals&lt;/li&gt;
&lt;li&gt;Change settings&lt;/li&gt;
&lt;li&gt;Update records&lt;/li&gt;
&lt;li&gt;Navigate between sections&lt;/li&gt;
&lt;li&gt;Fetch data from APIs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is a very different problem from a static marketing website.&lt;/p&gt;

&lt;p&gt;React can be a natural fit here.&lt;/p&gt;




&lt;h1&gt;
  
  
  What About a Landing Page?
&lt;/h1&gt;

&lt;p&gt;This is where things become interesting.&lt;/p&gt;

&lt;p&gt;A landing page might contain:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Hero section&lt;/li&gt;
&lt;li&gt;Animations&lt;/li&gt;
&lt;li&gt;Testimonials&lt;/li&gt;
&lt;li&gt;Pricing&lt;/li&gt;
&lt;li&gt;FAQ&lt;/li&gt;
&lt;li&gt;Lead form&lt;/li&gt;
&lt;li&gt;Scroll interactions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You don't need React just because the page has animations.&lt;/p&gt;

&lt;p&gt;CSS can handle many animations.&lt;/p&gt;

&lt;p&gt;JavaScript can handle interactions.&lt;/p&gt;

&lt;p&gt;Libraries such as GSAP can handle more advanced animations.&lt;/p&gt;

&lt;p&gt;So the question shouldn't be:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Is the website interactive?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Almost every modern website is interactive.&lt;/p&gt;

&lt;p&gt;The better question is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;"How complex is the interaction and UI state?"&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h1&gt;
  
  
  React vs Plain JavaScript
&lt;/h1&gt;

&lt;p&gt;Here's a simple way to think about it.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Requirement&lt;/th&gt;
&lt;th&gt;Plain JS&lt;/th&gt;
&lt;th&gt;React&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Static pages&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;Usually unnecessary&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Simple interactions&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;Often unnecessary&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Small landing page&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;Optional&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Simple portfolio&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;Optional&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Large dashboard&lt;/td&gt;
&lt;td&gt;Possible&lt;/td&gt;
&lt;td&gt;Useful&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Complex forms&lt;/td&gt;
&lt;td&gt;Possible&lt;/td&gt;
&lt;td&gt;Useful&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Large SPA&lt;/td&gt;
&lt;td&gt;Difficult to organize&lt;/td&gt;
&lt;td&gt;Useful&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Complex shared state&lt;/td&gt;
&lt;td&gt;Possible&lt;/td&gt;
&lt;td&gt;Useful&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Highly interactive application&lt;/td&gt;
&lt;td&gt;Possible&lt;/td&gt;
&lt;td&gt;Often useful&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The important word here is &lt;strong&gt;possible&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Almost anything can be built with vanilla JavaScript.&lt;/p&gt;

&lt;p&gt;The question is how maintainable the solution will be.&lt;/p&gt;




&lt;h1&gt;
  
  
  But There Is Another Side
&lt;/h1&gt;

&lt;p&gt;React can also be useful even for smaller websites if your team already has:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A React design system&lt;/li&gt;
&lt;li&gt;Reusable components&lt;/li&gt;
&lt;li&gt;Existing React infrastructure&lt;/li&gt;
&lt;li&gt;Shared frontend libraries&lt;/li&gt;
&lt;li&gt;Developers experienced with React&lt;/li&gt;
&lt;li&gt;A larger application planned for the future&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;So context matters.&lt;/p&gt;




&lt;h1&gt;
  
  
  Don't Confuse React With Modern Web Development
&lt;/h1&gt;

&lt;p&gt;One thing I noticed while learning frontend development is that developers sometimes associate:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;React = Modern
Vanilla JS = Old
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's not correct.&lt;/p&gt;

&lt;p&gt;Modern web development also includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Semantic HTML&lt;/li&gt;
&lt;li&gt;Modern CSS&lt;/li&gt;
&lt;li&gt;Responsive design&lt;/li&gt;
&lt;li&gt;Accessibility&lt;/li&gt;
&lt;li&gt;Performance optimization&lt;/li&gt;
&lt;li&gt;Web APIs&lt;/li&gt;
&lt;li&gt;Progressive enhancement&lt;/li&gt;
&lt;li&gt;Good UX&lt;/li&gt;
&lt;li&gt;SEO&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can build an extremely modern website without React.&lt;/p&gt;

&lt;p&gt;You can also build a poorly designed website with React.&lt;/p&gt;

&lt;p&gt;The framework doesn't automatically determine the quality of the website.&lt;/p&gt;




&lt;h1&gt;
  
  
  What About SEO?
&lt;/h1&gt;

&lt;p&gt;SEO is another reason this discussion becomes more complicated.&lt;/p&gt;

&lt;p&gt;A simple content-heavy website doesn't automatically need React.&lt;/p&gt;

&lt;p&gt;HTML itself is excellent for content.&lt;/p&gt;

&lt;p&gt;For applications that need JavaScript rendering, frameworks and rendering strategies such as SSR or SSG can help.&lt;/p&gt;

&lt;p&gt;But it's important to understand that:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;React itself is not an SEO strategy.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;You still need to think about:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Semantic HTML&lt;/li&gt;
&lt;li&gt;Metadata&lt;/li&gt;
&lt;li&gt;Structured content&lt;/li&gt;
&lt;li&gt;Page performance&lt;/li&gt;
&lt;li&gt;Crawlability&lt;/li&gt;
&lt;li&gt;Accessibility&lt;/li&gt;
&lt;li&gt;URLs&lt;/li&gt;
&lt;li&gt;Internal linking&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  Performance Matters Too
&lt;/h1&gt;

&lt;p&gt;Adding React doesn't automatically make a website slow.&lt;/p&gt;

&lt;p&gt;But adding unnecessary JavaScript can create unnecessary work for the browser.&lt;/p&gt;

&lt;p&gt;For a simple page, imagine sending:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;HTML
CSS
JavaScript
React
Dependencies
Application code
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;when the browser could have rendered most of the page directly from HTML and CSS.&lt;/p&gt;

&lt;p&gt;That's worth thinking about.&lt;/p&gt;

&lt;p&gt;At the same time, for a complex application, React can provide an organized architecture that makes the overall product easier to develop and maintain.&lt;/p&gt;

&lt;p&gt;Again:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;It depends on the problem.&lt;/strong&gt;&lt;/p&gt;




&lt;h1&gt;
  
  
  The Better Question
&lt;/h1&gt;

&lt;p&gt;Instead of asking:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Should I use React?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I think we should ask:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. How interactive is the application?
&lt;/h3&gt;

&lt;h3&gt;
  
  
  2. How much UI state do I need?
&lt;/h3&gt;

&lt;h3&gt;
  
  
  3. How large will the application become?
&lt;/h3&gt;

&lt;h3&gt;
  
  
  4. Does the team already have a React ecosystem?
&lt;/h3&gt;

&lt;h3&gt;
  
  
  5. How important are initial performance and JavaScript size?
&lt;/h3&gt;

&lt;h3&gt;
  
  
  6. Does the project need a component system?
&lt;/h3&gt;

&lt;h3&gt;
  
  
  7. Will the application communicate heavily with APIs?
&lt;/h3&gt;

&lt;h3&gt;
  
  
  8. How frequently will the UI change?
&lt;/h3&gt;

&lt;p&gt;These questions give you a better starting point than simply choosing a popular framework.&lt;/p&gt;




&lt;h1&gt;
  
  
  My Simple Rule
&lt;/h1&gt;

&lt;p&gt;I like to think about it this way:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Simple website
    ↓
Start simple
    ↓
HTML + CSS + JavaScript
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For a more complex application:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Complex UI
    ↓
Many components
    ↓
Lots of state
    ↓
Frequent UI updates
    ↓
Consider React or another framework
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The framework should solve a problem.&lt;/p&gt;

&lt;p&gt;Don't create a problem just to justify using the framework.&lt;/p&gt;




&lt;h1&gt;
  
  
  Final Thought
&lt;/h1&gt;

&lt;p&gt;React is not the enemy of simple websites.&lt;/p&gt;

&lt;p&gt;And vanilla JavaScript isn't the enemy of modern development.&lt;/p&gt;

&lt;p&gt;Both have their place.&lt;/p&gt;

&lt;p&gt;The real skill isn't knowing how to use React.&lt;/p&gt;

&lt;p&gt;The real skill is knowing &lt;strong&gt;when you don't need it&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Before starting your next project, don't ask:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"What framework is trending?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Ask:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;"What is the simplest architecture that can solve this problem well?"&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Sometimes the answer will be React.&lt;/p&gt;

&lt;p&gt;Sometimes it won't.&lt;/p&gt;

&lt;p&gt;And that's perfectly fine.&lt;/p&gt;

</description>
      <category>react</category>
      <category>webdev</category>
      <category>frontend</category>
      <category>devchallenge</category>
    </item>
    <item>
      <title>From PHP + jQuery to React: How Web Development Changed</title>
      <dc:creator>Ganesh Deshmukh</dc:creator>
      <pubDate>Mon, 21 Sep 2026 06:07:18 +0000</pubDate>
      <link>https://dev.to/gd_ganesh_deshmukh/from-php-jquery-to-react-how-web-development-changed-561g</link>
      <guid>https://dev.to/gd_ganesh_deshmukh/from-php-jquery-to-react-how-web-development-changed-561g</guid>
      <description>&lt;p&gt;If you started web development with React, you might wonder:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What did developers use before React?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Before React became popular, a lot of websites were built using &lt;strong&gt;PHP, HTML, CSS, JavaScript, jQuery, and MySQL&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;I’ve worked with both traditional and modern approaches, and one thing became clear to me:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Modern frontend development didn't replace the old web overnight. It evolved from problems developers were already trying to solve.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Let's look at that journey.&lt;/p&gt;




&lt;h2&gt;
  
  
  1. The PHP + MySQL Era
&lt;/h2&gt;

&lt;p&gt;A common architecture looked like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Browser
   ↓
PHP Server
   ↓
MySQL Database
   ↓
PHP generates HTML
   ↓
Browser
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For example, a product page might have PHP code like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="cp"&gt;&amp;lt;?php&lt;/span&gt;
&lt;span class="nv"&gt;$product&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;getProduct&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$_GET&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'id'&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt;
&lt;span class="cp"&gt;?&amp;gt;&lt;/span&gt;

&lt;span class="nt"&gt;&amp;lt;h1&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;&amp;lt;?php&lt;/span&gt; &lt;span class="k"&gt;echo&lt;/span&gt; &lt;span class="nv"&gt;$product&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'name'&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt; &lt;span class="cp"&gt;?&amp;gt;&lt;/span&gt;&lt;span class="nt"&gt;&amp;lt;/h1&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;&amp;lt;?php&lt;/span&gt; &lt;span class="k"&gt;echo&lt;/span&gt; &lt;span class="nv"&gt;$product&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'price'&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt; &lt;span class="cp"&gt;?&amp;gt;&lt;/span&gt;&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The PHP code ran on the server.&lt;/p&gt;

&lt;p&gt;The browser received the final HTML:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;h1&amp;gt;&lt;/span&gt;iPhone&lt;span class="nt"&gt;&amp;lt;/h1&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;$999&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The browser didn't know that PHP generated it.&lt;/p&gt;

&lt;p&gt;This approach was simple and worked very well for many types of websites.&lt;/p&gt;




&lt;h2&gt;
  
  
  2. But What Happened When the User Clicked Something?
&lt;/h2&gt;

&lt;p&gt;Imagine a user opens:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/products
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and clicks a product.&lt;/p&gt;

&lt;p&gt;The browser requests:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/products/123
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The server then:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Receives the request&lt;/li&gt;
&lt;li&gt;Gets the product ID&lt;/li&gt;
&lt;li&gt;Queries the database&lt;/li&gt;
&lt;li&gt;Generates HTML&lt;/li&gt;
&lt;li&gt;Sends the response&lt;/li&gt;
&lt;li&gt;Browser loads the new page&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Something like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Click
  ↓
HTTP Request
  ↓
PHP
  ↓
Database
  ↓
HTML
  ↓
Browser
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For a normal website, this was perfectly fine.&lt;/p&gt;

&lt;p&gt;But as websites became more interactive, developers wanted a better experience.&lt;/p&gt;




&lt;h2&gt;
  
  
  3. JavaScript Started Taking More Responsibility
&lt;/h2&gt;

&lt;p&gt;JavaScript allowed developers to change the page without asking the server to generate an entirely new page.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;querySelector&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;#button&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;addEventListener&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;click&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nf"&gt;function &lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;querySelector&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;#message&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;textContent&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Hello!&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now the browser could update the UI itself.&lt;/p&gt;

&lt;p&gt;This sounds normal today, but it was an important shift.&lt;/p&gt;

&lt;p&gt;The browser wasn't just displaying HTML anymore.&lt;/p&gt;

&lt;p&gt;It was becoming responsible for part of the application.&lt;/p&gt;




&lt;h2&gt;
  
  
  4. Then jQuery Became Popular
&lt;/h2&gt;

&lt;p&gt;Writing browser-compatible JavaScript wasn't always pleasant.&lt;/p&gt;

&lt;p&gt;jQuery made common tasks easier.&lt;/p&gt;

&lt;p&gt;Instead of writing:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;querySelector&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;#button&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;addEventListener&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;click&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nf"&gt;function &lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;querySelector&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;#message&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;textContent&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Hello!&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;developers could write:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nf"&gt;$&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;#button&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;click&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;function &lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nf"&gt;$&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;#message&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;text&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Hello!&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;jQuery was heavily used for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;DOM manipulation&lt;/li&gt;
&lt;li&gt;Events&lt;/li&gt;
&lt;li&gt;AJAX requests&lt;/li&gt;
&lt;li&gt;Animations&lt;/li&gt;
&lt;li&gt;Form handling&lt;/li&gt;
&lt;li&gt;Cross-browser compatibility&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A typical project could look like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;HTML
CSS
jQuery
PHP
MySQL
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And honestly, many of these websites worked very well.&lt;/p&gt;




&lt;h2&gt;
  
  
  5. AJAX Changed the User Experience
&lt;/h2&gt;

&lt;p&gt;One of the biggest changes was AJAX.&lt;/p&gt;

&lt;p&gt;Instead of:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User action
   ↓
Full page reload
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;developers could do:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User action
   ↓
JavaScript
   ↓
AJAX request
   ↓
Server
   ↓
Response
   ↓
Update part of the page
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;$&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;ajax&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
    &lt;span class="na"&gt;url&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;/products&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;success&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nf"&gt;$&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;#products&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;html&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now only part of the page could change.&lt;/p&gt;

&lt;p&gt;This made websites feel much more interactive.&lt;/p&gt;




&lt;h2&gt;
  
  
  6. But There Was a Problem
&lt;/h2&gt;

&lt;p&gt;As applications became larger, frontend JavaScript became harder to maintain.&lt;/p&gt;

&lt;p&gt;Imagine having:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Header
Menu
Modal
Shopping Cart
Filters
Product List
Notifications
User Profile
Forms
Tabs
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And each component is changing the DOM using different JavaScript functions.&lt;/p&gt;

&lt;p&gt;You might end up with code like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nf"&gt;$&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;#cart&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;html&lt;/span&gt;&lt;span class="p"&gt;(...);&lt;/span&gt;

&lt;span class="nf"&gt;$&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;#menu&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;show&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

&lt;span class="nf"&gt;$&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;#modal&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;hide&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

&lt;span class="nf"&gt;$&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;#products&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;html&lt;/span&gt;&lt;span class="p"&gt;(...);&lt;/span&gt;

&lt;span class="nf"&gt;$&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;#notification&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;text&lt;/span&gt;&lt;span class="p"&gt;(...);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It can work.&lt;/p&gt;

&lt;p&gt;But as the application grows, keeping track of &lt;strong&gt;what changed, when it changed, and why it changed&lt;/strong&gt; becomes difficult.&lt;/p&gt;

&lt;p&gt;This was one of the problems modern frontend frameworks tried to address.&lt;/p&gt;




&lt;h1&gt;
  
  
  7. Enter React
&lt;/h1&gt;

&lt;p&gt;React introduced a different way of thinking about UI.&lt;/p&gt;

&lt;p&gt;Instead of manually telling the browser:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Change this element."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;You describe what the UI should look like based on the current state.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;Counter&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;count&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;setCount&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useState&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

  &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;button&lt;/span&gt; &lt;span class="na"&gt;onClick&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nf"&gt;setCount&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;count&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;count&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;button&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;When the state changes, React takes care of updating the UI.&lt;/p&gt;

&lt;p&gt;The developer mainly thinks about:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;State
  ↓
UI
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;rather than manually managing every DOM operation.&lt;/p&gt;




&lt;h1&gt;
  
  
  8. Components Changed How We Build UI
&lt;/h1&gt;

&lt;p&gt;Traditional development often started from pages.&lt;/p&gt;

&lt;p&gt;React encouraged developers to think in components.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;App
├── Header
├── Navigation
├── ProductList
│   ├── ProductCard
│   ├── ProductCard
│   └── ProductCard
├── Cart
└── Footer
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A reusable component might look like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;ProductCard&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;product&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;article&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;h2&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;product&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;h2&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;p&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;product&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;price&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;p&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;article&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now the same component can be reused with different data.&lt;/p&gt;

&lt;p&gt;This became particularly useful as applications became larger.&lt;/p&gt;




&lt;h1&gt;
  
  
  9. From Pages to Applications
&lt;/h1&gt;

&lt;p&gt;The biggest change wasn't simply:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;jQuery → React
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The bigger change was how we thought about web applications.&lt;/p&gt;

&lt;h3&gt;
  
  
  Traditional approach
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Browser
   ↓
Server
   ↓
HTML
   ↓
Browser
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Modern application approach
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;React Application
       ↓
      API
       ↓
Backend
       ↓
Database
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The frontend and backend could now be developed more independently.&lt;/p&gt;

&lt;p&gt;The backend could provide JSON:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"iPhone"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"price"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;999&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And the frontend could decide how to display it.&lt;/p&gt;




&lt;h1&gt;
  
  
  10. What Happened to PHP?
&lt;/h1&gt;

&lt;p&gt;PHP didn't disappear.&lt;/p&gt;

&lt;p&gt;In fact, PHP is still widely used.&lt;/p&gt;

&lt;p&gt;The difference is that there are now many different ways to build a web application.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;PHP + MySQL
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;can still be a great choice for a traditional website.&lt;/p&gt;

&lt;p&gt;Or you might have:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;React
   ↓
REST API
   ↓
PHP / Node.js / .NET / Java
   ↓
Database
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The frontend doesn't necessarily care what language the backend uses.&lt;/p&gt;

&lt;p&gt;It communicates through the API.&lt;/p&gt;




&lt;h1&gt;
  
  
  11. What Happened to jQuery?
&lt;/h1&gt;

&lt;p&gt;jQuery also didn't suddenly become useless.&lt;/p&gt;

&lt;p&gt;There are still many existing websites and applications that use it.&lt;/p&gt;

&lt;p&gt;But modern JavaScript now provides many features that previously made libraries like jQuery very useful.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;querySelector&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;can handle DOM selection.&lt;/p&gt;

&lt;p&gt;And:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nf"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;/api/products&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;can make HTTP requests.&lt;/p&gt;

&lt;p&gt;Modern browser APIs, better JavaScript support, and frontend frameworks reduced the need for jQuery in many new projects.&lt;/p&gt;




&lt;h1&gt;
  
  
  12. The Evolution in One Picture
&lt;/h1&gt;

&lt;p&gt;You can roughly think about the evolution like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Traditional Web
      ↓
HTML + CSS + PHP
      ↓
JavaScript
      ↓
jQuery
      ↓
AJAX
      ↓
More Interactive Applications
      ↓
Frontend Frameworks
      ↓
React / Vue / Angular
      ↓
API-based Applications
      ↓
Modern Full-Stack Applications
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Of course, real-world web development didn't follow one single straight line.&lt;/p&gt;

&lt;p&gt;Different technologies evolved at the same time.&lt;/p&gt;

&lt;p&gt;But this gives us a useful picture of the direction.&lt;/p&gt;




&lt;h1&gt;
  
  
  13. Does Modern Always Mean Better?
&lt;/h1&gt;

&lt;p&gt;Not necessarily.&lt;/p&gt;

&lt;p&gt;This is something developers sometimes forget.&lt;/p&gt;

&lt;p&gt;If you need a simple marketing website with a few pages, using a large frontend application architecture may add unnecessary complexity.&lt;/p&gt;

&lt;p&gt;A simple server-rendered website can still be a good solution.&lt;/p&gt;

&lt;p&gt;On the other hand, if you're building a complex application with lots of interactive UI and shared state, a component-based frontend architecture can make development easier to organize.&lt;/p&gt;

&lt;p&gt;The right technology depends on the problem.&lt;/p&gt;




&lt;h1&gt;
  
  
  14. What I Learned From This Evolution
&lt;/h1&gt;

&lt;p&gt;For me, the most interesting part isn't that React replaced jQuery.&lt;/p&gt;

&lt;p&gt;It's that &lt;strong&gt;the responsibility gradually moved toward the browser&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;We went from:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Server generates most of the page
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;to:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Browser handles more of the application
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And now we're seeing another shift with technologies such as server components, server-side rendering, static generation, edge computing, and full-stack frameworks.&lt;/p&gt;

&lt;p&gt;So web development isn't finished evolving.&lt;/p&gt;

&lt;p&gt;It's still changing.&lt;/p&gt;




&lt;h1&gt;
  
  
  Final Thought
&lt;/h1&gt;

&lt;p&gt;If you're learning React today, don't only learn React.&lt;/p&gt;

&lt;p&gt;Try to understand &lt;strong&gt;what problem React was created to solve&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Learn:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How HTTP requests work&lt;/li&gt;
&lt;li&gt;How server-side rendering works&lt;/li&gt;
&lt;li&gt;How PHP applications worked&lt;/li&gt;
&lt;li&gt;How the DOM works&lt;/li&gt;
&lt;li&gt;How AJAX works&lt;/li&gt;
&lt;li&gt;How APIs work&lt;/li&gt;
&lt;li&gt;How JavaScript interacts with the browser&lt;/li&gt;
&lt;li&gt;Why component-based architecture became useful&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Once you understand the journey, many modern frontend concepts become easier to understand.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The best way to understand the modern web is sometimes to look at the old web first.&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>react</category>
      <category>frontend</category>
      <category>news</category>
    </item>
  </channel>
</rss>
