You open LinkedIn, and it’s the same story every week: “React is dead.” “Next.js is the future.” “Only fools use CRA.”
Relax. Let’s get one thing straight — no tech stack is the stack. There is no one-size-fits-all. If you're serious about building real-world stuff, you gotta stop thinking in black-and-white and start choosing tools like a carpenter picks blades, based on the job, not trend.
So let me break down why I still mostly pick React.js, why I use React + Vite + TypeScript + Tailwind CSS for most projects, and when I switch to Next.js — all with zero fluff and full honesty.
🧱 The Stack That Works for Me
For most of my projects, I use:
React
– Just the core library, no extra fatVite
– Lightning-fast dev server + buildTypeScript
– Catches bugs before runtimeTailwind CSS
– Utility-first CSS that scales
This stack is what I call zero bullshit, all control. I don’t have to fight config files. I don’t wait 10 seconds for builds. I don’t beg my framework to let me do what I want.
Just code → save → boom.
React gives me the building blocks. Vite gives me speed. TypeScript saves me from stupid mistakes. Tailwind makes UI feel like LEGO blocks.
And when you mix these right? Chef’s kiss.

🧠 Tech Stack ≠ Forever Relationship
A few months back, I was working on a toll management system, complex dashboards, forms, tables, live vehicle tracking, all built in React.
Everything was smooth until the client said, "We need a desktop version too. Offline support would be great."
That moment, we had two options:
- Cry and say it’s not possible
- Or pick up Electron.js, package our frontend, and make it work
Guess what we did? We learned Electron in 2 days (thanks to ChatGPT) and got to work.
That’s when it hit me: Never be emotionally attached to a stack. Your job is to solve problems, not defend your favourite tool.
Devs today must be like water — adapt to the container (project) you’re in. If tomorrow I have to build with Svelte or Solid or Remix, I’ll do it. No ego.
🔄 React is Not Outdated
Just because everyone’s talking about Next.js or Server Components doesn’t mean React’s dying. React is evolving, slowly, yes, but in the right direction.
Some dope stuff in the latest React versions:
- React Server Components (for full-stack power without huge bundles)
- Concurrent Features (transitions, suspense)
- React Compiler (soon) to remove the memo/optimize boilerplate
- New JSX Transform (simpler, cleaner syntax)
And guess what? All these work beautifully in Vite too.
React is still the foundation of most modern UIs — including the Next.js you love so much. It’s not going anywhere.
🏗️ How I Really Learn, Build Painful Projects
If you think watching 100 tutorials will make you a good dev, you’re playing yourself. Real growth comes when you build huge, uncomfortable, borderline annoying projects.
Build that admin panel with 6 different user roles. Build that onboarding flow that breaks every second. Build those nested modals, dynamic sidebars, and API loaders.
You'll cry, get stuck, burn out, and then suddenly, learn.
That’s how I learned:
- Electron
- Complex form handling
- App state architecture
- Deploying apps on AWS
- Clean folder structures
- Building own component libraries
- Debugging memory leaks
- Using GPT like a coding buddy, not a crutch
That’s how you get competent, by grinding on real, raw, painful projects. Not just watching people code on YouTube.
💡 When I Do Use Next.js (And Actually Enjoy It)
Next.js is not bad. It’s powerful when used where it makes sense.
I use Next.js when:
- SEO matters (blogs, marketing sites, portfolios)
- I want Image Optimization + Static Generation
- I need a hybrid app with server + client rendering
- I want to deploy a full-stack MVP fast
It’s clean, the file-based routing is decent, and their image system is great for performance.
But for internal apps, dashboards, SaaS panels, etc., I honestly find Next.js too opinionated. Too much magic. Too many conventions.
With React + Vite, I can shape the app like I want. No restrictions.
👀 TL; DR
- I don’t get locked into one stack
- I learn on the go, based on the project’s need
- I’ve built things beyond toy projects, real stuff, with edge cases, bugs, and business logic
- I know what tools to pick, when
- I don’t whine when things go wrong — I learn, adapt, ship
💬 Final Thoughts
React is not dead. Next.js is not the savior. Your tech stack is just a toolkit, not your identity.
Choose what fits the project, and never stop learning. One day you're building a React SPA. Next day you're bundling it with Electron. And the day after? Maybe deploying it on AWS Lambda with serverless functions.
Be flexible. Be sharp. Build. Break. Fix. Repeat.
🔥 React + Vite + TypeScript + Tailwind. Still slaps in 2025. Use it when it makes sense. Switch when it doesn't.
Until we meet again, Keep building. You’ll figure it all out.
Regards, Siddharth, a tech guy on web