What I wish I knew before launching my first SaaS
Wrong tech choices, over-engineering, bad pricing, features nobody asked for. After a year building Academy, here are the 10 lessons I learned the hard way.
Thoughts, tutorials, and technical insights.
New articles every Wednesday and Friday
Real lessons from real projects, the mistakes, the fixes, and what I'd do differently
Wrong tech choices, over-engineering, bad pricing, features nobody asked for. After a year building Academy, here are the 10 lessons I learned the hard way.
I used to think code reviews were about finding bugs. After hundreds of PRs, here are the 10 lessons that changed how I review and receive feedback.
Components everywhere, utils mixed with hooks, routes importing from random folders. After dozens of projects, here's the structure that actually scales.
Re-renders everywhere, 2.5MB bundles, 5000 DOM nodes. Here are the 7 performance mistakes I made and the fixes that actually worked.
I spent months fighting race conditions, stale data, and boilerplate. The real problem was using a synchronization tool for a caching problem.
Master React hooks from basics to advanced patterns
React 19 isn't just an update. It's a shift in how we think about forms, async state, and server interactions. useActionState, useFormStatus, useOptimistic, and use() change everything.
useId, useDebugValue, useSyncExternalStore, useDeferredValue, useTransition. You've probably scrolled past them. You probably need them now.
useReducer, useLayoutEffect, and useImperativeHandle aren't complicated. They solve specific problems that the basic hooks can't.
useRef, useMemo, and useCallback aren't optimization hooks. They're correctness hooks that happen to also improve performance.
useState, useEffect, and useContext are responsible for 90% of bugs in production. Here's what nobody told you when you started.