What Genuinely Got Better
Data fetching is dramatically better. Async Server Components meant I could delete entire layers of getServerSideProps boilerplate. Co-locating the fetch with the component that uses the data is cleaner and easier to maintain. The layout system is also a genuine improvement — nested layouts that persist across route changes without re-mounting are something I'd been duct-taping together in Pages Router.
Loading UI and error boundaries per route segment — finally. In Pages Router you handled these at the page level at best. Now I have granular loading states that match the actual component tree.
What Was Harder Than Expected
The 'use client' boundary was the hardest conceptual shift. It changes how you think about component composition. Moving existing components over required auditing every useState, useEffect, and event handler. Some components that looked simple required significant restructuring.
Third-party library compatibility was a real friction point. Several libraries I relied on used browser APIs during render and didn't work in Server Components. Some had been updated for App Router, some hadn't. Debugging those failures is not beginner-friendly.
Key takeaways
- Start new features in App Router but migrate existing Pages Router code incrementally — the two can coexist in the same Next.js project
- Audit third-party dependencies for App Router compatibility before migrating — libraries that access browser APIs during render will fail as Server Components
- Plan your client/server component boundary upfront — retrofitting it is significantly more painful than designing for it from the start
Conclusion
App Router is the future of Next.js and the direction is correct. The migration is genuinely disruptive and the documentation has caught up but wasn't always ahead of the curve. Go in with eyes open, migrate incrementally, and don't let the rough edges of the early days colour your long-term view.
Enjoyed this article?

Vivek Kumar Singh
Technical Expert · Full Stack Cloud Engineer · Tokyo, Japan