Skip to content

[HomePage] Foundation: Add Home Navigation (1/2) - Core#80504

Merged
mountiny merged 24 commits intoExpensify:mainfrom
software-mansion-labs:home-page/navigation
Jan 27, 2026
Merged

[HomePage] Foundation: Add Home Navigation (1/2) - Core#80504
mountiny merged 24 commits intoExpensify:mainfrom
software-mansion-labs:home-page/navigation

Conversation

@WojtekBoman
Copy link
Copy Markdown
Contributor

@WojtekBoman WojtekBoman commented Jan 26, 2026

Explanation of Change

This PR introduces a new empty Home page and reorganizes the navigation structure.

  • Adds a new HomePage component as an entry point for the new Home experience at /home-page (until the beta is active)  
  • Keeps the existing /home route unchanged to avoid disrupting non-beta users  
  • Adds the Home tab button to the navigation bar (gated behind the newDotHome beta)  
  • Adds translations for the new Home page across all supported languages 

Fixed Issues

$ #79978
PROPOSAL:

Tests

If you are on the homepage beta (applausemail should be), then you can see the Home tab

  1. Make sure navigating to and from the Home tab works fine
  • Verify that no errors appear in the JS console

Offline tests

N/A

QA Steps

Same as tests

// TODO: These must be filled out, or the issue title must include "[No QA]."

  • Verify that no errors appear in the JS console

