Skip to content

feat: Onboarding Welcome Page#2435

Open
camielvs wants to merge 2 commits into
06-18-feat_onboarding_pillfrom
06-18-feat_onboarding_welcome_page
Open

feat: Onboarding Welcome Page#2435
camielvs wants to merge 2 commits into
06-18-feat_onboarding_pillfrom
06-18-feat_onboarding_welcome_page

Conversation

@camielvs

@camielvs camielvs commented Jun 18, 2026

Copy link
Copy Markdown
Collaborator

Description

Final PR in the onboarding series (stacked on #2440). Gives new users a dedicated landing experience instead of dropping them into an empty dashboard.

  • Dedicated /welcome route — a focused, centered welcome page hosting the onboarding card, so onboarding doesn't take over the "My Dashboard" view.
  • Index routing (IndexRedirect)/ now resolves based on onboarding state: new users (onboarding not complete and not dismissed) go to /welcome; everyone else goes to /dashboard. The dashboard is moved off / to its own route so manual navigation to either still works.
  • Sidebar "Get started" entry — shown in the dashboard sidebar while onboarding is active, gated on isResolved to avoid flicker.
  • Updates the navigation-tracking e2e spec for the new routes.

Stacked PR — base: Onboarding Pill (#2440), which is stacked on the Onboarding Checklist (#2421). Closes the issue.

Related Issue and Pull requests

Closes https://github.com/Shopify/oasis-frontend/issues/622

Stacked on #2421#2440

Type of Change

  • New feature

Checklist

  • I have tested this does not break current pipelines / runs functionality
  • I have tested the changes on staging

Screenshots (if applicable)

image.png

Test Instructions

  1. As a fresh user, navigate to / — you should be redirected to /welcome with the onboarding card centered in the available space.
  2. As a user who has completed or dismissed onboarding, navigate to / — you should land on /dashboard.
  3. Manually navigate directly to /welcome and /dashboard — both should be reachable regardless of redirect logic.
  4. While onboarding is active, confirm the Get started item appears in the dashboard sidebar (and does not flash before backend state resolves).
  5. Complete onboarding from /welcome and confirm subsequent visits to / land on the dashboard.

Additional Comments

Routing decisions wait on isReady (queries settled, valid even with no backend) while the sidebar entry gates on isResolved, matching the provider contract introduced earlier in the stack.

@github-actions

github-actions Bot commented Jun 18, 2026

Copy link
Copy Markdown

🎩 Preview

A preview build has been created at: 06-18-feat_onboarding_welcome_page/90f6e8b

camielvs commented Jun 18, 2026

Copy link
Copy Markdown
Collaborator Author

@camielvs camielvs mentioned this pull request Jun 18, 2026
3 tasks
@camielvs camielvs force-pushed the 06-18-feat_onboarding_welcome_page branch 2 times, most recently from be1cab9 to 475b1de Compare June 19, 2026 01:39
@camielvs camielvs added the #gsd:50583 Learning Hub label Jun 19, 2026 — with Graphite App
@camielvs camielvs changed the base branch from 06-17-feat_onboarding_checklist to graphite-base/2435 June 19, 2026 01:46
@camielvs camielvs force-pushed the 06-18-feat_onboarding_welcome_page branch from 475b1de to b2ef001 Compare June 19, 2026 01:46
@camielvs camielvs changed the base branch from graphite-base/2435 to 06-18-feat_onboarding_pill June 19, 2026 01:46
@camielvs camielvs mentioned this pull request Jun 19, 2026
3 tasks
@camielvs camielvs force-pushed the 06-18-feat_onboarding_pill branch from 33d4a5c to c38d713 Compare June 19, 2026 02:09
@camielvs camielvs force-pushed the 06-18-feat_onboarding_welcome_page branch from b2ef001 to 46b33cb Compare June 19, 2026 02:09
@camielvs camielvs force-pushed the 06-18-feat_onboarding_pill branch from c38d713 to 5f5d39b Compare June 19, 2026 02:25
@camielvs camielvs force-pushed the 06-18-feat_onboarding_welcome_page branch 2 times, most recently from 4833c25 to a93cf71 Compare June 19, 2026 15:43
@camielvs camielvs force-pushed the 06-18-feat_onboarding_pill branch from 5f5d39b to c994062 Compare June 19, 2026 15:43
@camielvs camielvs force-pushed the 06-18-feat_onboarding_welcome_page branch from a93cf71 to e0ce7f1 Compare June 19, 2026 15:44
@camielvs camielvs force-pushed the 06-18-feat_onboarding_pill branch 2 times, most recently from bbdf96e to 5ea2aaa Compare June 19, 2026 15:51
@camielvs camielvs force-pushed the 06-18-feat_onboarding_welcome_page branch from e0ce7f1 to 8c45c84 Compare June 19, 2026 15:51
@camielvs camielvs force-pushed the 06-18-feat_onboarding_welcome_page branch 2 times, most recently from 8da83d6 to fa0fbc4 Compare June 19, 2026 18:59
@camielvs camielvs force-pushed the 06-18-feat_onboarding_pill branch from eeefe26 to 7b70ec6 Compare June 19, 2026 18:59
@camielvs camielvs force-pushed the 06-18-feat_onboarding_welcome_page branch 2 times, most recently from 0d98bcd to 4172fc3 Compare June 19, 2026 19:56
@camielvs camielvs force-pushed the 06-18-feat_onboarding_pill branch from 7b70ec6 to 601fa2a Compare June 19, 2026 20:59
@camielvs camielvs force-pushed the 06-18-feat_onboarding_welcome_page branch from 4172fc3 to b36f16e Compare June 19, 2026 20:59
@camielvs camielvs force-pushed the 06-18-feat_onboarding_pill branch from 601fa2a to 0da37a4 Compare June 19, 2026 21:08
@camielvs camielvs force-pushed the 06-18-feat_onboarding_welcome_page branch from b36f16e to 2f5fd7c Compare June 19, 2026 21:08
@camielvs camielvs marked this pull request as ready for review June 19, 2026 21:24
@camielvs camielvs requested a review from a team as a code owner June 19, 2026 21:24
@camielvs camielvs force-pushed the 06-18-feat_onboarding_pill branch from 0da37a4 to 5a2f860 Compare June 19, 2026 21:48
@camielvs camielvs force-pushed the 06-18-feat_onboarding_welcome_page branch from 2f5fd7c to 5cff5ee Compare June 19, 2026 21:48

@camielvs camielvs left a comment

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Welcome route + IndexRedirect wrap up the series nicely. The split — routing on isReady (valid with no backend), sidebar on isResolved — matches the provider contract. Verified APP_ROUTES.DASHBOARD moving from / to /dashboard has no other call-sites depending on the old value. Two small inline notes.

Comment thread src/components/Onboarding/OnboardingWelcome.tsx Outdated
Comment thread src/components/Onboarding/OnboardingWelcome.tsx Outdated
@camielvs camielvs force-pushed the 06-18-feat_onboarding_pill branch from 5a2f860 to b5d4e02 Compare June 19, 2026 23:00
@camielvs camielvs force-pushed the 06-18-feat_onboarding_welcome_page branch from 5cff5ee to 9167166 Compare June 19, 2026 23:00
@camielvs camielvs force-pushed the 06-18-feat_onboarding_pill branch from b5d4e02 to f838ac6 Compare June 19, 2026 23:09
@camielvs camielvs force-pushed the 06-18-feat_onboarding_welcome_page branch from 9167166 to 4cef7e8 Compare June 19, 2026 23:09
@camielvs camielvs force-pushed the 06-18-feat_onboarding_pill branch from f838ac6 to 0b64d0e Compare June 19, 2026 23:17
@camielvs camielvs force-pushed the 06-18-feat_onboarding_welcome_page branch from 4cef7e8 to f0956cc Compare June 19, 2026 23:17
Comment thread src/components/Onboarding/IndexRedirect.tsx Outdated
@camielvs camielvs force-pushed the 06-18-feat_onboarding_welcome_page branch 2 times, most recently from 97aa0d0 to f772aea Compare June 26, 2026 00:37
@camielvs camielvs force-pushed the 06-18-feat_onboarding_pill branch from 61f4548 to 97f6ae5 Compare June 26, 2026 00:37
camielvs and others added 2 commits June 25, 2026 17:53
- Gate OnboardingWelcome on !isReady with a spinner (match IndexRedirect)
- Import APP_ROUTES from appRoutes instead of the router shim

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@camielvs camielvs force-pushed the 06-18-feat_onboarding_pill branch from 97f6ae5 to 9daead8 Compare June 26, 2026 00:53
@camielvs camielvs force-pushed the 06-18-feat_onboarding_welcome_page branch from f772aea to 90f6e8b Compare June 26, 2026 00:53

if (!isResolved) {
return (
<BlockStack align="center" inlineAlign="center" className="h-full">

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 This is an AI-generated code review comment.

The new redirect loading state passes className into a Tangle UI primitive for sizing. The project instructions explicitly reserve primitive styling for semantic props or a local Layer-3 pattern.

Suggestion: Use the primitive's semantic sizing API, e.g. <BlockStack fill>, and omit explicit alignment props when they match the fill defaults.

Rule: CLAUDE.md UI rule: never pass className to a Tangle UI primitive; ui-primitives skill: use semantic primitive props

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

#gsd:50583 Learning Hub

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants