{ "slug": "nextjs", "audience": "nextjs", "seo": { "title": "Next.js Analytics — OpenPanel SDK for App Router & Pages Router", "description": "Add analytics to your Next.js app in minutes. OpenPanel's Next.js SDK supports App Router, Pages Router, server-side events, and automatic route change tracking. Open source, cookieless, from $2.50/month.", "noindex": false }, "hero": { "heading": "Analytics Built for Next.js", "subheading": "Most analytics tools treat Next.js like a static site. OpenPanel was built for how Next.js actually works — App Router, server components, API routes, and route changes all tracked correctly. Install in 5 minutes, get events, funnels, and user profiles that work with SSR.", "badges": [ "App Router support", "Server-side events", "Auto route tracking", "2.3 KB client bundle" ] }, "problem": { "title": "Why standard analytics breaks in Next.js", "intro": "Next.js is not a traditional website. Most analytics tools were built before App Router existed and show it.", "items": [ { "title": "GA4 breaks with App Router route changes", "description": "Google Analytics was designed for traditional page loads. In Next.js App Router, client-side navigation doesn't trigger GA4's page view events unless you add custom workarounds. Your analytics misses a significant portion of page views." }, { "title": "Cookie consent is painful in Next.js", "description": "Implementing a GDPR-compliant cookie consent flow in a Next.js app requires next/script, consent state management, and conditional script loading. It's a non-trivial engineering task just to run analytics." }, { "title": "No server-side tracking", "description": "Most analytics SDKs are client-only. Server-side events — API route completions, background jobs, server actions — are invisible. You're missing half the picture." }, { "title": "Analytics libraries bloat your bundle", "description": "Many analytics SDKs add 20–50 KB to your JavaScript bundle. In a performance-conscious Next.js app, that overhead matters for Core Web Vitals." } ] }, "features": { "title": "Analytics that works the way Next.js works", "intro": "OpenPanel's Next.js SDK was designed for modern Next.js patterns — not adapted from a legacy client-only library.", "items": [ { "title": "Next.js SDK with App Router support", "description": "Install @openpanel/nextjs, add the to your root layout, and automatic route change tracking works immediately across App Router and Pages Router." }, { "title": "Automatic route change tracking", "description": "Every router.push(), navigation, and back/forward browser action is captured as a page view. No custom useEffect or router event listeners needed." }, { "title": "Server-side event tracking", "description": "Import openPanel in any server component, API route, or server action to track events server-side. Track form submissions, payment completions, and background jobs without any client involvement." }, { "title": "Cookieless by default", "description": "The OpenPanel SDK uses no cookies. No consent management library, no conditional script loading, no GDPR consent modal needed — just install and track." }, { "title": "Identify users across sessions", "description": "Call op.identify({ profileId, name, email }) after authentication to tie anonymous events to known users. Works with any auth solution including NextAuth.js, Clerk, and custom implementations." }, { "title": "TypeScript-first SDK", "description": "Full TypeScript types for all methods. Autocomplete for event names and properties. Zero runtime errors from mistyped event calls." }, { "title": "2.3 KB gzipped client bundle", "description": "The smallest full-featured analytics SDK for Next.js. No impact on Lighthouse scores or Core Web Vitals." } ] }, "benefits": { "title": "Why Next.js developers choose OpenPanel", "intro": "OpenPanel fits naturally into a modern Next.js codebase — not as an afterthought.", "items": [ { "title": "Works exactly how Next.js works", "description": "Built for App Router, server components, and modern Next.js patterns. Not bolted onto a client-only library." }, { "title": "No consent infrastructure needed", "description": "Cookieless tracking means no consent modal, no next/script loading gymnastics, no conditional initialization. Install once, works everywhere." }, { "title": "Track server and client events in the same dashboard", "description": "Server actions, API endpoints, and client interactions all show up together. Full picture of what your app is doing." }, { "title": "Open source and self-hostable", "description": "Run OpenPanel on your own infrastructure. Your Next.js app's analytics data never leaves your servers." }, { "title": "From $2.50/month", "description": "No enterprise contract, no per-seat fees. Pay for events, get all features. Start free with 30-day trial." } ] }, "faqs": { "title": "Frequently asked questions", "intro": "Common questions from Next.js developers evaluating OpenPanel.", "items": [ { "question": "How do I install OpenPanel in a Next.js app?", "answer": "Install @openpanel/nextjs, add to your root layout.tsx, and you're tracking page views. For custom events, import and call op.track('event_name', { properties }) anywhere. See the full step-by-step guide at /guides/nextjs-analytics." }, { "question": "Does OpenPanel support Next.js App Router?", "answer": "Yes. The handles App Router route changes automatically using the usePathname hook internally. No custom setup is needed for client-side navigation tracking." }, { "question": "Can I track events in Server Components and API Routes?", "answer": "Yes. Import { openPanel } from @openpanel/nextjs/server and call openPanel.track() in any server context including Server Components, Route Handlers, and Server Actions." }, { "question": "Does OpenPanel work with NextAuth.js or Clerk?", "answer": "Yes. Call op.identify({ profileId: session.user.id, ... }) after authentication to link events to user identities. Works with any auth solution that gives you a user ID." }, { "question": "Does OpenPanel add significant bundle size to my Next.js app?", "answer": "No. The client-side SDK is 2.3 KB gzipped. For reference, GA4 adds 50+ KB. OpenPanel has negligible impact on your bundle size or Core Web Vitals." }, { "question": "Can I self-host OpenPanel for my Next.js app?", "answer": "Yes. OpenPanel is fully open source and can be self-hosted with Docker. Your Next.js app sends events to your own server. The self-hosted version has no event limits and is free to run." } ] }, "related_links": { "guides": [ { "title": "Next.js analytics setup", "url": "/guides/nextjs-analytics" }, { "title": "React analytics setup", "url": "/guides/react-analytics" }, { "title": "Track custom events", "url": "/guides/track-custom-events" } ], "articles": [ { "title": "Self-hosted web analytics", "url": "/articles/self-hosted-web-analytics" } ], "comparisons": [ { "title": "OpenPanel vs Google Analytics", "url": "/compare/google-analytics-alternative" }, { "title": "OpenPanel vs PostHog", "url": "/compare/posthog-alternative" } ] }, "ctas": { "primary": { "label": "Try OpenPanel Free", "href": "https://dashboard.openpanel.dev/onboarding" }, "secondary": { "label": "View Source on GitHub", "href": "https://github.com/Openpanel-dev/openpanel" } } }