PR Author Checklist

  • I linked the correct issue in the ### Fixed Issues section above
  • I wrote clear testing steps that cover the changes made in this PR
    • I added steps for local testing in the Tests section
    • I added steps for the expected offline behavior in the Offline steps section
    • I added steps for Staging and/or Production testing in the QA steps section
    • I added steps to cover failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
    • I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)
    • I tested this PR with a High Traffic account against the staging or production API to ensure there are no regressions (e.g. long loading states that impact usability).
  • I included screenshots or videos for tests on all platforms
  • I ran the tests on all platforms & verified they passed on:
    • Android: Native
    • Android: mWeb Chrome
    • iOS: Native
    • iOS: mWeb Safari
    • MacOS: Chrome / Safari
  • I verified there are no console errors (if there's a console error not related to the PR, report it or open an issue for it to be fixed)
  • I verified there are no new alerts related to the canBeMissing param for useOnyx
  • I followed proper code patterns (see Reviewing the code)
    • I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. toggleReport and not onIconClick)
    • I verified that comments were added to code that is not self explanatory
    • I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
    • I verified any copy / text shown in the product is localized by adding it to src/languages/* files and using the translation method
      • If any non-english text was added/modified, I used JaimeGPT to get English > Spanish translation. I then posted it in #expensify-open-source and it was approved by an internal Expensify engineer. Link to Slack message:
    • I verified all numbers, amounts, dates and phone numbers shown in the product are using the localization methods
    • I verified any copy / text that was added to the app is grammatically correct in English. It adheres to proper capitalization guidelines (note: only the first word of header/labels should be capitalized), and is either coming verbatim from figma or has been approved by marketing (in order to get marketing approval, ask the Bug Zero team member to add the Waiting for copy label to the issue)
    • I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
    • I verified the JSDocs style guidelines (in STYLE.md) were followed
  • If a new code pattern is added I verified it was agreed to be used by multiple Expensify engineers
  • I followed the guidelines as stated in the Review Guidelines
  • I tested other components that can be impacted by my changes (i.e. if the PR modifies a shared library or component like Avatar, I verified the components using Avatar are working as expected)
  • I verified all code is DRY (the PR doesn't include any logic written more than once, with the exception of tests)
  • I verified any variables that can be defined as constants (ie. in CONST.ts or at the top of the file that uses the constant) are defined as such
  • I verified that if a function's arguments changed that all usages have also been updated correctly
  • If any new file was added I verified that:
    • The file has a description of what it does and/or why is needed at the top of the file if the code is not self explanatory
  • If a new CSS style is added I verified that:
    • A similar style doesn't already exist
    • The style can't be created with an existing StyleUtils function (i.e. StyleUtils.getBackgroundAndBorderStyle(theme.componentBG))
  • If new assets were added or existing ones were modified, I verified that:
    • The assets are optimized and compressed (for SVG files, run npm run compress-svg)
    • The assets load correctly across all supported platforms.
  • If the PR modifies code that runs when editing or sending messages, I tested and verified there is no unexpected behavior for all supported markdown - URLs, single line code, code blocks, quotes, headings, bold, strikethrough, and italic.
  • If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
  • If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
  • If the PR modifies a component or page that can be accessed by a direct deeplink, I verified that the code functions as expected when the deeplink is used - from a logged in and logged out account.
  • If the PR modifies the UI (e.g. new buttons, new UI components, changing the padding/spacing/sizing, moving components, etc) or modifies the form input styles:
    • I verified that all the inputs inside a form are aligned with each other.
    • I added Design label and/or tagged @Expensify/design so the design team can review the changes.
  • If a new page is added, I verified it's using the ScrollView component to make it scrollable when more elements are added to the page.
  • I added unit tests for any new feature or bug fix in this PR to help automatically prevent regressions in this user flow.
  • If the main branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to the Test steps.

Screenshots/Videos

Android: Native
Android: mWeb Chrome
iOS: Native
Screen.Recording.2026-01-27.at.11.09.37.mov
iOS: mWeb Safari
Screen.Recording.2026-01-27.at.11.19.52.mov
MacOS: Chrome / Safari
Screen.Recording.2026-01-27.at.12.31.39.mov

@WojtekBoman WojtekBoman changed the title [Home Page] Foundation: Add Home Navigation [HomePage] Foundation: Add Home Navigation (1/2) - Core Jan 27, 2026
@melvin-bot
Copy link
Copy Markdown

melvin-bot bot commented Jan 27, 2026

Hey, I noticed you changed src/languages/en.ts in a PR from a fork. For security reasons, translations are not generated automatically for PRs from forks.

If you want to automatically generate translations for other locales, an Expensify employee will have to:

  1. Look at the code and make sure there are no malicious changes.
  2. Run the Generate static translations GitHub workflow. If you have write access and the K2 extension, you can simply click: [this button]

Alternatively, if you are an external contributor, you can run the translation script locally with your own OpenAI API key. To learn more, try running:

npx ts-node ./scripts/generateTranslations.ts --help

Typically, you'd want to translate only what you changed by running npx ts-node ./scripts/generateTranslations.ts --compare-ref main

@WojtekBoman WojtekBoman force-pushed the home-page/navigation branch 2 times, most recently from 7a6c44a to 73e2290 Compare January 27, 2026 02:32
@codecov
Copy link
Copy Markdown

codecov bot commented Jan 27, 2026

Codecov Report

❌ Looks like you've decreased code coverage for some files. Please write tests to increase, or at least maintain, the existing level of code coverage. See our documentation here for how to interpret this table.

Files with missing lines Coverage Δ
src/CONST/index.ts 84.03% <ø> (ø)
src/ROUTES.ts 13.28% <ø> (-0.02%) ⬇️
src/SCREENS.ts 100.00% <ø> (ø)
src/components/FloatingActionButton.tsx 96.96% <100.00%> (+3.21%) ⬆️
.../FloatingCameraButton/BaseFloatingCameraButton.tsx 85.00% <100.00%> (+0.78%) ⬆️
...mponents/FocusTrap/WIDE_LAYOUT_INACTIVE_SCREENS.ts 0.00% <ø> (ø)
src/components/ImportOnyxState/index.native.tsx 0.00% <ø> (ø)
src/components/ImportOnyxState/index.tsx 0.00% <ø> (ø)
...nts/Navigation/NavigationTabBar/NAVIGATION_TABS.ts 100.00% <ø> (ø)
...c/components/Navigation/NavigationTabBar/index.tsx 100.00% <100.00%> (+49.62%) ⬆️
... and 36 more
... and 39 files with indirect coverage changes

@OSBotify

This comment has been minimized.

@grgia
Copy link
Copy Markdown
Contributor

grgia commented Jan 27, 2026

Above will fix the TS error

@grgia grgia requested a review from ZhenjaHorbach January 27, 2026 09:39
@github-actions
Copy link
Copy Markdown
Contributor

🚧 @grgia has triggered a test Expensify/App build. You can view the workflow run here.

Copy link
Copy Markdown
Contributor

@grgia grgia left a comment

Choose a reason for hiding this comment

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

Is the plan to delete the duplicated logic? /Do we need a clean up issue

@@ -0,0 +1,616 @@
import {findFocusedRoute, StackActions, useNavigationState} from '@react-navigation/native';
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

@WojtekBoman why do we have a both InboxNavigationTabBar.tsx and HomeNavigationTabBar.tsx with duplicate logic?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Thanks to the new component we can check the beta only once in the parent component instead of checking it several times in NavigationTabBar/index.tsx

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

We'll remove the additional component while deleting the beta

@github-actions

This comment has been minimized.

Copy link
Copy Markdown
Contributor

@grgia grgia left a comment

Choose a reason for hiding this comment

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

Image

CHANGE
Image

  • Let's ensure that placeholders will not be shown to users

BUG:
Image

  • Home is displayed on account with No Beta.

Comment on lines +274 to +301
<View style={styles.flex1}>
<PressableWithFeedback
accessibilityRole={CONST.ROLE.BUTTON}
accessibilityLabel="Home"
accessible
testID="ExpensifyLogoButton"
onPress={navigateToChats}
wrapperStyle={styles.leftNavigationTabBarItem}
sentryLabel={CONST.SENTRY_LABEL.NAVIGATION_TAB_BAR.EXPENSIFY_LOGO}
>
<ImageSVG
style={StyleUtils.getAvatarStyle(CONST.AVATAR_SIZE.DEFAULT)}
src={expensifyIcons.ExpensifyAppIcon}
/>
</PressableWithFeedback>
<PressableWithFeedback
onPress={navigateToNewDotHome}
role={CONST.ROLE.BUTTON}
accessibilityLabel="Home"
style={({hovered}) => [styles.leftNavigationTabBarItem, hovered && styles.navigationTabBarItemHovered]}
sentryLabel="NavigationTabBar.Home"
>
{({hovered}) => (
<>
<View>
<Icon
src={expensifyIcons.Home}
fill={getIconFill(selectedTab === NAVIGATION_TABS.HOME, hovered)}
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Why did we leave these as home?

import FloatingCameraButton from '@components/FloatingCameraButton';
import FloatingGPSButton from '@components/FloatingGPSButton';
import Icon from '@components/Icon';
// import * as Expensicons from '@components/Icon/Expensicons';
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Do we need this comment?

const lastSearchRoute = lastSearchNavigatorState?.routes.findLast((route) => route.name === SCREENS.SEARCH.ROOT);

if (lastSearchRoute) {
const {q, ...rest} = lastSearchRoute.params as SearchFullscreenNavigatorParamList[typeof SCREENS.SEARCH.ROOT];
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

I think it's better to use more meaningful names for constants

Comment on lines +257 to +259
const inboxAccessibilityState = useMemo(() => ({selected: selectedTab === NAVIGATION_TABS.INBOX}), [selectedTab]);
const searchAccessibilityState = useMemo(() => ({selected: selectedTab === NAVIGATION_TABS.SEARCH}), [selectedTab]);
const workspacesAccessibilityState = useMemo(() => ({selected: selectedTab === NAVIGATION_TABS.WORKSPACES}), [selectedTab]);
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

I don't think there's any point in using useMemo here

>
<View style={[styles.flex1, styles.alignItemsCenter, styles.justifyContentCenter]}>
<Button
text="Go to submitted expense reports"
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

I suppose it's better to use translations here

@ZhenjaHorbach
Copy link
Copy Markdown
Contributor

Minor comment
But on the small screen, when we hover over the home icon
It changes color
The other icons don't

2026-01-27.12.57.42.mov

@ZhenjaHorbach
Copy link
Copy Markdown
Contributor

ZhenjaHorbach commented Jan 27, 2026

And I think we need to sync the order of the buttons on the desktop and mobile versions

Снимок экрана 2026-01-27 в 13 02 45 Снимок экрана 2026-01-27 в 13 02 55

@ZhenjaHorbach
Copy link
Copy Markdown
Contributor

Sometimes I have this
But I haven't found a stable way to reproduce this yet 😢

Снимок экрана 2026-01-27 в 13 11 20

@ZhenjaHorbach
Copy link
Copy Markdown
Contributor

When I open Create expense screen using Scan button on Home screen
The left menu disappears and appears with a delay after closing Create expense screen

2026-01-27.13.15.11.mov

@OSBotify
Copy link
Copy Markdown
Contributor

🦜 Polyglot Parrot! 🦜

Squawk! Looks like you added some shiny new English strings. Allow me to parrot them back to you in other tongues:

View the translation diff
diff --git a/src/languages/de.ts b/src/languages/de.ts
index 58d167ab..d7c8a42b 100644
--- a/src/languages/de.ts
+++ b/src/languages/de.ts
@@ -637,6 +637,7 @@ const translations: TranslationDeepObject<typeof en> = {
         insights: 'Einblicke',
         duplicateExpense: 'Doppelte Ausgabe',
         newFeature: 'Neue Funktion',
+        home: 'Startseite',
     },
     supportalNoAccess: {
         title: 'Nicht so schnell',
@@ -2390,11 +2391,11 @@ ${amount} für ${merchant} – ${date}`,
             billable: (value: boolean) => `Ausgabe ${value ? 'verrechenbar' : 'nicht abrechenbar'} aktualisieren`,
             category: (value: string) => `Kategorie auf „${value}“ aktualisieren`,
             comment: (value: string) => `Beschreibung in „${value}“ ändern`,
-            merchant: (value: string) => `Händler aktualisieren auf „${value}“`,
+            merchant: (value: string) => `Händler auf „${value}“ aktualisieren`,
             reimbursable: (value: boolean) => `Ausgabe ${value ? 'erstattungsfähig' : 'nicht erstattungsfähig'} aktualisieren`,
             report: (value: string) => `Zu einem Bericht mit dem Namen „${value}“ hinzufügen`,
-            tag: (value: string) => `Tag auf „${value}“ aktualisieren`,
-            tax: (value: string) => `Steuersatz auf ${value} aktualisieren`,
+            tag: (value: string) => `Tag aktualisieren zu „${value}“`,
+            tax: (value: string) => `Steuersatz auf „${value}“ aktualisieren`,
         },
         newRule: 'Neue Regel',
         addRule: {
@@ -2611,19 +2612,19 @@ ${amount} für ${merchant} – ${date}`,
                 title: 'Spesengenehmigungen hinzufügen',
                 description: ({workspaceMoreFeaturesLink}) =>
                     dedent(`
-                        *Fügen Sie Ausgabengenehmigungen hinzu*, um die Ausgaben Ihres Teams zu prüfen und unter Kontrolle zu halten.
+                        *Spesengenehmigungen hinzufügen*, um die Ausgaben deines Teams zu prüfen und unter Kontrolle zu halten.
 
-                        So geht's:
+                        So funktioniert's:
 
-                        1. Gehen Sie zu *Workspaces*.
-                        2. Wählen Sie Ihren Workspace aus.
-                        3. Klicken Sie auf *More features*.
-                        4. Aktivieren Sie *Workflows*.
-                        5. Navigieren Sie im Workspace-Editor zu *Workflows*.
-                        6. Aktivieren Sie *Add approvals*.
-                        7. Sie werden als Genehmiger für Ausgaben festgelegt. Sie können dies auf jeden Administrator ändern, sobald Sie Ihr Team eingeladen haben.
+                        1. Gehe zu *Workspaces*.
+                        2. Wähle deinen Workspace aus.
+                        3. Klicke auf *Weitere Funktionen*.
+                        4. Aktiviere *Workflows*.
+                        5. Navigiere im Workspace-Editor zu *Workflows*.
+                        6. Aktiviere *Genehmigungen hinzufügen*.
+                        7. Du wirst als Spesengenehmiger festgelegt. Du kannst dies auf jeden Admin ändern, sobald du dein Team einlädst.
 
-                        [Zu More features wechseln](${workspaceMoreFeaturesLink}).`),
+                        [Zu weiteren Funktionen](${workspaceMoreFeaturesLink}).`),
             },
             createTestDriveAdminWorkspaceTask: {
                 title: ({workspaceConfirmationLink}) => `[Arbeitsbereich erstellen](${workspaceConfirmationLink})`,
diff --git a/src/languages/fr.ts b/src/languages/fr.ts
index f5dbf26d..b87ee7a5 100644
--- a/src/languages/fr.ts
+++ b/src/languages/fr.ts
@@ -639,6 +639,7 @@ const translations: TranslationDeepObject<typeof en> = {
         insights: 'Analyses',
         duplicateExpense: 'Note de frais en double',
         newFeature: 'Nouvelle fonctionnalité',
+        home: 'Accueil',
     },
     supportalNoAccess: {
         title: 'Pas si vite',
@@ -2392,13 +2393,13 @@ ${amount} pour ${merchant} - ${date}`,
         emptyRules: {title: 'Vous n’avez créé aucune règle', subtitle: 'Ajouter une règle pour automatiser la préparation des notes de frais.'},
         changes: {
             billable: (value: boolean) => `Mettre à jour la dépense ${value ? 'facturable' : 'non facturable'}`,
-            category: (value: string) => `Mettre à jour la catégorie en « ${value} »`,
-            comment: (value: string) => `Modifier la description en « ${value} »`,
-            merchant: (value: string) => `Mettre à jour le marchand en « ${value} »`,
-            reimbursable: (value: boolean) => `Mettre à jour la dépense ${value ? 'remboursable' : 'non remboursable'}`,
-            report: (value: string) => `Ajouter à un rapport nommé « ${value} »`,
-            tag: (value: string) => `Mettre à jour le tag sur « ${value} »`,
-            tax: (value: string) => `Mettre à jour le taux de taxe à ${value}`,
+            category: (value: string) => `Mettre à jour la catégorie en « ${value} »`,
+            comment: (value: string) => `Modifier la description en « ${value} »`,
+            merchant: (value: string) => `Mettre à jour le commerçant en « ${value} »`,
+            reimbursable: (value: boolean) => `Mettre à jour la dépense ${value ? 'Remboursable' : 'non remboursable'}`,
+            report: (value: string) => `Ajouter à un rapport nommé « ${value} »`,
+            tag: (value: string) => `Mettre à jour le tag sur « ${value} »`,
+            tax: (value: string) => `Mettre à jour le taux de taxe sur « ${value} »`,
         },
         newRule: 'Nouvelle règle',
         addRule: {
@@ -2620,15 +2621,15 @@ ${amount} pour ${merchant} - ${date}`,
 
                         Voici comment faire :
 
-                        1. Allez dans *Espaces de travail*.
+                        1. Accédez à *Workspaces*.
                         2. Sélectionnez votre espace de travail.
-                        3. Cliquez sur *Plus de fonctionnalités*.
+                        3. Cliquez sur *More features*.
                         4. Activez *Workflows*.
                         5. Accédez à *Workflows* dans l’éditeur de l’espace de travail.
-                        6. Activez *Ajouter des validations*.
-                        7. Vous serez défini comme valideur des dépenses. Vous pourrez changer cela pour n’importe quel administrateur une fois que vous aurez invité votre équipe.
+                        6. Activez *Add approvals*.
+                        7. Vous serez défini comme valideur des dépenses. Vous pourrez modifier ce paramètre pour désigner n’importe quel administrateur une fois que vous aurez invité votre équipe.
 
-                        [Accéder aux fonctionnalités supplémentaires](${workspaceMoreFeaturesLink}).`),
+                        [Accéder à more features](${workspaceMoreFeaturesLink}).`),
             },
             createTestDriveAdminWorkspaceTask: {
                 title: ({workspaceConfirmationLink}) => `[Créer](${workspaceConfirmationLink}) un espace de travail`,
diff --git a/src/languages/it.ts b/src/languages/it.ts
index 25dd875b..936e6684 100644
--- a/src/languages/it.ts
+++ b/src/languages/it.ts
@@ -638,6 +638,7 @@ const translations: TranslationDeepObject<typeof en> = {
         insights: 'Analisi',
         duplicateExpense: 'Spesa duplicata',
         newFeature: 'Nuova funzionalità',
+        home: 'Home',
     },
     supportalNoAccess: {
         title: 'Non così in fretta',
@@ -2386,12 +2387,12 @@ ${amount} per ${merchant} - ${date}`,
         changes: {
             billable: (value: boolean) => `Aggiorna spesa ${value ? 'fatturabile' : 'non fatturabile'}`,
             category: (value: string) => `Aggiorna categoria in "${value}"`,
-            comment: (value: string) => `Modifica la descrizione in "${value}"`,
+            comment: (value: string) => `Modifica descrizione in "${value}"`,
             merchant: (value: string) => `Aggiorna esercente in "${value}"`,
-            reimbursable: (value: boolean) => `Aggiorna la spesa ${value ? 'rimborsabile' : 'non rimborsabile'}`,
-            report: (value: string) => `Aggiungi a un report chiamato «${value}»`,
-            tag: (value: string) => `Aggiorna etichetta in "${value}"`,
-            tax: (value: string) => `Aggiorna l’aliquota fiscale a ${value}`,
+            reimbursable: (value: boolean) => `Aggiorna spesa ${value ? 'rimborsabile' : 'non rimborsabile'}`,
+            report: (value: string) => `Aggiungi a un report chiamato "${value}"`,
+            tag: (value: string) => `Aggiorna etichetta a "${value}"`,
+            tax: (value: string) => `Aggiorna aliquota fiscale a "${value}"`,
         },
         newRule: 'Nuova regola',
         addRule: {
@@ -2608,7 +2609,7 @@ ${amount} per ${merchant} - ${date}`,
                     dedent(`
                         *Aggiungi approvazioni delle spese* per rivedere le spese del tuo team e tenerle sotto controllo.
 
-                        Procedi così:
+                        Ecco come fare:
 
                         1. Vai su *Spazi di lavoro*.
                         2. Seleziona il tuo spazio di lavoro.
@@ -2616,9 +2617,9 @@ ${amount} per ${merchant} - ${date}`,
                         4. Abilita *Flussi di lavoro*.
                         5. Vai a *Flussi di lavoro* nell’editor dello spazio di lavoro.
                         6. Abilita *Aggiungi approvazioni*.
-                        7. Verrai impostato come approvatore delle spese. Puoi modificarlo in qualsiasi amministratore dopo aver invitato il tuo team.
+                        7. Verrai impostato come approvatore delle spese. Potrai cambiarlo in qualsiasi amministratore dopo aver invitato il tuo team.
 
-                        [Portami alle altre funzionalità](${workspaceMoreFeaturesLink}).`),
+                        [Portami a altre funzionalità](${workspaceMoreFeaturesLink}).`),
             },
             createTestDriveAdminWorkspaceTask: {
                 title: ({workspaceConfirmationLink}) => `[Crea](${workspaceConfirmationLink}) un workspace`,
diff --git a/src/languages/ja.ts b/src/languages/ja.ts
index 99290978..9419c6f3 100644
--- a/src/languages/ja.ts
+++ b/src/languages/ja.ts
@@ -637,6 +637,7 @@ const translations: TranslationDeepObject<typeof en> = {
         insights: 'インサイト',
         duplicateExpense: '重複した経費',
         newFeature: '新機能',
+        home: 'ホーム',
     },
     supportalNoAccess: {
         title: 'ちょっと待ってください',
@@ -2373,14 +2374,14 @@ ${merchant} への ${amount}(${date})`,
         subtitle: 'これらのルールはあなたの経費に適用されます。ワークスペースに提出する場合、そのワークスペースのルールがこれらより優先されることがあります。',
         emptyRules: {title: 'ルールがまだ作成されていません', subtitle: '経費報告を自動化するルールを追加する。'},
         changes: {
-            billable: (value: boolean) => `経費 ${value ? '請求対象' : '請求不可'} を更新`,
-            category: (value: string) => `カテゴリを「${value}」に更新`,
+            billable: (value: boolean) => `経費 ${value ? '請求可能' : '請求不可'} を更新`,
+            category: (value: string) => `カテゴリーを「${value}」に更新`,
             comment: (value: string) => `説明を「${value}」に変更`,
-            merchant: (value: string) => `支払先を「${value}」に更新`,
-            reimbursable: (value: boolean) => `経費 ${value ? '精算対象' : '非精算'} を更新`,
+            merchant: (value: string) => `取引先を「${value}」に更新`,
+            reimbursable: (value: boolean) => `経費 ${value ? '精算対象' : '非立替精算'} を更新`,
             report: (value: string) => `"${value}" という名前のレポートに追加`,
             tag: (value: string) => `タグを「${value}」に更新`,
-            tax: (value: string) => `税率を${value}に更新`,
+            tax: (value: string) => `税率を「${value}」に更新`,
         },
         newRule: '新しいルール',
         addRule: {
@@ -2597,19 +2598,19 @@ ${merchant} への ${amount}(${date})`,
                 title: '経費承認を追加',
                 description: ({workspaceMoreFeaturesLink}) =>
                     dedent(`
-                        チームの支出を確認して管理するには、*経費承認を追加* してください。
+                        チームの支出を確認して管理するために、*経費承認を追加* しましょう。
 
                         手順は次のとおりです:
 
                         1. *Workspaces* に移動します。
-                        2. ワークスペースを選択します。
+                        2. 対象のワークスペースを選択します。
                         3. *More features* をクリックします。
                         4. *Workflows* を有効にします。
-                        5. ワークスペースエディタで *Workflows* に移動します。
+                        5. ワークスペースエディタ内の *Workflows* に移動します。
                         6. *Add approvals* を有効にします。
-                        7. チームを招待すると、あなたが経費承認者として設定されます。これは、任意の管理者に変更できます。
+                        7. あなたが経費承認者として設定されます。チームを招待した後、任意の管理者に変更できます。
 
-                        [More features へ移動する](${workspaceMoreFeaturesLink})。`),
+                        [More features へ移動](${workspaceMoreFeaturesLink}).`),
             },
             createTestDriveAdminWorkspaceTask: {
                 title: ({workspaceConfirmationLink}) => `ワークスペースを[作成](${workspaceConfirmationLink})`,
diff --git a/src/languages/nl.ts b/src/languages/nl.ts
index e53c09ca..98df6c5e 100644
--- a/src/languages/nl.ts
+++ b/src/languages/nl.ts
@@ -638,6 +638,7 @@ const translations: TranslationDeepObject<typeof en> = {
         insights: 'Inzichten',
         duplicateExpense: 'Dubbele uitgave',
         newFeature: 'Nieuwe functie',
+        home: 'Start',
     },
     supportalNoAccess: {
         title: 'Niet zo snel',
@@ -2382,14 +2383,14 @@ ${amount} voor ${merchant} - ${date}`,
         subtitle: 'Deze regels zijn van toepassing op je uitgaven. Als je ze indient bij een werkruimte, kunnen de regels van de werkruimte deze overschrijven.', //_/\__/_/  \_,_/\__/\__/\_,_/
         emptyRules: {title: 'Je hebt nog geen regels aangemaakt', subtitle: 'Voeg een regel toe om onkostendeclaraties te automatiseren.'},
         changes: {
-            billable: (value: boolean) => `Uitgave ${value ? 'factureerbaar' : 'niet-declarabel'} bijwerken`,
+            billable: (value: boolean) => `Declaratie ${value ? 'factureerbaar' : 'niet-factureerbaar'} bijwerken`,
             category: (value: string) => `Categorie bijwerken naar "${value}"`,
             comment: (value: string) => `Beschrijving wijzigen in "${value}"`,
-            merchant: (value: string) => `Handelaar bijwerken naar "${value}"`,
-            reimbursable: (value: boolean) => `Uitgave ${value ? 'terugbetaalbaar' : 'niet-vergoedbaar'} bijwerken`,
+            merchant: (value: string) => `Winkel bijwerken naar "${value}"`,
+            reimbursable: (value: boolean) => `Declaratie ${value ? 'terugbetaalbaar' : 'niet-vergoedbaar'} bijwerken`,
             report: (value: string) => `Toevoegen aan een rapport met de naam "${value}"`,
-            tag: (value: string) => `Tag bijwerken naar "${value}"`,
-            tax: (value: string) => `Belastingtarief bijwerken naar ${value}`,
+            tag: (value: string) => `Label bijwerken naar "${value}"`,
+            tax: (value: string) => `Belastingtarief bijwerken naar "${value}"`,
         },
         newRule: 'Nieuwe regel',
         addRule: {
@@ -2604,19 +2605,19 @@ ${amount} voor ${merchant} - ${date}`,
                 title: 'Uitgaven goedkeuringen toevoegen',
                 description: ({workspaceMoreFeaturesLink}) =>
                     dedent(`
-                        *Uitgavegoedkeuringen toevoegen* om de uitgaven van je team te beoordelen en onder controle te houden.
+                        *Uitgaven goedkeuringen toevoegen* om de uitgaven van je team te bekijken en onder controle te houden.
 
                         Dit doe je zo:
 
                         1. Ga naar *Workspaces*.
                         2. Selecteer je workspace.
-                        3. Klik op *More features*.
+                        3. Klik op *Meer functies*.
                         4. Schakel *Workflows* in.
                         5. Ga naar *Workflows* in de workspace-editor.
-                        6. Schakel *Add approvals* in.
-                        7. Jij wordt ingesteld als de goedkeurder van uitgaven. Je kunt dit wijzigen naar elke beheerder zodra je je team hebt uitgenodigd.
+                        6. Schakel *Goedkeuringen toevoegen* in.
+                        7. Jij wordt ingesteld als de uitgavengoedkeurder. Je kunt dit wijzigen naar elke beheerder zodra je je team uitnodigt.
 
-                        [Breng me naar more features](${workspaceMoreFeaturesLink}).`),
+                        [Breng me naar meer functies](${workspaceMoreFeaturesLink}).`),
             },
             createTestDriveAdminWorkspaceTask: {
                 title: ({workspaceConfirmationLink}) => `[Maak](${workspaceConfirmationLink}) een workspace`,
diff --git a/src/languages/pl.ts b/src/languages/pl.ts
index 93f0bc39..932ed2ab 100644
--- a/src/languages/pl.ts
+++ b/src/languages/pl.ts
@@ -638,6 +638,7 @@ const translations: TranslationDeepObject<typeof en> = {
         insights: 'Analizy',
         duplicateExpense: 'Zduplikowany wydatek',
         newFeature: 'Nowa funkcja',
+        home: 'Strona główna',
     },
     supportalNoAccess: {
         title: 'Nie tak szybko',
@@ -2375,14 +2376,14 @@ ${amount} dla ${merchant} - ${date}`,
         subtitle: 'Te zasady będą miały zastosowanie do Twoich wydatków. Jeśli wysyłasz je do przestrzeni roboczej, zasady tej przestrzeni roboczej mogą je zastąpić.',
         emptyRules: {title: 'Nie utworzyłeś żadnych reguł', subtitle: 'Dodaj regułę, aby zautomatyzować raportowanie wydatków.'},
         changes: {
-            billable: (value: boolean) => `Zaktualizuj wydatek ${value ? 'Fakturowalne' : 'niefakturowalne'}`,
+            billable: (value: boolean) => `Zaktualizuj wydatek ${value ? 'Fakturowalne' : 'niepodlegające rozliczeniu'}`,
             category: (value: string) => `Zaktualizuj kategorię na „${value}”`,
             comment: (value: string) => `Zmień opis na „${value}”`,
             merchant: (value: string) => `Zaktualizuj sprzedawcę na „${value}”`,
             reimbursable: (value: boolean) => `Zaktualizuj wydatek ${value ? 'podlegający zwrotowi' : 'niepodlegający zwrotowi'}`,
             report: (value: string) => `Dodaj do raportu o nazwie „${value}”`,
             tag: (value: string) => `Zaktualizuj znacznik na „${value}”`,
-            tax: (value: string) => `Zaktualizuj stawkę podatku na ${value}`,
+            tax: (value: string) => `Zaktualizuj stawkę podatku na „${value}”`,
         },
         newRule: 'Nowa zasada',
         addRule: {
@@ -2597,9 +2598,9 @@ ${amount} dla ${merchant} - ${date}`,
                 title: 'Dodaj zatwierdzanie wydatków',
                 description: ({workspaceMoreFeaturesLink}) =>
                     dedent(`
-                        *Dodaj zatwierdzanie wydatków*, aby przeglądać wydatki swojego zespołu i mieć je pod kontrolą.
+                        *Dodaj zatwierdzanie wydatków*, aby przeglądać wydatki swojego zespołu i utrzymać je pod kontrolą.
 
-                        Oto jak:
+                        Oto jak to zrobić:
 
                         1. Przejdź do *Workspaces*.
                         2. Wybierz swoją przestrzeń roboczą.
@@ -2607,9 +2608,9 @@ ${amount} dla ${merchant} - ${date}`,
                         4. Włącz *Workflows*.
                         5. Przejdź do *Workflows* w edytorze przestrzeni roboczej.
                         6. Włącz *Add approvals*.
-                        7. Zostaniesz ustawiony jako osoba zatwierdzająca wydatki. Po zaproszeniu zespołu możesz zmienić to na dowolnego administratora.
+                        7. Zostaniesz ustawiony jako osoba zatwierdzająca wydatki. Możesz zmienić tę osobę na dowolnego administratora po zaproszeniu swojego zespołu.
 
-                        [Przejdź do more features](${workspaceMoreFeaturesLink}).`),
+                        [Przejdź do więcej funkcji](${workspaceMoreFeaturesLink}).`),
             },
             createTestDriveAdminWorkspaceTask: {
                 title: ({workspaceConfirmationLink}) => `[Utwórz](${workspaceConfirmationLink}) przestrzeń roboczą`,
diff --git a/src/languages/pt-BR.ts b/src/languages/pt-BR.ts
index 1d513499..50a3c5b8 100644
--- a/src/languages/pt-BR.ts
+++ b/src/languages/pt-BR.ts
@@ -637,6 +637,7 @@ const translations: TranslationDeepObject<typeof en> = {
         insights: 'Insights',
         duplicateExpense: 'Despesa duplicada',
         newFeature: 'Novo recurso',
+        home: 'Início',
     },
     supportalNoAccess: {
         title: 'Não tão rápido',
@@ -2375,14 +2376,14 @@ ${amount} para ${merchant} - ${date}`,
         subtitle: 'Essas regras serão aplicadas às suas despesas. Se você enviar para um workspace, as regras do workspace poderão substituí-las.',
         emptyRules: {title: 'Você não criou nenhuma regra', subtitle: 'Adicione uma regra para automatizar o relatório de despesas.'},
         changes: {
-            billable: (value: boolean) => `Atualizar despesa ${value ? 'cobrável' : 'não faturável'}`,
+            billable: (value: boolean) => `Atualizar despesa ${value ? 'faturável' : 'não faturável'}`,
             category: (value: string) => `Atualizar categoria para "${value}"`,
             comment: (value: string) => `Alterar descrição para "${value}"`,
             merchant: (value: string) => `Atualizar comerciante para "${value}"`,
             reimbursable: (value: boolean) => `Atualizar despesa ${value ? 'reembolsável' : 'não reembolsável'}`,
             report: (value: string) => `Adicionar a um relatório chamado "${value}"`,
             tag: (value: string) => `Atualizar etiqueta para "${value}"`,
-            tax: (value: string) => `Atualizar taxa de imposto para ${value}`,
+            tax: (value: string) => `Atualizar taxa de imposto para "${value}"`,
         },
         newRule: 'Nova regra',
         addRule: {
@@ -2601,15 +2602,15 @@ ${amount} para ${merchant} - ${date}`,
 
                         Veja como:
 
-                        1. Vá para *Workspaces*.
-                        2. Selecione seu workspace.
-                        3. Clique em *More features*.
-                        4. Ative *Workflows*.
-                        5. Acesse *Workflows* no editor do workspace.
-                        6. Ative *Add approvals*.
-                        7. Você será definido como aprovador de despesas. Você pode alterar isso para qualquer administrador depois de convidar sua equipe.
+                        1. Vá para *Espaços de trabalho*.
+                        2. Selecione seu espaço de trabalho.
+                        3. Clique em *Mais recursos*.
+                        4. Ative *Fluxos de trabalho*.
+                        5. Acesse *Fluxos de trabalho* no editor do espaço de trabalho.
+                        6. Ative *Adicionar aprovações*.
+                        7. Você será definido como o aprovador de despesas. Você pode alterar isso para qualquer administrador depois de convidar sua equipe.
 
-                        [Levar-me para mais recursos](${workspaceMoreFeaturesLink}).`),
+                        [Leve-me para mais recursos](${workspaceMoreFeaturesLink}).`),
             },
             createTestDriveAdminWorkspaceTask: {
                 title: ({workspaceConfirmationLink}) => `[Crie](${workspaceConfirmationLink}) um workspace`,
diff --git a/src/languages/zh-hans.ts b/src/languages/zh-hans.ts
index 15aa07c6..0426e78f 100644
--- a/src/languages/zh-hans.ts
+++ b/src/languages/zh-hans.ts
@@ -634,6 +634,7 @@ const translations: TranslationDeepObject<typeof en> = {
         insights: '洞察',
         duplicateExpense: '重复报销',
         newFeature: '新功能',
+        home: '首页',
     },
     supportalNoAccess: {
         title: '先别急',
@@ -2343,12 +2344,12 @@ ${amount},商户:${merchant} - ${date}`,
         changes: {
             billable: (value: boolean) => `更新报销 ${value ? '可计费' : '不可计费'}`,
             category: (value: string) => `将类别更新为“${value}”`,
-            comment: (value: string) => `将描述更改为 “${value}”`,
+            comment: (value: string) => `将描述更改为“${value}”`,
             merchant: (value: string) => `将商户更新为“${value}”`,
-            reimbursable: (value: boolean) => `更新报销 ${value ? '可报销' : '不予报销'}`,
+            reimbursable: (value: boolean) => `更新报销 ${value ? '可报销' : '不可报销'}`,
             report: (value: string) => `添加到名为“${value}”的报表`,
             tag: (value: string) => `将标签更新为“${value}”`,
-            tax: (value: string) => `将税率更新为 ${value}`,
+            tax: (value: string) => `将税率更新为“${value}”`,
         },
         newRule: '新规则',
         addRule: {
@@ -2557,19 +2558,19 @@ ${amount},商户:${merchant} - ${date}`,
                 title: '添加报销审批',
                 description: ({workspaceMoreFeaturesLink}) =>
                     dedent(`
-                        *添加报销审批*,以便审核团队支出并保持支出可控。
+                        *添加报销审批*,以便审查团队支出并将其控制在合理范围内。
 
                         操作步骤如下:
 
-                        1. 进入 *工作区*。
+                        1. 前往 *Workspaces*。
                         2. 选择你的工作区。
-                        3. 点击 *更多功能*。
-                        4. 启用 *工作流*。
-                        5. 在工作区编辑器中前往 *工作流*。
-                        6. 启用 *添加审批*。
-                        7. 你将被设为报销审批人。邀请团队成员后,你可以将其更改为任何管理员。
+                        3. 点击 *More features*。
+                        4. 启用 *Workflows*。
+                        5. 在工作区编辑器中进入 *Workflows*。
+                        6. 启用 *Add approvals*。
+                        7. 你将被设为报销审批人。邀请团队成员后,你可以将此更改为任意管理员。
 
-                        [带我前往更多功能](${workspaceMoreFeaturesLink})。`),
+                        [带我前往更多功能](${workspaceMoreFeaturesLink}).`),
             },
             createTestDriveAdminWorkspaceTask: {
                 title: ({workspaceConfirmationLink}) => `[创建](${workspaceConfirmationLink})一个工作区`,

Note

You can apply these changes to your branch by copying the patch to your clipboard, then running pbpaste | git apply 😉

@WojtekBoman WojtekBoman force-pushed the home-page/navigation branch 3 times, most recently from 26eb3f9 to 30cbaed Compare January 27, 2026 19:53
@WojtekBoman WojtekBoman requested review from a team as code owners January 27, 2026 22:06
@melvin-bot melvin-bot bot requested review from ZhenjaHorbach and heyjennahay and removed request for a team January 27, 2026 22:06
@melvin-bot
Copy link
Copy Markdown

melvin-bot bot commented Jan 27, 2026

@ZhenjaHorbach Please copy/paste the Reviewer Checklist from here into a new comment on this PR and complete it. If you have the K2 extension, you can simply click: [this button]

@ZhenjaHorbach
Copy link
Copy Markdown
Contributor

ZhenjaHorbach commented Jan 27, 2026

Reviewer Checklist

  • I have verified the author checklist is complete (all boxes are checked off).
  • I verified the correct issue is linked in the ### Fixed Issues section above
  • I verified testing steps are clear and they cover the changes made in this PR
    • I verified the steps for local testing are in the Tests section
    • I verified the steps for Staging and/or Production testing are in the QA steps section
    • I verified the steps cover any possible failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
    • I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)
  • I checked that screenshots or videos are included for tests on all platforms
  • I included screenshots or videos for tests on all platforms
  • I verified that the composer does not automatically focus or open the keyboard on mobile unless explicitly intended. This includes checking that returning the app from the background does not unexpectedly open the keyboard.
  • I verified tests pass on all platforms & I tested again on:
    • Android: HybridApp
    • Android: mWeb Chrome
    • iOS: HybridApp
    • iOS: mWeb Safari
    • MacOS: Chrome / Safari
  • If there are any errors in the console that are unrelated to this PR, I either fixed them (preferred) or linked to where I reported them in Slack
  • I verified there are no new alerts related to the canBeMissing param for useOnyx
  • I verified proper code patterns were followed (see Reviewing the code)
    • I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. toggleReport and not onIconClick).
    • I verified that comments were added to code that is not self explanatory
    • I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
    • I verified any copy / text shown in the product is localized by adding it to src/languages/* files and using the translation method
    • I verified all numbers, amounts, dates and phone numbers shown in the product are using the localization methods
    • I verified any copy / text that was added to the app is grammatically correct in English. It adheres to proper capitalization guidelines (note: only the first word of header/labels should be capitalized), and is either coming verbatim from figma or has been approved by marketing (in order to get marketing approval, ask the Bug Zero team member to add the Waiting for copy label to the issue)
    • I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
    • I verified the JSDocs style guidelines (in STYLE.md) were followed
  • If a new code pattern is added I verified it was agreed to be used by multiple Expensify engineers
  • I verified that this PR follows the guidelines as stated in the Review Guidelines
  • I verified other components that can be impacted by these changes have been tested, and I retested again (i.e. if the PR modifies a shared library or component like Avatar, I verified the components using Avatar have been tested & I retested again)
  • I verified all code is DRY (the PR doesn't include any logic written more than once, with the exception of tests)
  • I verified any variables that can be defined as constants (ie. in CONST.ts or at the top of the file that uses the constant) are defined as such
  • If a new component is created I verified that:
    • A similar component doesn't exist in the codebase
    • All props are defined accurately and each prop has a /** comment above it */
    • The file is named correctly
    • The component has a clear name that is non-ambiguous and the purpose of the component can be inferred from the name alone
    • The only data being stored in the state is data necessary for rendering and nothing else
    • For Class Components, any internal methods passed to components event handlers are bound to this properly so there are no scoping issues (i.e. for onClick={this.submit} the method this.submit should be bound to this in the constructor)
    • Any internal methods bound to this are necessary to be bound (i.e. avoid this.submit = this.submit.bind(this); if this.submit is never passed to a component event handler like onClick)
    • All JSX used for rendering exists in the render method
    • The component has the minimum amount of code necessary for its purpose, and it is broken down into smaller components in order to separate concerns and functions
  • If any new file was added I verified that:
    • The file has a description of what it does and/or why is needed at the top of the file if the code is not self explanatory
  • If a new CSS style is added I verified that:
    • A similar style doesn't already exist
    • The style can't be created with an existing StyleUtils function (i.e. StyleUtils.getBackgroundAndBorderStyle(theme.componentBG)
  • If the PR modifies code that runs when editing or sending messages, I tested and verified there is no unexpected behavior for all supported markdown - URLs, single line code, code blocks, quotes, headings, bold, strikethrough, and italic.
  • If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
  • If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
  • If the PR modifies a component or page that can be accessed by a direct deeplink, I verified that the code functions as expected when the deeplink is used - from a logged in and logged out account.
  • If the PR modifies the UI (e.g. new buttons, new UI components, changing the padding/spacing/sizing, moving components, etc) or modifies the form input styles:
    • I verified that all the inputs inside a form are aligned with each other.
    • I added Design label and/or tagged @Expensify/design so the design team can review the changes.
  • If a new page is added, I verified it's using the ScrollView component to make it scrollable when more elements are added to the page.
  • For any bug fix or new feature in this PR, I verified that sufficient unit tests are included to prevent regressions in this flow.
  • If the main branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to the Test steps.
  • I have checked off every checkbox in the PR reviewer checklist, including those that don't apply to this PR.

