Having the latest tech doesn't mean much if it doesn't actually help us work or, worse, just adds more mental overhead. After a year of experimenting with different infrastructure and tooling, I’ve realized that a tool's true value is measured by how much it actually helps the team's workflow.
Some things have proven their worth. Strict TypeScript is a keeper, provided the focus is on data integrity at the boundaries rather than just decorating every single component prop. Agreed-upon lint and format rules within a monorepo are also crucial; they stop us from arguing about code style right when we should be discussing actual features. On the testing side, Vitest’s integration with Vite has been great for speed, while Playwright remains a lifesaver for making sure the app actually works end-to-end through real user journeys.
But there are patterns I definitely don't want to repeat. One big mistake was mixing tooling changes with mass formatting in a single pull request; it makes reviewing logic a nightmare when you're fighting through thousands of lines of changed formatting. I also got caught in "dual lint" situations that dragged on forever because there was no clear plan to phase one out, and I treated preview compilers like they were major cutovers when they weren't. Finally, doing framework "bake-offs" without clear constraints is usually just a waste of time.
Moving forward, every technical change needs to answer four questions: What actually breaks if we skip this? Who owns this configuration on a Monday morning? Is our CI matching our local environment? And is this a bridge, a default, or just a preview?
Heading into 2026, I want to be more data-driven. I want to measure things before deciding, maybe using tools like oxlint. Our TypeScript implementation needs to be more mature with real implementation targets, and visual regression testing needs to be more scoped so it doesn't get too noisy. Most importantly, delivery and CI need to be part of the core planning, not just an afterthought.
The bottom line: measure first, ensure there's an owner, label every preview feature clearly, and kill the dual stack as soon as the pilot ends. We just need a system we can actually trust.