Why a new Router?
Next.js is special in that:
- Routes don’t need to be known ahead of time
- Routes are always lazy-loadable
- Top-level components can define
getInitialProps
that should block the loading of the route (either when server-rendering or lazy-loading)
As a result, we were able to introduce a very simple approach to routing that consists of two pieces:
- Every top level component receives a
url
object to inspect the url or perform modifications to the history - A
<Link />
component is used to wrap elements like anchors (<a/>
) to perform client-side transitions
We tested the flexibility of the routing with some interesting scenarios. For an example, check out nextgram.