feat: Onboarding Checklist#2421
Conversation
c455af7 to
fddfd22
Compare
🎩 PreviewA preview build has been created at: |
247aa01 to
a27cdb0
Compare
a27cdb0 to
72eadf3
Compare
65047a8 to
1823626
Compare
ebc0b79 to
3b09b65
Compare
1823626 to
f6fe1e5
Compare
3b09b65 to
30b5b30
Compare
12d1304 to
db9a9fd
Compare
0667d58 to
b5fde41
Compare
a9f00df to
fd579d3
Compare
ee773f8 to
dbaaa16
Compare
fd579d3 to
2fa0470
Compare
dbaaa16 to
a474725
Compare
5d91933 to
d867d0f
Compare
a474725 to
69bfd71
Compare
fc7588d to
3561cca
Compare
3bccd6b to
23cc7a1
Compare
3561cca to
561b25b
Compare
23cc7a1 to
36f3b32
Compare
561b25b to
835828f
Compare
2ac75f1 to
92f5898
Compare
1c9c02e to
dd64845
Compare
92f5898 to
954c86b
Compare
dd64845 to
477bb93
Compare
954c86b to
afe7751
Compare
477bb93 to
cd2d469
Compare
- Render OnboardingHero once, drive placement via CSS order toggle - Document why derived onboarding steps don't emit step.completed - Reconcile onboarding progress cache on PATCH failure via onError Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
cd2d469 to
07759d0
Compare
| "src/components/Home", | ||
| "src/components/Editor", | ||
| "src/components/Learn", | ||
| "src/components/Onboarding", |
There was a problem hiding this comment.
🤖 This is an AI-generated code review comment.
This PR adds the hook src/hooks/useDocsVisitTracking.ts, but react-compiler.config.js only enables a hand-picked subset of src/hooks and does not include the new hook. The review checklist treats missing React Compiler coverage for new hooks/components as a High issue, because compiler safety checks and optimization will not run for this hook.
Suggestion: Add "src/hooks/useDocsVisitTracking.ts" to REACT_COMPILER_ENABLED_DIRS, or enable an appropriate hooks directory once it is compiler-clean.
Rule: tangle-ui-review: React Compiler adoption; CLAUDE.md: React Compiler coverage for new hooks/components
| const byId = new Map<OnboardingStepId, OnboardingStepMeta>(); | ||
| for (const step of raw) { | ||
| if (!isStepId(step.id)) { | ||
| throw new Error( |
There was a problem hiding this comment.
🤖 This is an AI-generated code review comment.
parseSteps validates the step id, but the icon field from onboardingSteps.json is accepted with step.icon as IconName. The TypeScript review standard flags as Type casts because they can hide invalid data; a typo in the JSON icon name would still compile and only fail at runtime/render time.
Suggestion: Prefer defining the step metadata in TypeScript with satisfies readonly OnboardingStepMeta[], or add an explicit isIconName guard before storing the icon.
Rule: tangle-ui-review: TypeScript typings — as Type casts are Medium; prefer type guards

Description
First PR in a stacked series that builds an onboarding experience for new users (see #622). This one lays the foundation and surfaces the first piece of UI — an onboarding checklist on the Learning Hub.
Foundation (
OnboardingProvider)TourProvidercompletions.userPipelineWriteEvents) emitted from the pipeline-write chokepoints (componentStoreandPipelineFile), so v1 edits, v2 edits, imports, and the new-pipeline button all count./api/users/me/settings), not localStorage. Writes usekeepaliveso a fire-and-forget save survives navigation/reload.UI
OnboardingChecklist— a reusable progress + step-list component (extracted up front so the next PR doesn't have to refactor it).OnboardingHeroon the Learning Hub renders the checklist with progress, per-step CTAs, and a dismiss control.Provider and Onboarding components are enabled in the React Compiler.
Related Issue and Pull requests
Progresses https://github.com/Shopify/oasis-frontend/issues/622
Stacked: #2440 → #2435
Type of Change
Checklist
Screenshots (if applicable)
Test Instructions
Additional Comments
The provider exposes
isReady(queries settled, for routing) vsisResolved(backend resolved + state loaded, for gating visible UI). The downstream pill/welcome PRs rely on this distinction to avoid flicker.