Files
stats/apps/public/content/for/nextjs.json

162 lines
8.1 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"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 2050 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 <OpenPanelComponent> 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(), <Link> 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 <OpenPanelComponent clientId=\"...\" /> 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 <OpenPanelComponent> 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"
}
}
}