Skip to content

Comments

Feat(web): add simple mobile onboarding#1096

Merged
tyler-dane merged 12 commits intomainfrom
feat/786-mobile-onboarding
Oct 11, 2025
Merged

Feat(web): add simple mobile onboarding#1096
tyler-dane merged 12 commits intomainfrom
feat/786-mobile-onboarding

Conversation

@tyler-dane
Copy link
Contributor

@tyler-dane tyler-dane commented Oct 10, 2025

This pull request introduces a mobile-specific onboarding flow for the web application, including new React components and hooks to detect mobile devices and guide users through a tailored onboarding experience. Key changes include the addition of a useIsMobile hook (with tests), new onboarding steps for mobile users (waitlist check, warning, and sign-in), and supporting UI components. The onboarding flow now automatically switches to the mobile-specific steps when accessed from a mobile device.

Mobile Onboarding Flow Implementation:

  • Added a new useIsMobile React hook to detect mobile viewport size using window.matchMedia, along with comprehensive unit tests to ensure correct behavior and responsiveness. [1] [2]
  • Updated the main onboarding flow in OnboardingFlow.tsx to use the useIsMobile hook and render a dedicated sequence of mobile onboarding steps (MobileWaitlistCheck, MobileWarning, MobileSignIn) when accessed on mobile devices. [1] [2] [3] [4]
  • Exported new mobile onboarding step components in the onboarding steps index for easier imports and usage.

New Mobile Onboarding Step Components:

  • Implemented MobileWaitlistCheck, a component that checks if a user's email is on the waitlist, provides feedback, and conditionally shows a button to sign up for the waitlist or proceed. Includes supporting UI components and styling. [1] [2] [3]
  • Added MobileSignIn, a component for Google sign-in during mobile onboarding, with background Google Calendar import for new users. Includes a full test suite to validate user journeys and integration. [1] [2]

Constants and Integration:

  • Centralized the waitlist URL in a new WAITLIST_URL constant and updated all usages to reference it, improving maintainability. [1] [2] [3]

These changes ensure that mobile users receive a streamlined and touch-friendly onboarding experience, with robust validation and clear integration points for authentication and waitlist management.

Screenshot 2025-10-10 at 4 57 25 PM Screenshot 2025-10-10 at 4 57 47 PM

Closes #786

Copilot AI review requested due to automatic review settings October 10, 2025 21:55
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull Request Overview

This PR adds a mobile-specific onboarding flow for the Compass calendar application. The implementation includes mobile detection, waitlist checking, and simplified onboarding steps tailored for mobile devices.

  • Mobile flow with 3 steps: waitlist check, mobile warning message, and sign-in
  • Waitlist status validation with appropriate user messaging and actions
  • Mobile viewport detection hook with responsive breakpoint at 768px

Reviewed Changes

Copilot reviewed 19 out of 19 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
packages/web/src/views/Onboarding/util/waitlist.check.ts Adds waitlist status parsing logic and user flow determination
packages/web/src/views/Onboarding/steps/welcome/Welcome.tsx Removes unused styled components from welcome step
packages/web/src/views/Onboarding/steps/waitlist/WaitlistCheck.tsx Updates waitlist URL to use centralized constant
packages/web/src/views/Onboarding/steps/mobile/MobileWarning.tsx Creates mobile warning component with desktop experience message
packages/web/src/views/Onboarding/steps/mobile/MobileWaitlistCheck/ Implements mobile waitlist check with email validation and status handling
packages/web/src/views/Onboarding/steps/mobile/MobileSignIn.tsx Creates mobile sign-in component with Google OAuth integration
packages/web/src/views/Onboarding/OnboardingFlow.tsx Adds mobile detection and conditional rendering of mobile flow
packages/web/src/common/hooks/useIsMobile.ts Implements responsive mobile detection hook
packages/web/src/common/constants/ Adds centralized waitlist URL constant and mobile route

@tyler-dane tyler-dane marked this pull request as ready for review October 10, 2025 21:59
Copilot AI review requested due to automatic review settings October 10, 2025 21:59
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull Request Overview

Copilot reviewed 17 out of 17 changed files in this pull request and generated 4 comments.

@tyler-dane tyler-dane force-pushed the feat/786-mobile-onboarding branch from 3db2941 to 2be10a2 Compare October 10, 2025 22:01
tyler-dane and others added 4 commits October 10, 2025 17:19
Set nextAction to "NOTHING" instead of "NEXT_BTN" when waitlist API
errors occur. This shows the BYPASS WAITLIST button which allows users
to retry the request, instead of showing a disabled Continue button.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
Remove email validation check from Continue button when nextAction is
NEXT_BTN. This prevents UX dead-ends where users can't retry after
errors. The button is now only disabled during loading state.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
Move onNext() call to be conditional on new users only, preventing
it from being called after navigate() for existing users. This avoids
React warnings about state updates on unmounted components.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
Extract the media query string to a constant and create the
MediaQueryList object once, eliminating duplication between the
initial check and the event listener setup.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings October 10, 2025 22:22
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull Request Overview

Copilot reviewed 17 out of 17 changed files in this pull request and generated 7 comments.

@tyler-dane tyler-dane merged commit 94b14ea into main Oct 11, 2025
4 checks passed
@tyler-dane tyler-dane deleted the feat/786-mobile-onboarding branch October 11, 2025 00:43
victor-enogwe pushed a commit that referenced this pull request Oct 24, 2025
* refactor(web): simplify Welcome component by removing unused styled components

* feat(web): add mobile onboarding flow with responsive hooks and components

* feat(web): add mobile waitlist check component and tests

* feat(web): enhance mobile waitlist check with email validation and toast notifications

* feat(web): centralize waitlist URL in constants for consistent usage

* feat(web): implement mobile waitlist check component with enhanced email validation and user feedback

* feat: udpate warning msg

* refactor(web): remove mobile route from constants and router

* fix(web): show BYPASS WAITLIST button on error for retry

Set nextAction to "NOTHING" instead of "NEXT_BTN" when waitlist API
errors occur. This shows the BYPASS WAITLIST button which allows users
to retry the request, instead of showing a disabled Continue button.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

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

* fix(web): remove email validation from Continue button disabled state

Remove email validation check from Continue button when nextAction is
NEXT_BTN. This prevents UX dead-ends where users can't retry after
errors. The button is now only disabled during loading state.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

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

* fix(web): call onNext only for new users before navigation

Move onNext() call to be conditional on new users only, preventing
it from being called after navigate() for existing users. This avoids
React warnings about state updates on unmounted components.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

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

* refactor(web): extract duplicate media query in useIsMobile

Extract the media query string to a constant and create the
MediaQueryList object once, eliminating duplication between the
initial check and the event listener setup.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

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

---------

Co-authored-by: Claude <noreply@anthropic.com>
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.

Add simplified mobile sign up

1 participant