feat(onboarding): persona-driven swipe onboarding#5991
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
689fc74 to
b56d02f
Compare
b56d02f to
8ba6eb0
Compare
|
check pr @claude |
|
Claude finished @tomeredlich's task in 4m 50s —— View job PR Review —
|
|
@claude check pr |
|
Claude finished @tomeredlich's task in 3m 50s —— View job PR Review (round 2) —
|
Combines the swipe onboarding flow with the persona picker and removes the user-facing free-text prompt. Users now pick up to three personas; the prompt sent to onboardingDiscoverPosts is built silently from the persona titles + tags + the user's experienceLevel from registration. The "Show popular posts" fallback is preserved. - PersonaSelector gains a 'seed' mode that emits onSelectionChange instead of immediately following persona tags (the legacy 'follow' mode is unchanged for the EditTag flow). - buildSwipePrompt composes a deterministic prompt string from the selected personas + experience level, with unit-test coverage. - Shared SwipePersonaIntro renders the pre-swipe panel for both the funnel step and the standalone /onboarding/swipe preview. - Swipe progress advances only on accepted posts (right-swipes); bar fills linearly 0→100% across 10 swipes (single milestone).
db0ab9c to
03975a8
Compare
- Tag scoring rewritten: each tag is locked in/out at 3 sightings based on the sign of its accumulated score. Drops the old saturate/confirm/ ignore mechanics and their constants (ADD_THRESHOLD, SATURATE_THRESHOLD, REMOVE_THRESHOLD, IGNORE_AFTER, SATURATE_AFTER) and the saturatedTags/confirmedTags fields on the discoverPosts mutation (unused subPrompts response field also dropped). - BATCH_SIZE bumped from 8 to 12 so a typical 10-right-swipe onboarding fits in one batch. - PREFETCH_AFTER_SWIPES dropped from 3 to 1, and loadNextBatch only flips the loading UI when the prefetch isn't ready — no flash on smooth transitions. - handleStartSwipe now fires recommendOnboardingTags in parallel with startDeck (was serial). When recommendations land they're piped through the new appendSeedTags method on useAdaptiveSwipeDeck so subsequent batches benefit, without blocking initial deck render. - New roundRobinMerge helper (+ spec) balances per-persona recommendation and tag streams so a tag-dense persona doesn't dominate the seed.
Changes
Combines the swipe onboarding flow (#5865) with the persona picker (#5939) and removes the user-facing free-text prompt. Users now pick up to three personas; the prompt sent to
onboardingDiscoverPostsis built silently from the persona titles + tags + the user'sexperienceLevelfrom registration. The "Show popular posts" fallback is preserved for users who skip persona selection.Implementation notes:
PersonaSelectorgains amode: 'follow' | 'seed'prop so the swipe path can read the selection without batch-following tags upfront. The pre-swipe panel is powered bySwipePersonaIntro, and/onboarding/swiperedirects back to/onboardingwhile preserving query params.Events
select onboarding personatarget_type: 'persona',target_id: <persona id>, `extra: { action: 'select'Experiment
Yes — the swipe flow remains gated by the existing
swipe_onboardingGrowthBook flag (defaulttruein code, controlled at the experiment level). No new experiment introduced in this PR.Manual Testing
Caution
Please make sure existing components are not breaking/affected by this PR
On those affected packages:
Did you test the modified components media queries?
Did you test on actual mobile devices?
Preview domain
https://davidercruz-swipe-personas.preview.app.daily.dev