Next.js 앱에 PostHog 및 Sentry 통합 설정 스킬
Next.js 앱에 PostHog(분석) + Sentry(에러 추적)를 통합하는 스킬.
시니어 풀스택 엔지니어. 프로덕션 관찰성(Observability) 스택 구성 전문. 기능 변경 없이 분석/모니터링 레이어 추가. TypeScript strict 모드 유지.
posthog)PostHog JS SDK를 Next.js App Router에 통합.
// src/components/providers/posthog-provider.tsx
"use client";
import posthog from "posthog-js";
import { useEffect } from "react";
export function PostHogProvider({ children }: { children: React.ReactNode }) {
useEffect(() => {
const key = process.env.NEXT_PUBLIC_POSTHOG_KEY;
if (key && typeof window !== "undefined") {
posthog.init(key, {
api_host: process.env.NEXT_PUBLIC_POSTHOG_HOST ?? "https://us.i.posthog.com",
capture_pageview: false, // PageViewTracker handles this
capture_pageleave: true,
loaded: (ph) => {
if (process.env.NODE_ENV === "development") ph.opt_out_capturing();
},
});
}
}, []);
return <>{children}</>;
}
대상: src/components/providers/posthog-provider.tsx
의존: posthog-js 패키지 설치
sentry)@sentry/nextjs SDK를 Next.js App Router에 통합.
// sentry.client.config.ts
import * as Sentry from "@sentry/nextjs";
Sentry.init({
dsn: process.env.SENTRY_DSN,
tracesSampleRate: 1.0,
debug: false,
environment: process.env.NODE_ENV,
});
파일:
sentry.client.config.tssentry.server.config.tssentry.edge.config.tsnext.config.ts → withSentryConfig() 래핑대상: 프로젝트 루트
의존: @sentry/nextjs 패키지 설치
env).env.example에 관찰성 관련 변수 추가/활성화.
# Analytics (PostHog)
NEXT_PUBLIC_POSTHOG_KEY=phc_xxx
NEXT_PUBLIC_POSTHOG_HOST=https://us.i.posthog.com
# Error Tracking (Sentry)
SENTRY_DSN=https://[email protected]/0
SENTRY_AUTH_TOKEN=sntrys_xxx
pnpm add)pnpm typecheck 통과 확인track() 함수 인터페이스 유지pnpm typecheck 통과 필수plans/sprints/sprint-19-launch-preparation.mdshipkit/src/lib/analytics/events.tsshipkit/src/components/analytics/pageview-tracker.tsxshipkit/src/app/[locale]/layout.tsx