Repository navigation
Analytics Setup
SeHyun edited this page Sep 30, 2026
·
5 revisions
개발자용이다. 분석만 한다면 읽지 않아도 된다.
apps/mobile/.env.local에 한 줄을 둔다. 이 파일은 git에 올라가지 않는다.
PUBLIC_POSTHOG_KEY=phc_<프로젝트 API 키>
# 배포 번들을 만드는 곳에서만 아래 줄의 주석을 푼다. 개발자 기기에서는 풀지 않는다.
# PUBLIC_ANALYTICS_ENVIRONMENT=production- 값은 PostHog Project settings → Project API Key(
phc_로 시작)다. -
개인 API 키(
phx_로 시작)는 넣지 않는다. 앱이 거부한다. - 키가 없으면 아무것도 보내지 않는다. 앱은 똑같이 동작한다.
- 키는 빌드할 때 들어간다. 바꾸면 다시 빌드한다(
pnpm dev, 호스트 앱이면pnpm bundle:host). - 배포 번들을 만드는 곳에도 이 파일이 있어야 운영 앱이 보낸다.
PostHog 프로젝트는 하나다(무료 요금제는 프로젝트 1개). 개발과 운영 이벤트가 같은 곳에 쌓이고,
모든 이벤트에 붙는 environment 값으로 가른다.
.env.local의 PUBLIC_ANALYTICS_ENVIRONMENT
|
이벤트의 environment
|
|---|---|
production |
production |
| 없음 · 그 밖의 값 | development |
-
production은 배포 번들을 만드는 곳에만 둔다. 빠뜨리면 운영 이벤트가development로 찍히고, 이미 들어간 값은 고칠 수 없다. - 빌드 방식(
pnpm dev·pnpm bundle:host)과는 상관없다. 이 값만 본다. - PostHog Project settings → Filter out internal and test users에
environment = production을 걸어 둔다. 인사이트를 만들 때 이 필터를 켠다.
| 설정 | 권장 | 이유 |
|---|---|---|
| 내부 · 테스트 사용자 필터 | environment = production |
프로젝트가 하나라 개발 중 조작이 같은 곳에 쌓인다 |
| Discard client IP data | 켠다 — 2026-09-30 켰다 | 요청의 IP가 PostHog에 닿는다. 저장하지 않으려면 이 설정. 나라 추정(GeoIP)은 IP를 버리기 전에 돈다 |
| GeoIP 변환(Data pipelines → Transformations) | 나라 · 대륙 · 주 · 시간대만 남기도록 고친 코드 — 2026-09-30 v2 | 기본 템플릿은 도시 · 우편번호 · 좌표도 남긴다. 템플릿으로 되돌리지 않는다 |
environment 값이 생기기 전에 들어간 테스트 이벤트다. 이 값이 없어서 environment = production
필터로 함께 빠진다. 필터 없이 볼 때만 따로 뺀다.
| 날짜 · 시각 (KST) | 건수 | 무엇 |
|---|---|---|
| 2026-09-29 10:35–10:41 | 7 | 시뮬레이터 수신 확인(설정 · 알림 이벤트) |
| 날짜 | 환경 | 결과 |
|---|---|---|
| 2026-09-29 | iOS 시뮬레이터 · 키 없음 | 앱 정상 · 전송 0건 |
| 2026-09-29 | iOS 시뮬레이터 · 실제 키 | 이벤트 7건 모두 수신(응답 200) · 재실행하면 익명 ID가 바뀜 |
| 2026-09-29 | iOS 시뮬레이터 · 로컬 서버(인터넷 끊김 흉내) | 끊긴 동안의 이벤트가 연결 뒤 스스로 도착 · 앱을 껐다 켜도 도착 |
절차는 저장소 docs/e2e/analytics.md에 있다.