Next.js use of _app.js and _document.js

I currently use _document.js to inject css into my Next.js app and I would like to start using _app.js to help inject data into pages.

Was wondering if it possible to use _document and _app in tandem or should we only use one or the other?


Short answer: Yes, You can use both. They serve different purpose and can be used in the same application.

According to NextJS docs:

Next.js uses the App component to initialize pages.

To override, create the ./pages/_app.js file and override the App class

and

Pages in Next.js skip the definition of the surrounding document's markup. For example, you never include <html>, <body>, etc. To override that default behavior, you must create a file at ./pages/_document.js, where you can extend the Document class.

Note: _document.js is only rendered on the server side and not on the client side. so event handlers like onClick is not going to work.