posthog-analytics
- Repo stars 0
- Author repo skills-registry
PostHog Analytics & Session Replay
What's Already Configured
The bootstrap includes a complete PostHog setup with:
- Session Replay - Records user sessions with privacy protections
- Automatic Screen Tracking - Tracks navigation automatically via
ScreenTrackercomponent - Event Tracking - Ready to use via
usePostHog()hook - Privacy Controls - Text inputs and images are masked by default
Files Involved
| File | Purpose |
|---|---|
lib/posthog.ts |
Configuration with session replay plugin |
app/_layout.tsx |
PostHogProvider wrapper and ScreenTracker component |
app.json |
PostHog plugin registration |
.env.example |
Environment variable template |
How Session Replay Works
What Gets Recorded
- ✅ Screen views and navigation
- ✅ Touch interactions (taps, swipes)
- ✅ UI changes and animations
- ✅ Network requests (with
captureNetworkTelemetry: true) - ✅ Console logs (with
captureLog: true)
Privacy Protections
- 🔒 Text inputs masked - All form inputs show as
**** - 🔒 Images masked - Photos and avatars are blurred/hidden
- 🔒 Sensitive data protected - No actual typed content recorded
Recording Behavior
- Starts automatically when app launches
- Continues throughout the session
- Stops when app is closed/backgrounded
- Each session is a separate replay in PostHog dashboard
- Data is compressed and sent in batches (not real-time)
Data Usage
- ~100-500KB per minute of usage
- Throttled to 1 second intervals (
throttleDelayMs: 1000) - Only captures visual changes, not full video
Configuration Options
All settings are in lib/posthog.ts:
| Setting | Default | Purpose |
|---|---|---|
maskAllTextInputs |
true |
Hide all text input content |
maskAllImages |
true |
Blur/hide all images |
captureLog |
true |
Include console logs in replay |
captureNetworkTelemetry |
true |
Track API calls |
throttleDelayMs |
1000 |
Snapshot interval (milliseconds) |
captureNativeAppLifecycleEvents |
true |
Track app open/close/background |
Using PostHog in Your App
Track Custom Events
Import the hook and use it anywhere:
import { usePostHog } from 'posthog-react-native';
const posthog = usePostHog();
// Track an event
posthog?.capture('button_pressed', {
button_name: 'checkout',
screen: 'product_detail',
});
Identify Users
Set user identity (typically after login):
posthog?.identify(userId, {
email: user.email,
plan: 'premium',
});
Reset on Logout
Clear user identity:
posthog?.reset();
Set User Properties
Update user metadata:
posthog?.setPersonProperties({
credits: 100,
subscription_status: 'active',
});
Environment Variables
Required for PostHog to work:
EXPO_PUBLIC_POSTHOG_KEY=phc_your_project_key
EXPO_PUBLIC_POSTHOG_HOST=https://eu.i.posthog.com
If not set, PostHog is automatically disabled with a console warning.
Rebuild Required
PostHog session replay uses native modules. After configuration changes to app.json, you must rebuild:
npx expo prebuild --clean
npx expo run:ios # or run:android
Or with EAS:
eas build --profile development-client --platform ios
Viewing Data in PostHog
Session Replays
- Go to PostHog → Session Replay
- Click on a session to watch the replay
- See timeline of events, network calls, and console logs
Events
- Go to PostHog → Events
- See all captured events:
$screen- Automatic screen views$pageview- Navigation tracking- Custom events you capture
Users
- Go to PostHog → Persons
- See identified users with their properties
- View their session history and events
Common Issues
"Waiting for events" in Dashboard
Cause: App hasn't been rebuilt after configuration changes
Fix: Run npx expo prebuild --clean and rebuild the app
No Session Replay
Cause: Session replay requires native modules to be rebuilt
Fix: Clean rebuild with npx expo prebuild --clean
Events Not Appearing
Cause: PostHog API key not set or app not rebuilt
Fix:
- Verify
EXPO_PUBLIC_POSTHOG_KEYis set in environment - Rebuild the app
- Wait 1-2 minutes (there can be a delay)
Privacy Concerns
Cause: Default settings mask all inputs and images
Fix: Adjust maskAllTextInputs and maskAllImages in lib/posthog.ts if you need to see more data (consider privacy implications)
Automatic Screen Tracking
The ScreenTracker component in app/_layout.tsx automatically tracks all screen views using Expo Router's navigation hooks. No manual tracking needed for navigation.
When to Use PostHog
- Product Analytics - Understand user behavior and feature usage
- Debugging - Watch session replays to see exactly what users experienced
- Feature Flags - A/B testing and gradual rollouts (requires additional setup)
- User Feedback - Combine with support tickets to see what happened
- Conversion Funnels - Track user journeys through your app
Performance Impact
- Minimal CPU overhead (snapshots are throttled)
- Network usage: ~100-500KB per minute
- Battery impact: Negligible
- Storage: Data is sent to PostHog, not stored locally
Best Practices
- Always mask sensitive data - Keep
maskAllTextInputs: truefor production - Track meaningful events - Don't over-track; focus on key user actions
- Identify users after login - Enables user-specific analysis
- Reset on logout - Prevents data leakage between users
- Use properties - Add context to events for better analysis
- Test in development - Verify events appear before deploying
Reference
- PostHog React Native Docs: https://posthog.com/docs/libraries/react-native
- Session Replay Docs: https://posthog.com/docs/session-replay/mobile
<!-- tomevault:4.0:skill_md:2026-05-22 -->Source: Ampli-Group/agentic-mobile-blueprint — distributed by TomeVault.
- Fluxly category
- Writing
- Author-declared agents
- No explicit declaration found; this is not inferred or tested compatibility
- Static check
- 88 / 100 · heuristic scan, not runtime safety proof
- Author / version / license
- @tomevault-io · no license declared
- Fluxly token estimate
- Lean
- Fluxly setup estimate
- Guided setup
- External API key
- Required · Vendor-specific
- Detected OS requirements
- macOS · Linux · Windows
- Runtime requirements
- Unspecified
- Detected file/system behavior
-
- Read-only
- Write / modify
- Env read
- Detected network behavior
- External requests
- Install commands
- None (reference only)
Profile is derived at build time from SKILL.md and install vectors. Subject to drift from author intent.
Heads up: 未限定 allowed-tools,默认拥有全部工具权限。
The current SKILL.md does not define a fixed output example. The bootstrap includes a complete PostHog setup with: Session Replay - Records user sessions with privacy protections Automatic Screen Tracking - Tracks navigation automatically via ScreenTracker component
File · Purpose lib/posthog.ts · Configuration with session replay plugin app/layout.tsx · PostHogProvider wrapper and ScreenTracker component
How Session Replay Works
✅ Screen views and navigation ✅ Touch interactions (taps, swipes) ✅ UI changes and animations
🔒 Text inputs masked - All form inputs show as 🔒 Images masked - Photos and avatars are blurred/hidden 🔒 Sensitive data protected - No actual typed content recorded
Starts automatically when app launches Continues throughout the session Stops when app is closed/backgrounded
# PostHog Analytics & Session Replay
## What's Already Configured
The bootstrap includes a complete PostHog setup with:
- **Session Replay** - Records user sessions with privacy protections
- **Automatic Screen Tracking** - Tracks navigation automatically via `ScreenTracker` component
- **Event Tracking** - Ready to use via `usePostHog()` hook
- **Privacy Controls** - Text inputs and images are masked by default
## Files Involved
| File | Purpose |
|------|---------|
| `lib/posthog.ts` | Configuration with session replay plugin |
| `app/_layout.tsx` | PostHogProvider wrapper and ScreenTracker component |
| `app.json` | PostHog plugin registration |
| `.env.example` | Environment variable template |
## How Session Replay Works
### What Gets Recorded
- ✅ Screen views and navigation
- ✅ Touch interactions (taps, swipes)
- ✅ UI changes and animations
- ✅ Network requests (with `captureNetworkTelemetry: true`)
- ✅ Console logs (with `captureLog: true`)
### Privacy Protections
- 🔒 **Text inputs masked** - All form inputs show as `****`
- 🔒 **Images masked** - Photos and avatars are blurred/hidden
- 🔒 **Sensitive data protected** - No actual typed content recorded
### Recording Behavior
- Starts automatically when app launches
- Continues throughout the session
- Stops when app is closed/backgrounded
- Each session is a separate replay in PostHog dashboard
- Data is compressed and sent in batches (not real-time)
### Data Usage
- ~100-500KB per minute of usage
- Throttled to 1 second intervals (`throttleDelayMs: 1000`)
- Only captures visual changes, not full video
## Configuration Options
All settings are in `lib/posthog.ts`:
| Setting | Default | Purpose |
|---------|---------|---------|
| `maskAllTextInputs` | `true` | Hide all text input content |
… Author text anchors workflow facts; Fluxly only indexes current sections, terms, files, and commands.
sections -> What's Already Configured → Files Involved → How Session Replay Works → What Gets Recorded → Privacy Protections → Recording Behavior
terms -> Session Replay · Automatic Screen Tracking · Event Tracking · Privacy Controls · Text inputs masked · Images masked · Sensitive data protected · Cause
files/cmd -> ScreenTracker · usePostHog() · lib/posthog.ts · app/layout.tsx · app.json · .env.example · captureNetworkTelemetry: true · captureLog: true
body sha256 -> 15e43cfaf705
Decide Fit First
Design Intent
How To Use It
Boundaries And Review