[CI] (4c70a79) react-native/react-native-saas - #3871
Closed
wizard-ci-bot[bot] wants to merge 1 commit into
Closed
Conversation
Author
|
Now I have all the information I need. Here's my evaluation: PR Evaluation ReportSummaryThis PR integrates PostHog into a React Native SaaS app using the
Confidence score: 5/5 🧙
File changes
App sanity check ✅
|
| Criteria | Result | Description |
|---|---|---|
| PostHog SDKs installed | Yes | posthog-react-native@^4.68.4 added to package.json |
| PostHog client initialized | Yes | new PostHog(token, { host, captureAppLifecycleEvents: true }) in src/config/posthog.js; wrapped in PostHogProvider in routes |
| capture() | Yes | 9 meaningful capture calls across auth, teams, projects, members, and team switcher |
| identify() | No | Uses raw email as distinct_id; person properties incorrectly wrapped in `` |
| Error tracking | Yes | PostHogErrorBoundary wraps the entire navigator tree with a fallback component |
| Reverse proxy | N/A | Mobile app — reverse proxy only benefits browser-based posthog-js |
| Screen views | No | No screen view tracking integration — NavigationContainer is used without PostHog's navigation tracking |
| All targets initialized | Yes | posthog-react-native JS init covers both iOS and Android from a single codebase |
Issues
- Email as distinct_id:
identifyAuthenticatedUser(email)passes the raw email address as the distinct ID. PostHog docs recommend using a stable ID from your auth system (e.g., a database user ID). If a user changes their email, events before and after the change will belong to different person profiles, fragmenting analytics data. The app's API likely returns a user ID that should be used instead. [CRITICAL] - Incorrect person property nesting:
posthog?.identify(email, { : { email } })is wrong. The second argument toidentify()in the React Native SDK already appliessemantics. This creates a person property literally namedwith a nested object value. Fix:posthog?.identify(userId, { email }). [MEDIUM] - No screen view tracking: The app uses
NavigationContainerfrom@react-navigation/nativewithout any PostHog screen view integration. For React Native, PostHog does not autocapture screen views — you need to wire up navigation state changes (e.g., usinguseNavigationContainerRefandPostHogProvider's navigation integration or manually callingposthog.screen()). Without this, no `` events are captured. [MEDIUM] - No re-identification on app restart: The
init()saga checks for a stored token but never re-identifies the user with PostHog. If the app is killed and reopened, events during that session won't be linked to the identified user until they sign in again. [LOW]
Other completed criteria
- API key loaded from environment variable via
react-native-config - Host correctly configured from environment variable
- Helpful dev-only error thrown when env vars are missing
- Graceful degradation when PostHog is unconfigured (conditional rendering in routes)
posthog.reset()correctly called on sign-out
PostHog insights and events ⚠️
| Filename | PostHog events | Description |
|---|---|---|
src/store/modules/auth/sagas.js |
user_signed_in, user_signed_out, identify(), reset() |
Tracks sign-in with authentication_method property (demo/password), sign-out, and user identification |
src/store/modules/teams/sagas.js |
team_created |
Captures team creation with creation_method (demo/api) |
src/store/modules/projects/sagas.js |
project_created |
Captures project creation with creation_method (demo/api) |
src/store/modules/members/sagas.js |
member_roles_updated, member_invited |
Captures member role updates (with role_count) and invitations (with invitation_method) |
src/components/TeamSwitcher/index.js |
team_selected |
Captures when user switches teams |
src/routes.js |
captureException (via ErrorBoundary) |
Automatically captures unhandled exceptions via PostHogErrorBoundary |
Issues
- PII as distinct_id: Raw email address is used as the distinct ID in
identify(). Per PostHog best practices, email should be a person property, not the distinct ID. Use a stable user ID instead. [CRITICAL]
Other completed criteria
- Events represent real user actions mapped to actual product flows (sign-in, team management, project creation, member management)
- Events enable product insights — can build sign-in → team selection → project creation funnel
- Events include relevant contextual properties (authentication_method, creation_method, role_count, invitation_method)
- Event names are descriptive and follow consistent snake_case convention
Reviewed by wizard workbench PR evaluator
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Automated wizard CI run
Source: wizard-pr
Trigger ID:
4c70a79App:
react-native/react-native-saasApp directory:
apps/react-native/react-native-saasWorkbench branch:
wizard-ci-4c70a79-react-native-react-native-saasWizard branch:
release-please--branches--main--components--wizardContext Mill branch:
mainPostHog (MCP) branch:
masterTimestamp: 2026-09-09T22:31:25.845Z
Duration: 390.8s
YARA Scanner