Screenshots/Videos

Android: HybridApp
2026-01-28.00.00.24.mov
Android: mWeb Chrome
2026-01-27.23.45.40.mov
iOS: HybridApp
2026-01-28.00.00.24.mov
iOS: mWeb Safari
2026-01-27.23.45.40.mov
MacOS: Chrome / Safari
2026-01-27.23.44.43.mov

@mountiny
Copy link
Copy Markdown
Contributor

@codex review

Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: d97036a43d

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

@github-actions
Copy link
Copy Markdown
Contributor

🚧 @mountiny has triggered a test Expensify/App build. You can view the workflow run here.

@ZhenjaHorbach
Copy link
Copy Markdown
Contributor

LGTM!

@melvin-bot melvin-bot bot requested a review from grgia January 27, 2026 23:06
@github-actions
Copy link
Copy Markdown
Contributor

@mountiny
Copy link
Copy Markdown
Contributor

Tested on ios and the redirects work fine

@mountiny mountiny merged commit 4da74bb into Expensify:main Jan 27, 2026
32 checks passed
@OSBotify
Copy link
Copy Markdown
Contributor

✋ This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release.

@OSBotify
Copy link
Copy Markdown
Contributor

🚀 Deployed to staging by https://github.com/mountiny in version: 9.3.11-0 🚀

platform result
🕸 web 🕸 success ✅
🤖 android 🤖 success ✅
🍎 iOS 🍎 success ✅

@OSBotify
Copy link
Copy Markdown
Contributor

OSBotify commented Feb 5, 2026

🚀 Deployed to production by https://github.com/Julesssss in version: 9.3.12-1 🚀

platform result
🕸 web 🕸 success ✅
🤖 android 🤖 success ✅
🍎 iOS 🍎 failure ❌

accessibilityLabel={translate('common.home')}
accessible
testID="ExpensifyLogoButton"
onPress={navigateToChats}
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

We should navigate to the Home screen instead of the chat inbox when the user taps on the logo. This issue has been addressed in the following fix: #82830.

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.

7 participants