Customizing the _app.js and _document.js Pages
Explore how to customize Next.js core files _app.js and _document.js to manage shared components like navigation bars, maintain state between pages, and modify fundamental HTML elements. Gain insights into the appropriate use of these files for global styles, context providers, and enhancing page rendering without sacrificing performance optimizations.
We'll cover the following...
There are certain cases where we need to take control over page initialization so that every time we render a page, Next.js will need to run certain operations before sending the resulting HTML to the client. To do that, the framework allows us to create two new files, called _app.js and _document.js, inside our pages/ directory.
The _app.js page
By default, Next.js ships with the following pages/_app.js file:
As we can see, the function is just returning the Next.js page component (the Component prop) and its props (pageProps).
But now, let’s say that we want to share a navigation bar between all the pages without manually importing that component on each page. We can start by creating the navbar inside components/Navbar.js:
That’s a really simple navigation bar with just three links that will allow us to navigate our website.
Now, we need to import it inside our _app.js page as follows:
If we now create two more pages (about.js and contacts.js), we’ll see that ...