Skip to content

fix(onboarding): resume the wizard after a reload instead of skipping it - #69

Merged
Gilbert09 merged 2 commits into
mainfrom
posthog-self-driving/fixonboarding-github-connection-d246b7
Oct 13, 2026
Merged

Gilbert09 merged 2 commits into
mainfrom
posthog-self-driving/fixonboarding-github-connection-d246b7

Conversation

@posthog

@posthog posthog Bot commented Oct 12, 2026 •

Copy link
Copy Markdown
Contributor

Problem

  • New users who connect GitHub and then load the app fresh before they click Finish skip the rest of onboarding. Nothing sends onboarding_completed for them. A fresh load is a reload, an app relaunch, or a return from the GitHub flow in a new page.
  • The activation funnel then counts these users as drop-offs, but some of them go on to use the product. They also miss the agent and repository steps.
  • Cause: on the first data load, useInitialDataLoad treats any GitHub connection plus no local "onboarded" flag as a returning user on a new device. Connecting GitHub is step one of the wizard, so a user in the middle of the wizard looks the same.
  • In the latest window, at least one web non-finisher shows this pattern: GitHub connect → a fresh page load → straight into the app → active use, with no onboarding_completed. The other non-finishers show backend network errors or no further activity. This change does not fix those.

Origin

  • Scout: a custom scout
  • First signal: 2026-10-12
  • Inbox report: open
  • Task started by: auto-start, after the report was rated P2 and ready to fix

Changes

  • The wizard now stores "started, not finished" on the device when it mounts. It writes 'false' to the existing onboarding key. A device that never showed the wizard has no value for this key.
  • The first-load check skips the wizard only when the server has a GitHub connection and this device has never shown the wizard. A reload in the middle of the wizard now opens the wizard again. Step one shows "Connected", and Finish sends onboarding_completed.
Case Before After
New user reloads or relaunches after connecting GitHub Wizard skipped, no onboarding_completed Wizard resumes
Returning user on a new device Wizard skipped Wizard skipped (no change)
Flag says onboarded, server has no GitHub Wizard re-runs Wizard re-runs (no change)
  • The change is the same in apps/web and apps/desktop, because the renderer is a deliberate fork.

Note

A device where somebody opened the wizard and never finished it now shows the wizard on each load until they click Finish. This is the intended gate: GitHub is already connected, so Finish is three clicks away.

How did you test this code?

  • New tests in both onboarding.test.tsx suites: the wizard records that it started, a reload with GitHub connected keeps the wizard, and a new device still skips it. The "keeps the wizard" test fails when the fix is removed.
  • apps/web: npx vitest run: all tests pass. tsc --noEmit is clean. ESLint shows no new findings.
  • apps/desktop: npx jest: all tests pass. One suite (updaterIdleRestart) did not run in the sandbox, because the Electron binary was not installed. This change does not touch that suite. tsc --noEmit is clean. ESLint shows no new findings.
  • I did not do a manual test in a browser or the desktop app.
  • After merge: compare the one-day github_connect_started → onboarding_completed conversion with the window that this report flagged.

Agent context

  • I rejected sending onboarding_completed from the first-load path. That would also count returning users on new devices, which inflates the funnel.

Created with PostHog Desktop from this inbox report.

🤖 Generated with Claude Code

A new user connects GitHub in step one of the wizard. If the page then loads fresh before Finish (a reload, an app relaunch, or a return from the GitHub flow in a new page), the first-load check read the GitHub connection as proof of an earlier onboarding. It skipped the rest of the wizard and did not send onboarding_completed.

The wizard now stores "started, not finished" on the device when it mounts. The first-load check only skips the wizard when this device has never shown it, which is the returning user on a new machine.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

Generated-By: PostHog Desktop
Task-Id: 031a5f4e-000c-4d6c-8a00-331468e7c548
@vercel

vercel Bot commented Oct 12, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
Project Deployment Actions Updated
talyn-admin Skipped Skipped Oct 12, 2026 10:06pm UTC

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

Generated-By: PostHog Desktop
Task-Id: 031a5f4e-000c-4d6c-8a00-331468e7c548
@vercel
vercel Bot temporarily deployed to Preview – talyn-admin October 12, 2026 22:06 Inactive
@Gilbert09
Gilbert09 marked this pull request as ready for review October 13, 2026 08:55
@Gilbert09
Gilbert09 merged commit 059b5ff into main Oct 13, 2026
8 checks passed

This branch was previously deployed

1 inactive deployment
Preview – talyn-admin — 2f8ac8ea Deployed Oct 12, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant