In late 2023 my projects were plain HTML and vanilla JS. By 2024 I'd moved to React, but the React I wrote then looks very different from what I write now. React didn't change much. What changed is that I stopped asking "does it run?" and started asking "will I still understand this in a year?"

My 2024 stack was Express, MongoDB with Mongoose and plain JavaScript everywhere. It worked. GeekMate, a swipe-based networking app from that year, is a good snapshot: it does its job, but every file assumes you already know what's going on, because I was the only person who ever read it.
When I built CodePersona, I picked TypeScript because I was tired of finding undefined in production instead of in my editor. I picked Vite because a fast dev loop meant I'd actually run the app between edits instead of batching changes and hoping.
If I start something new today, my defaults are:
• TypeScript, even for a weekend project. Half my 2024 bugs were type errors in disguise.
• Vite over Create React App.
• Supabase or a typed ORM instead of raw queries, so a schema mismatch shows up before runtime.
• A component library like shadcn, so my time goes to the parts of the UI that are actually new.
• An LLM layer next to the web stack, because most things I build now touch a model somewhere.
So this isn't really "new tools are better." My 2024 stack was built to ship something. My 2026 stack is built to ship something I can still explain a year later. The tools are just the evidence.