Latest tips
Articles on Next.js, design, performance, and things I've learned while shipping products.
Three Next.js App Router pitfalls that bit me
Async params, hardcoded locale assumptions, and the Server/Client boundary — three subtle traps when migrating from Pages to App Router.
- #nextjs
- #app-router
Why useEffect runs twice in dev (and why it's a good thing)
Strict Mode mounts → unmounts → remounts every component in dev. Here's what's actually happening and why your effects should embrace it.
- #react
- #useeffect
When `@apply` is justified (and when it's an anti-pattern)
Tailwind's @apply directive looks like a great escape hatch — but reaching for it too often signals you've lost the plot. Here's the heuristic.
- #tailwind
- #css