Monorepo vs Polyrepo: Why I Merged My Repos Into One
I ran four repos for one product and lost Fridays to version-syncing. Here's how I think about monorepo vs polyrepo now, and when each setup…
I ran four repos for one product and lost Fridays to version-syncing. Here's how I think about monorepo vs polyrepo now, and when each setup…
TypeScript types vanish at runtime, which is how bad API and form data slips through. Here's how I use Zod to validate at the edges…
I moved from npm to pnpm six months ago and my node_modules went from 14GB to under 3GB. Here's what changed, where it bit me,…
React 19 forms, useActionState, and useOptimistic with before-and-after code. The features I actually kept after upgrading, and the one I'm still careful with.
Six TypeScript utility types that earn their keep in production, the hand-rolled types they replaced, and the clever ones I stopped using. Real code included.
I switched on the React Compiler in a real app and deleted most of my useMemo and useCallback calls. Here's what changed and where it…
What I actually keep in the hooks folder in 2026 - usePersistedState, useDebouncedValue, useEventListener - and the half-dozen custom hooks I quietly deleted.
Six months of running Bun in production for a small Node service. What I gained, what I lost, and the three sharp edges that almost…
React 19 turns ref into a regular prop, so forwardRef is on its way out. Here's how I migrate components, plus the codemod gaps and…
I shipped the same marketing site in Next.js and then in Astro, then kept score. Here's when I actually reach for each, with bundle numbers…