Integrate JavaScript SDK v1.1 with your Next.js App


This guide will help you integrate RudderStack with your Next.js app using the RudderStack JavaScript SDK. On successful integration, you can track and send real-time user events to your preferred destinations via RudderStack.

To set up the event stream on your Next.js app, you need to perform the following steps:

  1. Integrate the JavaScript SDK with your Next.js app and set up the tracking code
  2. Configure a destination in RudderStack
  3. Deploy your Next.js app and verify the events

Prerequisites

This guide assumes you have installed and set up your Next.js app. Refer to the Next.js documentation for more information.

Integrating the JavaScript SDK with your Next.js app

Integrating the JavaScript SDK with your Next.js app involves the following steps:

  1. Creating a JavaScript source in RudderStack
  2. Installing and configuring the JavaScript SDK in your app

Creating a JavaScript source in RudderStack

The RudderStack JavaScript source is required track the events from your Next.js app. Follow these steps to set it up in your RudderStack dashboard:

  1. Note the data plane URL in your RudderStack dashboard. This is required to set up the JavaScript SDK in your Next.js app.
Data plane URL
  1. Click the Sources button in the left navigation bar and select New Source to create a source. Under Sources, select Event Streams > JavaScript.
  2. Assign a name to your source and click Continue.
  3. Your JavaScript source is now configured. Note down the write key for this source:
JavaScript source write key

Method 1: Installing and configuring the JavaScript SDK in your Next.js app

To integrate RudderStack with your Next.js app and set up the tracking code, follow the steps below:

  1. In your Next.js project folder, create a rudderInitialize.js file with the following code:
export async function rudderInitialize() {
  (function() {
    var e = (window.rudderanalytics = window.rudderanalytics || []);
    (e.methods = [
      'load',
      'page',
      'track',
      'identify',
      'alias',
      'group',
      'ready',
      'reset',
      'getAnonymousId',
      'setAnonymousId',
      'getUserId',
      'getUserTraits',
      'getGroupId',
      'getGroupTraits',
      'startSession',
      'endSession',
    ]),
    (e.factory = function(t) {
      return function() {
        e.push([t].concat(Array.prototype.slice.call(arguments)));
      };
    });
    for (var t = 0; t < e.methods.length; t++) {
      var r = e.methods[t];
      e[r] = e.factory(r);
    }
    (e.loadJS = function(e, t) {
      var r = document.createElement('script');
      (r.type = 'text/javascript'),
      (r.async = !0),
      (r.src = 'https://cdn.rudderlabs.com/v1.1/rudder-analytics.min.js');
      var a = document.getElementsByTagName('script')[0];
      a.parentNode.insertBefore(r, a);
    }),
    e.loadJS(),
      e.load('WRITE-KEY', 'DATAPLANE-URL'), // Replace 'WRITE-KEY' and 'DATAPLANE-URL'
      e.page();
  })();
}
info
If you are using an older version of the JavaScript SDK, see the Version Migration Guide to migrate to SDK v1.1.
  1. Replace <WRITE_KEY> and <DATA_PLANE_URL> with your JavaScript source write key and the data plane URL obtained in the Creating a JavaScript source in RudderStack section above.
  2. In the pages folder, open the index.js file and add the following code snippet:
import React from 'react';
import { rudderInitialize } from '../rudderInitialize';
export default function Home() {
  React.useEffect(() => {
    rudderInitialize();
  }, []);
  const search = () => {
    window.rudderanalytics.page();
    window.rudderanalytics.track("Track Event.");
  };
info
See the sample Next.js app in the RudderStack Sample Applications repository for more information.

Method 2: Installing and configuring the JavaScript SDK using NPM package in your Next.js app

Alternatively, you can integrate RudderStack with your Next.js app and set up the tracking code by following the steps below:

  1. In your Next.js project, go to the pages folder and create a new rudderInitialize.js file with the following code:
export async function rudderInitialize() {
  window.rudderanalytics = await import("rudder-sdk-js");

  rudderanalytics.load("<WRITE_KEY>", "<DATA_PLANE_URL>", {
    integrations: { All: true }, // load call options
  });

  rudderanalytics.ready(() => {
    console.log("All set!");
  });
}
  1. Replace <WRITE_KEY> and <DATA_PLANE_URL> with your JavaScript source write key and the data plane URL obtained in the Creating a JavaScript source in RudderStack section above.
  2. In the pages folder, open the index.js file and add the following code snippet:
import React from "react";
import { rudderInitialize } from "./rudderInitialize";

export default function Home() {
  React.useEffect(() => {
    rudderInitialize();
  }, []);

  const search = () => {
    window.rudderanalytics.page();
    window.rudderanalytics.track("Sample Track Event");
  };
info
See the sample Next.js app in the RudderStack Sample Applications repository for more information.

Configuring a destination in RudderStack

This section details the steps required to set up a destination in RudderStack, where you can send all events tracked by the JavaScript SDK you set up above.

  1. In your RudderStack dashboard, click Destinations > New destination.
  2. Choose your preferred destination from the list.
  3. Assign a name to the destination and click Continue.
  4. Select the JavaScript source configured in the above section and click Continue.
  5. Configure the destination with the required settings.
info
Optionally, you can add a user transformations to this destination to transform your events.

Deploying your Next.js app and verifying the event stream

To verify if your event stream is working correctly, deploy your Next.js app and test if the events are tracked and delivered correctly. To do so, follow these steps:

  1. From your terminal, navigate to the folder containing your Next.js app and run following command:
npm run dev
  1. Open the local server URL(generally http://localhost:3000/) in your browser to view the app.
  2. Go to your browser’s developer tools and check the Network tab to verify if the RudderStack JavaScript SDK (rudder-analytics.js) is loaded correctly. The following image highlights this option for the Google Chrome browser:
Chrome Network tab
  1. Click the various links or pages in your app for RudderStack to track these actions.
  2. Go to the Live Events tab of your JavaScript source in the RudderStack dashboard to check if the events are tracked. Note that you may face a minor delay before the events start showing up in your dashboard.
  3. Go to your destination to verify if the events are received successfully.


Questions? Contact us by email or on Slack