agentleFS
Ampli-GroupAmpli-Group/agentic-mobile-blueprint/.agents/skills/posthog-analytics/SKILL.md

posthog-analytics

Skill4 starsChanged 6 months agoMITView on GitHub

PostHog analytics and session replay integration for React Native mobile apps. Use when adding event tracking, understanding session replay behavior, or troubleshooting analytics setup.

  • Reads credentials

7 other projects use a version of this.

Adopted by

Most recently taken up by

The file

We split this skill into the rules it gives an agent

12 rules. 0 are common, 8 are distinctive, and 4 are very specific to this project.

  • 0

    Common

    Most of the 7 edited versions we read keep these.

  • 8

    Distinctive

    This author's own choices. Worth a look.

  • 4

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Only captures visual changes, not full video

    line 50
  2. Very specific:

    All settings are in lib/posthog.ts:

    line 54
  3. Distinctive:

    Import the hook and use it anywhere:

    line 69
  4. Distinctive:

    If not set, PostHog is automatically disabled with a console warning.

    line 122
  5. Very specific:

    Fix: Run npx expo prebuild --clean and rebuild the app

    line 161
  6. Very specific:

    Verify EXPO_PUBLIC_POSTHOG_KEY is set in environment

    line 170
  7. Distinctive:

    Wait 1-2 minutes (there can be a delay)

    line 172
  8. Distinctive:

    Cause: Default settings mask all inputs and images

    line 175
  9. Very specific:

    Always mask sensitive data: - Keep maskAllTextInputs: true for production

    line 199
  10. Distinctive:

    Track meaningful events: - Don't over-track; focus on key user actions

    line 200
  11. Distinctive:

    Use properties: - Add context to events for better analysis

    line 203
  12. Distinctive:

    Test in development: - Verify events appear before deploying

    line 204

“Common” is measured: kept by at least 6 in 10 of the 7 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

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

FilePurpose
lib/posthog.tsConfiguration with session replay plugin
app/_layout.tsxPostHogProvider wrapper and ScreenTracker component
app.jsonPostHog plugin registration
.env.exampleEnvironment 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:

SettingDefaultPurpose
maskAllTextInputstrueHide all text input content
maskAllImagestrueBlur/hide all images
captureLogtrueInclude console logs in replay
captureNetworkTelemetrytrueTrack API calls
throttleDelayMs1000Snapshot interval (milliseconds)
captureNativeAppLifecycleEventstrueTrack 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

  1. Go to PostHog → Session Replay
  2. Click on a session to watch the replay
  3. See timeline of events, network calls, and console logs

Events

  1. Go to PostHog → Events
  2. See all captured events:
    • $screen - Automatic screen views
    • $pageview - Navigation tracking
    • Custom events you capture

Users

  1. Go to PostHog → Persons
  2. See identified users with their properties
  3. 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:

  1. Verify EXPO_PUBLIC_POSTHOG_KEY is set in environment
  2. Rebuild the app
  3. 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

  1. Always mask sensitive data - Keep maskAllTextInputs: true for production
  2. Track meaningful events - Don't over-track; focus on key user actions
  3. Identify users after login - Enables user-specific analysis
  4. Reset on logout - Prevents data leakage between users
  5. Use properties - Add context to events for better analysis
  6. Test in development - Verify events appear before deploying

Reference

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.