Denshin / Blog / Engineering
The boring stack still wins for 90% of client work
An honest defence of the unfashionable stack (React, Vite, Tailwind, Lambda, DynamoDB), and the calibration we use before adopting anything new.
Denshin Engineering · Engineering Team · 28 March 2026 · 1 min read
Every six months somebody on the team brings in a new framework, a new state library, or a new build tool. We try it. We talk about it. Almost every time, we end up back where we started.
Our default stack right now is React, Vite, TanStack Query, Tailwind, Zod, react-hook-form, AWS Lambda, DynamoDB, and Serverless Framework. None of these are exciting. All of them are well-documented, widely-deployed, and survive the kind of hand-off where a new engineer joins the project and is productive on day three.
The hidden cost of an exciting stack is the cost of not being on the boring one. New hires don't know it. Stack Overflow doesn't help. The maintainer left two years ago and now you maintain a fork. The framework's "right way" changes with the moon.
Boring isn't a value statement. It's a calibration of risk. We pay attention to what's new, and we move when the boring choice stops being the best one. But the threshold for "stops being the best one" is high, and the burden of proof is on the new thing.
I'm aware this sounds curmudgeonly. The honest version is more like: we've shipped enough projects that we know how each piece behaves at 2am on a Saturday, and that knowledge is the thing the client is actually buying.
Two things have moved the needle in the last year and earned a place in the boring stack: TanStack Query (replaced our last in-house cache), and Zod (replaced our hand-rolled validators). Both because the cost of not having them got too high. That's the bar.
Tags: Engineering Culture, Stack, Boring Tech
All posts · Work with Denshin