Logged Docs
Back to Examples

Next.js

Use Logged in a Next.js App Router project by initializing the SDK in a client component.

Provider component

tsx
"use client";

import { useEffect } from "react";
import { Logged } from "@logged/sdk";

const logger = new Logged({
  apiKey: process.env.NEXT_PUBLIC_LOGGED_API_KEY!,
});

export function LoggedProvider() {
  useEffect(() => {
    logger.auto();
    logger.interceptConsole();

    return () => {
      logger.stopAutoCapture();
      logger.stopConsoleInterception();
    };
  }, []);

  return null;
}

Why this is a client component

logger.auto() and interceptConsole()rely on browser globals, so they must run on the client. The provider above uses the "use client" directive to ensure that.

Add the provider

tsx
import { LoggedProvider } from "@/components/logged-provider";

export default function RootLayout({ children }) {
  return (
    <html lang="en">
      <body>
        <LoggedProvider />
        {children}
      </body>
    </html>
  );
}

Place the provider near the root of your application so it initializes once and remains active for the lifetime of the page.

Send logs from components

tsx
"use client";

import { Logged } from "@logged/sdk";

const logger = new Logged({
  apiKey: process.env.NEXT_PUBLIC_LOGGED_API_KEY!,
});

export function CheckoutButton() {
  async function handleCheckout() {
    try {
      await pay();
      logger.success("Payment completed");
    } catch (error) {
      logger.capture(error, { step: "checkout" });
    }
  }

  return <button onClick={handleCheckout}>Pay now</button>;
}