Hi there readers, long time! I think I’ve gotten used to saying this more often than I should, but whatever, you don’t look forward to a blog by me every week do you? If you do,I really don’t know if I should laud your attention span or bully you for not having a life. Either way, in today’s episode of yapalogy with Siddharth, we’ll cover why I’ve moved to FastAPI and React as my go to project stack, mind you, I love building mobile and desktop apps as well, but that doesn’t get any readers so bear with the web dev larp.
The Jack of all Trades, master of one (two actually)
I figured out that a lot of jobs I was applying to like all dev jobs in 2026, if there are any left, require full proficiency in at least one language and/or one framework, but it is simple permutations and combinations, having deep expertise in just one thing limits your chances, at least for someone like me, maybe, just maybe I was a bit too harsh with the word ‘limits’ while core CS principals are independent of languages and transferable the chances get shrunken if you’re someone with 2 YOE in Node.js competing against someone with 1 YOE in FastAPI, for a Backend Engineer role that doesn’t explicitly says it needs you to have experience in FastAPI but they use FastAPI, damn those were too many FastAPIs, coming back to the point, the likelihood of the competitor being hired is significantly higher since due to AI companies have lost the patience to have the ‘learn on the job’ phase, the demand has never been lower and the supply has never been higher. An alternative to this is being a subject matter ‘expert’ as opposed to being a generalist, but me personally I love to tinker around new things and a generalist sounds more like me (as of now at least).
The ‘Baggage’ Problem
More often than not, these frameworks come with their own ‘baggage’, the ‘baggage’ in this case being vulnerabilities, with more slop code being pushed to overworked maintainers, the margin of error skyrockets. There’s not one peaceful week where I have a 100% surety that my project dependencies aren’t doing something horrifying underneath the hood. Half the npm ecosystem feels like it was held together by a 19 year old maintainer surviving on Monster Energy and unresolved childhood trauma.
And again, this is not me saying Next.js is unsafe or React is unsafe or whatever quote farming thing Twitter would turn this into. Bigger frameworks naturally end up with bigger attack surfaces because they just do more things. More abstractions, more runtime magic, more places for something stupid to happen.
The Government Agency Problem
The thing that started exhausting me with Next.jswas cognitive load.It felt like I was operating a small government agency.
I open a project after two weeks and tgere are stupid questions racing through my autistic brain, why is this component server side.? why is this one client side ? why is this fetch cached? why is this one not cached ? why did hydration fail? why does this package work locally but explode on edge runtime? why does the build output look like classified military documentation?
And the funniest part is AI coding tools somehow make this worse. LLMs LOVE abstraction. They are obsessed with it. Ask one to make a simple dashboard and it creates a distributed systems thesis accidentally. Somewhere deep in your codebase there’s now a file called providerFactoryManager.ts and nobody knows why it exists, including the AI.
Return of the Ex
Soon my way to seek simpler alternatives, I went back to my ex, Vite. Vite feels lighter. React without the extra philosophical layers attached onto it. The startup is instant, HMR is absurdly fast, and most importantly it feels predictable. The app does what I tell it to do instead of trying to outsmart me with seventeen optimisations I forgot existed. And I know some people enjoy the fullstack framework experience, but I realised I like separation more. Frontend should frontend. Backend should backend.
If my React app breaks I know the stupidity originated somewhere in the React app. If my API dies I know the stupidity originated somewhere in the API. If Docker breaks everything then that’s just Docker maintaining its lifelong mission of psychologically damaging developers globally.
The separation reduces mental overhead massively for me. Modern metaframeworks blur too many boundaries together sometimes.
FastAPI and the Pythonification of Humanity
Hence, FastAPI. Python type hints are useful, validation is built in, autogenerated docs work out of the box, async support is not stapled onto the framework with duct tape and prayers.
And Python itself has become impossible to ignore now because AI basically adopted it as its official religion. Every useful AI library lands in Python first. Every new inference framework is Python first. Half the internet’s GPU infrastructure probably runs through Python scripts written by sleep deprived engineers at this point. Instead of constantly context switching between TypeScript backend land and Python AI land I just leaned harder into FastAPI.
Which btw, is fast enough that I've stopped caring about backend benchmark discourse for most projects. Tech Twitter will have you believing your grocery list app requires Rust and twelve Kubernetes nodes minimum. Brother your app has eleven users and four of them are testers you added manually without psql with postman.
The Boringness Principle
The other thing I’ve started valuing a lot more lately is boringness People massively underestimate how important boring architecture becomes once projects stop being weekend experiments and now are things you have to maintain (is this how teen moms feel?). Cool abstractions are fun until production breaks at 2 AM and now you’re reverse engineering runtime behaviour like you’re deciphering ancient scripture.
Simpler stacks also make AI generated code easier to sanity check. Which matters a lot because contrary to LinkedIn propaganda, these models still hallucinate with unbelievable confidence. Smaller systems make bad code easier to spot. If an LLM generates cursed nonsense in a Vite and FastAPI app, there’s usually fewer places for the cursed nonsense to hide.
The Tradeoff Thing
Now obviously there are tradeoffs because there always are. Next.js still makes way more sense for certain kinds of projects. SEO heavy applications, content driven platforms, heavily server rendered apps, all that stuff genuinely benefits from the integrated experience. I’m not starting a holy war against metaframeworks because JavaScript developers are well, javascript developers.
But for the stuff I enjoy building lately, AI tools, dashboards, APIs, internal tools, random experiments that may or may not survive a month before I get distracted by another idea, Vite and FastAPI feels easier to reason about. I care less about whether a framework is revolutionary and more about whether I can still understand my own architecture three months later without feeling like I’m investigating a cybercrime case.
Will This Age Well
Will this still be my stack in two years? Probably not (lol my non-commital ass wouldn't even use this in 6 months let alone 2 years). Developers switch stacks the same way gym bros switch personalities after listening to one podcast episode. But for now this setup feels stable enough that I can focus more on building things and less on rebuilding my entire infrastructure every weekend because somebody online said a bundler was “the future”.
tl;dr
Modern metaframeworks started feeling mentally exhausting, AI generated abstractions made it worse, Vite feels predictable, FastAPI feels clean, Python owns AI now anyway, boring stacks survive longer, and I’d rather spend my weekends building projects instead of rebuilding my stack because a YouTuber discovered a new bundler.