From 5c7915ba564cb3cc182fa34e4ea4b1ac84ec7964 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Bosi?= <71827178+bosiraphael@users.noreply.github.com> Date: Thu, 23 Jul 2026 18:39:19 +0200 Subject: [PATCH] Skip install apps onboarding step for invitees (#23214) Users joining an existing workspace via an invitation link were shown the install apps onboarding step after skipping the email-connect step, even though the backend never assigns them that step (and apps they selected were silently not installed). The frontend optimistic transition unconditionally mapped SYNC_EMAIL to APPS_INSTALLATION. It now checks workspaceMembersCount === 1, like the existing PROFILE_CREATION to INVITE_TEAM transition, so invitees go straight to profile creation. Review in cubic --- .../__tests__/useSetNextOnboardingStatus.test.ts | 13 +++++++++++++ .../onboarding/hooks/useSetNextOnboardingStatus.ts | 5 ++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/packages/twenty-front/src/modules/onboarding/hooks/__tests__/useSetNextOnboardingStatus.test.ts b/packages/twenty-front/src/modules/onboarding/hooks/__tests__/useSetNextOnboardingStatus.test.ts index 26f56c498d..30743c6181 100644 --- a/packages/twenty-front/src/modules/onboarding/hooks/__tests__/useSetNextOnboardingStatus.test.ts +++ b/packages/twenty-front/src/modules/onboarding/hooks/__tests__/useSetNextOnboardingStatus.test.ts @@ -133,6 +133,19 @@ describe('useSetNextOnboardingStatus', () => { expect(shouldOpenAiChatAfterOnboarding).toBe(false); }); + it('should create profile after syncing emails when more than 1 workspaceMember exist', () => { + const { + nextOnboardingStatus, + isWelcomeAnimationVisible, + shouldOpenAiChatAfterOnboarding, + } = renderHooks(OnboardingStatus.SYNC_EMAIL, { + withOneWorkspaceMember: false, + }); + expect(nextOnboardingStatus).toEqual(OnboardingStatus.PROFILE_CREATION); + expect(isWelcomeAnimationVisible).toBe(false); + expect(shouldOpenAiChatAfterOnboarding).toBe(false); + }); + it('should create profile after installing apps', () => { const { nextOnboardingStatus, diff --git a/packages/twenty-front/src/modules/onboarding/hooks/useSetNextOnboardingStatus.ts b/packages/twenty-front/src/modules/onboarding/hooks/useSetNextOnboardingStatus.ts index 2c93d9ee25..227941b8e6 100644 --- a/packages/twenty-front/src/modules/onboarding/hooks/useSetNextOnboardingStatus.ts +++ b/packages/twenty-front/src/modules/onboarding/hooks/useSetNextOnboardingStatus.ts @@ -41,7 +41,10 @@ const getNextOnboardingStatus = ({ } if (currentUser?.onboardingStatus === OnboardingStatus.SYNC_EMAIL) { - return OnboardingStatus.APPS_INSTALLATION; + if (currentWorkspace?.workspaceMembersCount === 1) { + return OnboardingStatus.APPS_INSTALLATION; + } + return OnboardingStatus.PROFILE_CREATION; } if (currentUser?.onboardingStatus === OnboardingStatus.APPS_INSTALLATION) {