Tech
App Router seams that keep a Next.js app honest
Omar Farouk · 2025-12-11 · 6 min
Resources
The App Router is not a folder rename. It is a contract about where data is allowed to live, what can be cached, and which components may touch the network. We draw that line before we move a single page.
Teams that skip the contract end up with client components that fetch in useEffect, cache that nobody can explain, and a production bug that only appears after a hard refresh.
Cache on purpose
Accidental caching is how catalogs go stale. We name the tags, the revalidate windows, and the mutations that bust them. If a merchandiser publishes a price, we know which tag to invalidate.
Server components read. Client components interact. The boundary is a file, not a feeling. We review that boundary in every pull request that crosses it.
Move page by page
We do not flip the whole site. We move a route, watch the metrics, then move the next. Parallel routes and intercepting routes wait until the basics are boring.
Honest Next.js apps are slow to start and fast to change later. That trade is the point of the App Router.
Related articles
Tech
Kubernetes without the theatre
The smallest cluster that still gives us rollbacks, secrets, and sleep.
Karim Nasser · 2025-09-02 · 6 min
Read articleTech
React Native without a leaky native bridge
When we drop to native modules, and how we keep the JS side boring.
Omar Farouk · 2025-10-09 · 6 min
Read articleTech
Preview apps that stakeholders actually click
GitHub Actions, ephemeral URLs, and the review comment that replaces a meeting.
Karim Nasser · 2025-11-18 · 6 min
Read article