Integrating with NextJS Version 12 and Lower
Next.js enables a React application to be rendered on either the client-side or server-side, improving first-page load performance and capability. Integrating TrackJS will require an isomorphic adapter to inject either the browser agent or the node agent at runtime.
Attach TrackJS into Next.js through a custom <app> as described in the Next.js documentation.
Custom _app.js
The pages/_app.js
override of the Application enables us to attach the standard React componentDidCatch
handler. The rest of the code is boilerplate from the Next.js documentation.
import App from "next/app";
// the Isomorphic Adapter is a custom shim you need to add to run TrackJS on both browser and server.
// see below.
import { TrackJS } from "./util/trackjs-isomorphic.js";
if (!TrackJS.isInstalled()) {
TrackJS.install({
token: "YOUR_TOKEN"
});
}
class MyApp extends App {
componentDidCatch(error, errorInfo) {
TrackJS.track(error);
this.setState({ error });
// Anything else you want to do with the error.
}
render() {
const { Component, pageProps } = this.props;
return <Component {...pageProps} />
}
}
export default MyApp;
TrackJS Isomorphic Adapter
To use the agent effectively in both NodeJS and on the browser, you need to add a small isomorphic adapter to your application. This allows you to get the correct agent object in your code.
module.exports = process.browser ? require("trackjs") : require("trackjs-node");
Server API
Next.js is commonly augmented with Express for a data API. See the Express integration for details.