From 678f644fc865d021626617ea043cc5f11c779f59 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Musia=C5=82?= Date: Wed, 17 Jun 2026 10:46:01 +0200 Subject: [PATCH 1/4] Remove explanation modal --- src/NAVIGATORS.ts | 1 - src/ROUTES.ts | 1 - src/SCREENS.ts | 4 --- src/components/ExplanationModal.tsx | 22 ------------- src/hooks/useOnboardingFlow.ts | 4 +-- src/languages/de.ts | 6 ---- src/languages/en.ts | 5 --- src/languages/es.ts | 5 --- src/languages/fr.ts | 6 ---- src/languages/it.ts | 5 --- src/languages/ja.ts | 6 ---- src/languages/nl.ts | 6 ---- src/languages/pl.ts | 5 --- src/languages/pt-BR.ts | 5 --- src/languages/zh-hans.ts | 5 --- .../Navigation/AppNavigator/AuthScreens.tsx | 6 ---- .../Navigators/ExplanationModalNavigator.tsx | 32 ------------------- src/libs/Navigation/guards/OnboardingGuard.ts | 6 ++-- src/libs/Navigation/linkingConfig/config.ts | 9 ------ src/libs/Navigation/types.ts | 6 ---- 20 files changed, 5 insertions(+), 140 deletions(-) delete mode 100644 src/components/ExplanationModal.tsx delete mode 100644 src/libs/Navigation/AppNavigator/Navigators/ExplanationModalNavigator.tsx diff --git a/src/NAVIGATORS.ts b/src/NAVIGATORS.ts index 23f0755290cc..7f24aedd382e 100644 --- a/src/NAVIGATORS.ts +++ b/src/NAVIGATORS.ts @@ -7,7 +7,6 @@ export default { RIGHT_MODAL_NAVIGATOR: 'RightModalNavigator', ONBOARDING_MODAL_NAVIGATOR: 'OnboardingModalNavigator', FEATURE_TRAINING_MODAL_NAVIGATOR: 'FeatureTrainingModalNavigator', - EXPLANATION_MODAL_NAVIGATOR: 'ExplanationModalNavigator', MIGRATED_USER_MODAL_NAVIGATOR: 'MigratedUserModalNavigator', TEST_DRIVE_MODAL_NAVIGATOR: 'TestDriveModalNavigator', TEST_DRIVE_DEMO_NAVIGATOR: 'TestDriveDemoNavigator', diff --git a/src/ROUTES.ts b/src/ROUTES.ts index d37f9e39d1e1..ac8e4a090e64 100644 --- a/src/ROUTES.ts +++ b/src/ROUTES.ts @@ -3349,7 +3349,6 @@ const ROUTES = { // eslint-disable-next-line @typescript-eslint/no-deprecated -- Legacy route generation, consistent with other onboarding routes getRoute: (backTo?: string) => getUrlWithBackToParam(`onboarding/personaltrackcase`, backTo), }, - EXPLANATION_MODAL_ROOT: 'onboarding/explanation', TEST_DRIVE_MODAL_ROOT: { route: 'onboarding/test-drive', getRoute: (bossEmail?: string) => `onboarding/test-drive${bossEmail ? `?bossEmail=${encodeURIComponent(bossEmail)}` : ''}` as const, diff --git a/src/SCREENS.ts b/src/SCREENS.ts index d1f17873afa7..198dee4b21da 100644 --- a/src/SCREENS.ts +++ b/src/SCREENS.ts @@ -964,10 +964,6 @@ const SCREENS = { SELECTION: 'Currency_Selection', }, - EXPLANATION_MODAL: { - ROOT: 'Explanation_Modal_Root', - }, - MIGRATED_USER_WELCOME_MODAL: { ROOT: 'MigratedUserWelcomeModal_Root', }, diff --git a/src/components/ExplanationModal.tsx b/src/components/ExplanationModal.tsx deleted file mode 100644 index 5768d184fffa..000000000000 --- a/src/components/ExplanationModal.tsx +++ /dev/null @@ -1,22 +0,0 @@ -import React from 'react'; -import useLocalize from '@hooks/useLocalize'; -import * as Welcome from '@userActions/Welcome'; -import CONST from '@src/CONST'; -import FeatureTrainingModal from './FeatureTrainingModal'; - -function ExplanationModal() { - const {translate} = useLocalize(); - - return ( - - ); -} - -export default ExplanationModal; diff --git a/src/hooks/useOnboardingFlow.ts b/src/hooks/useOnboardingFlow.ts index 82f17e6c3552..11a28abc86ed 100644 --- a/src/hooks/useOnboardingFlow.ts +++ b/src/hooks/useOnboardingFlow.ts @@ -6,6 +6,7 @@ import getCurrentUrl from '@libs/Navigation/currentUrl'; import Navigation from '@libs/Navigation/Navigation'; import TransitionTracker from '@libs/Navigation/TransitionTracker'; import {isLoggingInAsNewUser} from '@libs/SessionUtils'; +import {completeHybridAppOnboarding} from '@userActions/Welcome'; import {startOnboardingFlow} from '@userActions/Welcome/OnboardingFlow'; import CONFIG from '@src/CONFIG'; import ONYXKEYS from '@src/ONYXKEYS'; @@ -72,9 +73,8 @@ function useOnboardingFlowRouter() { return; } - // When user is transitioning from OldDot to NewDot, we usually show the explanation modal if (isHybridAppOnboardingCompleted === false) { - Navigation.navigate(ROUTES.EXPLANATION_MODAL_ROOT); + completeHybridAppOnboarding(); } } diff --git a/src/languages/de.ts b/src/languages/de.ts index 2b447e349d1c..ccb1e286375d 100644 --- a/src/languages/de.ts +++ b/src/languages/de.ts @@ -3036,12 +3036,6 @@ ${amount} für ${merchant} – ${date}`, welcome: 'Willkommen!', welcomeSignOffTitleManageTeam: 'Sobald du die Aufgaben oben abgeschlossen hast, können wir weitere Funktionen wie Genehmigungs-Workflows und Regeln erkunden!', welcomeSignOffTitle: 'Schön, dich kennenzulernen!', - explanationModal: { - title: 'Willkommen bei Expensify', - description: - 'Eine App, um Ihre geschäftlichen und privaten Ausgaben in Chat-Geschwindigkeit zu verwalten. Probieren Sie es aus und sagen Sie uns, was Sie denken. Da kommt noch viel mehr!', - secondaryDescription: 'Um zurück zu Expensify Classic zu wechseln, tippe einfach auf dein Profilbild > Gehe zu Expensify Classic.', - }, getStarted: 'Loslegen', whatsYourName: 'Wie heißt du?', peopleYouMayKnow: 'Prüfen Sie, ob Ihr Team in Expensify ist', diff --git a/src/languages/en.ts b/src/languages/en.ts index 61ae84ed1188..008bb460c9bd 100644 --- a/src/languages/en.ts +++ b/src/languages/en.ts @@ -3117,11 +3117,6 @@ const translations = { welcome: 'Welcome!', welcomeSignOffTitleManageTeam: 'Once you finish the tasks above, we can explore more functionality like approval workflows and rules!', welcomeSignOffTitle: "It's great to meet you!", - explanationModal: { - title: 'Welcome to Expensify', - description: 'One app to handle your business and personal spend at the speed of chat. Try it out and let us know what you think. Much more to come!', - secondaryDescription: 'To switch back to Expensify Classic, just tap your profile picture > Go to Expensify Classic.', - }, getStarted: 'Get started', whatsYourName: "What's your name?", peopleYouMayKnow: "See if your team's in Expensify", diff --git a/src/languages/es.ts b/src/languages/es.ts index e3de84d21b2e..5240aa9566a9 100644 --- a/src/languages/es.ts +++ b/src/languages/es.ts @@ -2906,11 +2906,6 @@ ${amount} para ${merchant} - ${date}`, welcome: '¡Bienvenido!', welcomeSignOffTitle: '¡Es un placer conocerte!', welcomeSignOffTitleManageTeam: 'Una vez que termines las tareas anteriores, podemos explorar más funcionalidades como flujos de aprobación y reglas.', - explanationModal: { - title: 'Bienvenido a Expensify', - description: 'Una aplicación para gestionar en un chat todos los gastos de tu empresa y personales. Inténtalo y dinos qué te parece. ¡Hay mucho más por venir!', - secondaryDescription: 'Para volver a Expensify Classic, simplemente haz click en tu foto de perfil > Ir a Expensify Classic.', - }, getStarted: 'Comenzar', whatsYourName: '¿Cómo te llamas?', peopleYouMayKnow: 'Comprueba si tu equipo está en Expensify', diff --git a/src/languages/fr.ts b/src/languages/fr.ts index a8462fd1d83b..c89ba48626fa 100644 --- a/src/languages/fr.ts +++ b/src/languages/fr.ts @@ -3043,12 +3043,6 @@ ${amount} pour ${merchant} - ${date}`, welcomeSignOffTitleManageTeam: 'Une fois que vous aurez terminé les tâches ci-dessus, nous pourrons explorer davantage de fonctionnalités, comme les workflows d’approbation et les règles !', welcomeSignOffTitle: 'Ravi de faire votre connaissance !', - explanationModal: { - title: 'Bienvenue sur Expensify', - description: - 'Une seule application pour gérer vos dépenses professionnelles et personnelles à la vitesse d’un chat. Essayez-la et dites-nous ce que vous en pensez. Et ce n’est qu’un début !', - secondaryDescription: 'Pour revenir à Expensify Classic, appuyez simplement sur votre photo de profil > Aller à Expensify Classic.', - }, getStarted: 'Commencer', whatsYourName: 'Comment vous appelez-vous ?', peopleYouMayKnow: 'Vérifier si votre équipe est sur Expensify', diff --git a/src/languages/it.ts b/src/languages/it.ts index 0e227e3659f0..e73cb599a152 100644 --- a/src/languages/it.ts +++ b/src/languages/it.ts @@ -3030,11 +3030,6 @@ ${amount} per ${merchant} - ${date}`, welcome: 'Benvenuto!', welcomeSignOffTitleManageTeam: 'Una volta completate le attività sopra, potremo esplorare altre funzionalità come i flussi di approvazione e le regole!', welcomeSignOffTitle: 'È un piacere conoscerti!', - explanationModal: { - title: 'Benvenuto in Expensify', - description: 'Un’unica app per gestire le spese aziendali e personali alla velocità di una chat. Provala e facci sapere cosa ne pensi. E non è che l’inizio!', - secondaryDescription: 'Per tornare a Expensify Classic, tocca l’immagine del tuo profilo > Vai a Expensify Classic.', - }, getStarted: 'Inizia', whatsYourName: 'Come ti chiami?', peopleYouMayKnow: 'Verifica se il tuo team è su Expensify', diff --git a/src/languages/ja.ts b/src/languages/ja.ts index 36a0b34e9525..78cbbd7f867d 100644 --- a/src/languages/ja.ts +++ b/src/languages/ja.ts @@ -3006,12 +3006,6 @@ ${date} の ${merchant} への ${amount}`, welcome: 'ようこそ!', welcomeSignOffTitleManageTeam: '上記のタスクが完了したら、承認ワークフローやルールなど、さらに多くの機能を試してみましょう!', welcomeSignOffTitle: 'お会いできてうれしいです!', - explanationModal: { - title: 'Expensify へようこそ', - description: - '1つのアプリで、ビジネスとプライベートの支出をチャットのスピードで管理しましょう。ぜひお試しいただき、ご意見をお聞かせください。今後もさらに機能を追加していきます!', - secondaryDescription: 'Expensify Classic に戻るには、プロフィール写真をタップし、「Expensify Classic に移動」を選択してください。', - }, getStarted: 'はじめる', whatsYourName: 'あなたの名前は何ですか?', peopleYouMayKnow: 'あなたのチームが Expensify を利用しているか確認する', diff --git a/src/languages/nl.ts b/src/languages/nl.ts index e9791973dcc5..379b10593554 100644 --- a/src/languages/nl.ts +++ b/src/languages/nl.ts @@ -3027,12 +3027,6 @@ ${amount} voor ${merchant} - ${date}`, welcome: 'Welkom!', welcomeSignOffTitleManageTeam: 'Zodra je de bovenstaande taken hebt afgerond, kunnen we meer functionaliteit verkennen, zoals goedkeuringsworkflows en regels!', welcomeSignOffTitle: 'Leuk om je te ontmoeten!', - explanationModal: { - title: 'Welkom bij Expensify', - description: - 'Eén app om je zakelijke en persoonlijke uitgaven af te handelen met de snelheid van chat. Probeer het uit en laat ons weten wat je ervan vindt. Er komt nog veel meer aan!', - secondaryDescription: 'Om terug te schakelen naar Expensify Classic, tik je gewoon op je profielfoto > Ga naar Expensify Classic.', - }, getStarted: 'Aan de slag', whatsYourName: 'Hoe heet je?', peopleYouMayKnow: 'Kijk of je team al in Expensify zit', diff --git a/src/languages/pl.ts b/src/languages/pl.ts index 7b4b9c138585..46c52f141f74 100644 --- a/src/languages/pl.ts +++ b/src/languages/pl.ts @@ -3021,11 +3021,6 @@ ${amount} dla ${merchant} - ${date}`, welcome: 'Witamy!', welcomeSignOffTitleManageTeam: 'Gdy ukończysz powyższe zadania, będziemy mogli poznać więcej funkcji, takich jak przepływy akceptacji i reguły!', welcomeSignOffTitle: 'Miło cię poznać!', - explanationModal: { - title: 'Witamy w Expensify', - description: 'Jedna aplikacja do obsługi firmowych i prywatnych wydatków w tempie czatu. Wypróbuj ją i daj nam znać, co o niej myślisz. To dopiero początek!', - secondaryDescription: 'Aby wrócić do Expensify Classic, po prostu stuknij swoje zdjęcie profilowe > Przejdź do Expensify Classic.', - }, getStarted: 'Rozpocznij', whatsYourName: 'Jak masz na imię?', peopleYouMayKnow: 'Sprawdź, czy twój zespół jest w Expensify', diff --git a/src/languages/pt-BR.ts b/src/languages/pt-BR.ts index 836aba2919a8..0c52979afe82 100644 --- a/src/languages/pt-BR.ts +++ b/src/languages/pt-BR.ts @@ -3021,11 +3021,6 @@ ${amount} para ${merchant} - ${date}`, welcome: 'Bem-vindo!', welcomeSignOffTitleManageTeam: 'Quando você concluir as tarefas acima, poderemos explorar mais funcionalidades, como fluxos de aprovação e regras!', welcomeSignOffTitle: 'É ótimo conhecer você!', - explanationModal: { - title: 'Bem-vindo ao Expensify', - description: 'Um só app para gerenciar seus gastos empresariais e pessoais na velocidade de um chat. Experimente e conte para a gente o que achou. Muito mais vindo por aí!', - secondaryDescription: 'Para voltar para o Expensify Classic, basta tocar na sua foto de perfil > Ir para Expensify Classic.', - }, getStarted: 'Começar', whatsYourName: 'Qual é o seu nome?', peopleYouMayKnow: 'Veja se sua equipe está no Expensify', diff --git a/src/languages/zh-hans.ts b/src/languages/zh-hans.ts index 4d2d2a5b906e..bc1334871a17 100644 --- a/src/languages/zh-hans.ts +++ b/src/languages/zh-hans.ts @@ -2948,11 +2948,6 @@ ${amount},商户:${merchant} - 日期:${date}`, welcome: '欢迎!', welcomeSignOffTitleManageTeam: '完成以上任务后,我们就可以探索更多功能,比如审批流程和规则!', welcomeSignOffTitle: '很高兴见到你!', - explanationModal: { - title: '欢迎使用 Expensify', - description: '一款应用,以聊天的速度处理您的商务和个人支出。试试看,并告诉我们您的想法。更多精彩功能即将上线!', - secondaryDescription: '要切换回 Expensify Classic,只需点按您的头像 > 前往 Expensify Classic。', - }, getStarted: '开始使用', whatsYourName: '你叫什么名字?', peopleYouMayKnow: '查看你的团队是否已在 Expensify 中', diff --git a/src/libs/Navigation/AppNavigator/AuthScreens.tsx b/src/libs/Navigation/AppNavigator/AuthScreens.tsx index a79e1158e3aa..1b4ac7b2c2aa 100644 --- a/src/libs/Navigation/AppNavigator/AuthScreens.tsx +++ b/src/libs/Navigation/AppNavigator/AuthScreens.tsx @@ -56,7 +56,6 @@ import DelegatorConnectGuard from './DelegatorConnectGate'; import hideKeyboardOnSwipe from './hideKeyboardOnSwipe'; import KeyboardShortcutsHandler from './KeyboardShortcutsHandler'; import {ShareModalStackNavigator} from './ModalStackNavigators'; -import ExplanationModalNavigator from './Navigators/ExplanationModalNavigator'; import FeatureTrainingModalNavigator from './Navigators/FeatureTrainingModalNavigator'; import MigratedUserWelcomeModalNavigator from './Navigators/MigratedUserWelcomeModalNavigator'; import MultifactorAuthenticationModalNavigator from './Navigators/MultifactorAuthenticationModalNavigator'; @@ -302,11 +301,6 @@ function AuthScreens() { component={ShareModalStackNavigator} listeners={modalScreenListeners} /> - (); - -function ExplanationModalNavigator() { - const {shouldUseNarrowLayout} = useResponsiveLayout(); - return ( - - - - - - - - ); -} - -export default ExplanationModalNavigator; diff --git a/src/libs/Navigation/guards/OnboardingGuard.ts b/src/libs/Navigation/guards/OnboardingGuard.ts index 2076fa19db9b..6efb64ddf97e 100644 --- a/src/libs/Navigation/guards/OnboardingGuard.ts +++ b/src/libs/Navigation/guards/OnboardingGuard.ts @@ -169,7 +169,7 @@ const OnboardingGuard: NavigationGuard = { const isOnboardingCompleted = hasCompletedGuidedSetupFlowSelector(onboarding) ?? false; const isMigratedUser = tryNewDot?.hasBeenAddedToNudgeMigration ?? false; const isSingleEntry = hybridApp?.isSingleNewDotEntry ?? false; - const needsExplanationModal = (CONFIG.IS_HYBRID_APP && tryNewDot?.isHybridAppOnboardingCompleted !== true) ?? false; + const isFirstTimeHybridAppTransition = (CONFIG.IS_HYBRID_APP && tryNewDot?.isHybridAppOnboardingCompleted !== true) ?? false; // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing const isInvitedOrGroupMember = (hasNonPersonalPolicy || wasInvitedToNewDot) ?? false; @@ -192,7 +192,7 @@ const OnboardingGuard: NavigationGuard = { isMigratedUser || isInvitedOrGroupMember || isSingleEntry || - needsExplanationModal || + isFirstTimeHybridAppTransition || isNavigatingWithReplace; if (shouldSkipOnboarding) { @@ -218,7 +218,7 @@ const OnboardingGuard: NavigationGuard = { isOnboardingCompleted, isMigratedUser, isSingleEntry, - needsExplanationModal, + isFirstTimeHybridAppTransition, isInvitedOrGroupMember, isNavigatingWithReplace, }); diff --git a/src/libs/Navigation/linkingConfig/config.ts b/src/libs/Navigation/linkingConfig/config.ts index 6d75bb519d38..366806f51ab4 100644 --- a/src/libs/Navigation/linkingConfig/config.ts +++ b/src/libs/Navigation/linkingConfig/config.ts @@ -44,15 +44,6 @@ const config: LinkingOptions['config'] = { [SCREENS.DYNAMIC_CHANGE_POLICY_EDUCATIONAL_ROOT]: DYNAMIC_ROUTES.CHANGE_POLICY_EDUCATIONAL.path, }, }, - [NAVIGATORS.EXPLANATION_MODAL_NAVIGATOR]: { - screens: { - [SCREENS.EXPLANATION_MODAL.ROOT]: { - path: ROUTES.EXPLANATION_MODAL_ROOT, - exact: true, - }, - }, - }, - [NAVIGATORS.MIGRATED_USER_MODAL_NAVIGATOR]: { screens: { [SCREENS.MIGRATED_USER_WELCOME_MODAL.ROOT]: { diff --git a/src/libs/Navigation/types.ts b/src/libs/Navigation/types.ts index 27d4930de83f..4a4452b00f9f 100644 --- a/src/libs/Navigation/types.ts +++ b/src/libs/Navigation/types.ts @@ -2920,10 +2920,6 @@ type OnboardingModalNavigatorParamList = { }; }; -type ExplanationModalNavigatorParamList = { - [SCREENS.EXPLANATION_MODAL.ROOT]: undefined; -}; - type MigratedUserModalNavigatorParamList = { [SCREENS.MIGRATED_USER_WELCOME_MODAL.ROOT]: undefined; }; @@ -3101,7 +3097,6 @@ type AuthScreensParamList = SharedScreensParamList & [NAVIGATORS.RIGHT_MODAL_NAVIGATOR]: NavigatorScreenParams; [NAVIGATORS.ONBOARDING_MODAL_NAVIGATOR]: NavigatorScreenParams; [NAVIGATORS.FEATURE_TRAINING_MODAL_NAVIGATOR]: NavigatorScreenParams; - [NAVIGATORS.EXPLANATION_MODAL_NAVIGATOR]: NavigatorScreenParams; [NAVIGATORS.MIGRATED_USER_MODAL_NAVIGATOR]: NavigatorScreenParams; [NAVIGATORS.TEST_DRIVE_MODAL_NAVIGATOR]: NavigatorScreenParams; [NAVIGATORS.TEST_DRIVE_DEMO_NAVIGATOR]: NavigatorScreenParams; @@ -3327,7 +3322,6 @@ export type { EditRequestNavigatorParamList, EnablePaymentsNavigatorParamList, TabNavigatorParamList, - ExplanationModalNavigatorParamList, FeatureTrainingNavigatorParamList, FlagCommentNavigatorParamList, FullScreenName, From 39ac46b7628e3ad7fac021e1978f7b690df01f04 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Musia=C5=82?= Date: Wed, 17 Jun 2026 11:10:37 +0200 Subject: [PATCH 2/4] remove unused const --- src/CONST/index.ts | 2 -- src/libs/actions/Welcome/index.ts | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/src/CONST/index.ts b/src/CONST/index.ts index 1a4383935b0b..0a69b4a61970 100644 --- a/src/CONST/index.ts +++ b/src/CONST/index.ts @@ -6328,8 +6328,6 @@ const CONST = { EXPENSIFY_ICON_NAME: 'Expensify', - WELCOME_VIDEO_URL: `${CLOUDFRONT_URL}/videos/intro-1280.mp4`, - ONBOARDING_CHOICES: {...onboardingChoices}, SELECTABLE_ONBOARDING_CHOICES: {...selectableOnboardingChoices}, CREATE_EXPENSE_ONBOARDING_CHOICES: {...createExpenseOnboardingChoices}, diff --git a/src/libs/actions/Welcome/index.ts b/src/libs/actions/Welcome/index.ts index 2104cec90c69..17514ad70d94 100644 --- a/src/libs/actions/Welcome/index.ts +++ b/src/libs/actions/Welcome/index.ts @@ -121,7 +121,7 @@ function completeHybridAppOnboarding() { return; } - // No matter what the response is, we want to mark the onboarding as completed (user saw the explanation modal) + // No matter what the response is, we want to mark the onboarding as completed. Log.info(`[HybridApp] Onboarding status has changed. Propagating new value to OldDot`, true); HybridAppModule.completeOnboarding({status: true}); }); From 1af6c3d077cbed0da268aacc46c8fb56212477a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Musia=C5=82?= Date: Wed, 17 Jun 2026 11:12:56 +0200 Subject: [PATCH 3/4] use other video url in test --- tests/ui/components/FeatureTrainingModalTest.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/ui/components/FeatureTrainingModalTest.tsx b/tests/ui/components/FeatureTrainingModalTest.tsx index 7641e2afdbcf..3ff063fe0df9 100644 --- a/tests/ui/components/FeatureTrainingModalTest.tsx +++ b/tests/ui/components/FeatureTrainingModalTest.tsx @@ -41,7 +41,7 @@ describe('FeatureTrainingModal', () => { , ); From 03e40e7fe742e0d98eb3c1d931c1fe047c5f23b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Musia=C5=82?= Date: Wed, 17 Jun 2026 11:50:46 +0200 Subject: [PATCH 4/4] simplify logic --- src/hooks/useOnboardingFlow.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/hooks/useOnboardingFlow.ts b/src/hooks/useOnboardingFlow.ts index 11a28abc86ed..c9eca3491caf 100644 --- a/src/hooks/useOnboardingFlow.ts +++ b/src/hooks/useOnboardingFlow.ts @@ -73,8 +73,10 @@ function useOnboardingFlowRouter() { return; } + // Make sure hybrid app onboarding is completed and will not start startOnboardingFlow for users that switched from OldDot. if (isHybridAppOnboardingCompleted === false) { completeHybridAppOnboarding(); + return; } } @@ -89,8 +91,7 @@ function useOnboardingFlowRouter() { // We use startOnboardingFlow (which calls resetRoot) instead of Navigation.navigate because // navigate goes through the router where OnboardingGuard would block the navigation. // waitForProtectedRoutes ensures navigation is ready, which is critical during fresh login. - // Skip when HybridApp explanation modal is active (OldDot-transitioning users). - if (isOnboardingCompleted === false && !(CONFIG.IS_HYBRID_APP && isHybridAppOnboardingCompleted === false)) { + if (isOnboardingCompleted === false) { Navigation.waitForProtectedRoutes().then(() => { startOnboardingFlow({ onboardingValuesParam: onboardingValues ?? undefined,