Next.js
Add Shipabase to a Next.js App Router project.
Install#
npm i @shipabase/jsNEXT_PUBLIC_SHIPABASE_KEY=SB-EU-xxxxxxxxxxCreate a providers component#
"use client"; import { useEffect } from "react";import { init } from "@shipabase/js"; export function Providers({ children }: { children: React.ReactNode }) { useEffect(() => { init(process.env.NEXT_PUBLIC_SHIPABASE_KEY!, { appVersion: "1.0.0" }); }, []); return <>{children}</>;}Wrap your layout#
import { Providers } from "./providers"; export default function RootLayout({ children }: { children: React.ReactNode }) { return ( <html lang="en"> <body> <Providers>{children}</Providers> </body> </html> );}Track events#
"use client";import { trackEvent } from "@shipabase/js"; <button onClick={() => trackEvent("checkout_started", { plan: "pro" })}>Buy</button>;Importing @shipabase/js in server code won’t crash, but call init and trackEvent from the browser (in useEffect or event handlers). For server-side events, use @shipabase/js/node.
Pages Router: call init in a useEffect in pages/_app.tsx.