Repository navigation
Conversation
- Add CONST.BETAS.NL_FILTERS and gate the "Describe your search" entry point in the popup and full-screen page so only opted-in users see the feature - Disable the Apply button when the input is empty (#102200) - Call e.preventDefault() on Enter to stop newline insertion on web (#102174) - Wrap input section in ScrollView so the page scrolls in landscape (#102186)
Wrap new URL() in a try-catch so a malformed searchURL shows a proper error message instead of propagating to the outer catch handler and showing the generic "Something went wrong" toast.
# Conflicts: # src/components/Search/FilterComponents/AdvancedFilters/SearchNLFilterContent.tsx # src/components/Search/FilterDropdowns/SearchAdvancedFiltersPopup/index.tsx # src/pages/Search/SearchNLFilterPage.tsx
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.
|
…d main The merge with main (which had the NL filters revert) removed: - parseExpenseFilters function and PARSE_EXPENSE_FILTERS command from API types - ParseExpenseFiltersParams type - search.filters.describeSearch translation keys - Imports, hook calls, and helpers in SearchAdvancedFiltersPopup - closeOverlay prop threading through SearchAdvancedFiltersButton Re-adds all of the above so typecheck passes.
This comment has been minimized.
This comment has been minimized.
Adds SEARCH_NL_FILTER route and NL_FILTER_RHP screen, registers the page in the modal navigator, adds linking config, updates nav types, and adds a beta-gated "Describe your search" button to the mobile advanced filters page.
…escribe row doesn't expand it
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 0e790645b6
ℹ️ About Codex in GitHub
Your team has set up Codex to 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 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
I am unable to press on "describe your search" row in Android: Screen.Recording.2026-10-12.at.16.12.45.mov |
|
Let's try to increase the urgency on addressing these reviews if possible. We gotta get to this one to the finish line. |
|
@truph01 Can you provide more details? Which device are you using? I couldn't reproduce this problem last time I tested. |
2026-10-16_09-25-50.mp4row highlighting issue still there but that seems minor... |
Match FilterItem pattern: use function-style style prop for pressed background,
render-prop children for ArrowRight icon fill, and remove role={CONST.ROLE.BUTTON}
which is absent from the filter rows below it.
|
🚧 marcaaron has triggered a test Expensify/App build. You can view the workflow run here. |
This comment has been minimized.
This comment has been minimized.
|
🚧 marcaaron has triggered a test Expensify/App build. You can view the workflow run here. |
This comment has been minimized.
This comment has been minimized.
1 similar comment
This comment has been minimized.
This comment has been minimized.
|
Agree that's minor. TBH, can we address these in a follow-up potentially, specifically that ones that we can reproduce. I don't think we should hold the PR up on those. |
🦜 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 diffdiff --git a/src/languages/de.ts b/src/languages/de.ts
index c0740392..a564d132 100644
--- a/src/languages/de.ts
+++ b/src/languages/de.ts
@@ -10193,10 +10193,10 @@ Fügen Sie weitere Ausgabelimits hinzu, um den Cashflow Ihres Unternehmens zu sc
customDay: 'Benutzerdefinierter Tag',
},
describeSearch: {
- title: 'Describe your search',
- description: "Describe what expenses you want to see in plain English, and we'll apply the right filters automatically.",
- inputLabel: 'Describe your search',
- buttonText: 'Apply',
+ title: 'Beschreiben Sie Ihre Suche',
+ description: 'Beschreiben Sie in einfachem Englisch, welche Ausgaben Sie sehen möchten, und wir wenden automatisch die richtigen Filter an.',
+ inputLabel: 'Beschreiben Sie Ihre Suche',
+ buttonText: 'Anwenden',
},
status: 'Status',
keyword: 'Schlüsselwort',
diff --git a/src/languages/el.ts b/src/languages/el.ts
index a13bd7a9..0a4a0bdf 100644
--- a/src/languages/el.ts
+++ b/src/languages/el.ts
@@ -10395,10 +10395,10 @@ ${reportName}`,
customDay: 'Προσαρμοσμένη ημέρα',
},
describeSearch: {
- title: 'Describe your search',
- description: "Describe what expenses you want to see in plain English, and we'll apply the right filters automatically.",
- inputLabel: 'Describe your search',
- buttonText: 'Apply',
+ title: 'Περιγράψτε την αναζήτησή σας',
+ description: 'Περιγράψτε στα απλά αγγλικά ποιες δαπάνες θέλετε να δείτε και θα εφαρμόσουμε αυτόματα τα κατάλληλα φίλτρα.',
+ inputLabel: 'Περιγράψτε την αναζήτησή σας',
+ buttonText: 'Εφαρμογή',
},
status: 'Κατάσταση',
keyword: 'Λέξη-κλειδί',
diff --git a/src/languages/es.ts b/src/languages/es.ts
index d167b36b..3836d73c 100644
--- a/src/languages/es.ts
+++ b/src/languages/es.ts
@@ -10040,10 +10040,10 @@ ${reportName}`,
customDay: 'Día personalizado',
},
describeSearch: {
- title: 'Describe your search',
- description: "Describe what expenses you want to see in plain English, and we'll apply the right filters automatically.",
- inputLabel: 'Describe your search',
- buttonText: 'Apply',
+ title: 'Describe tu búsqueda',
+ description: 'Describe en un inglés sencillo qué gastos quieres ver y aplicaremos los filtros adecuados automáticamente.',
+ inputLabel: 'Describe tu búsqueda',
+ buttonText: 'Aplicar',
},
status: 'Estado',
keyword: 'Palabra clave',
diff --git a/src/languages/fr.ts b/src/languages/fr.ts
index fb8fc13b..c4eb738c 100644
--- a/src/languages/fr.ts
+++ b/src/languages/fr.ts
@@ -10219,10 +10219,10 @@ Ajoutez davantage de règles de dépenses pour protéger la trésorerie de l’e
customDay: 'Jour personnalisé',
},
describeSearch: {
- title: 'Describe your search',
- description: "Describe what expenses you want to see in plain English, and we'll apply the right filters automatically.",
- inputLabel: 'Describe your search',
- buttonText: 'Apply',
+ title: 'Décrivez votre recherche',
+ description: 'Décrivez en anglais simple les dépenses que vous souhaitez voir et nous appliquerons automatiquement les bons filtres.',
+ inputLabel: 'Décrivez votre recherche',
+ buttonText: 'Appliquer',
},
status: 'Statut',
keyword: 'Mot-clé',
diff --git a/src/languages/it.ts b/src/languages/it.ts
index b0da7d3e..04f9b901 100644
--- a/src/languages/it.ts
+++ b/src/languages/it.ts
@@ -10145,10 +10145,10 @@ Aggiungi altre regole di spesa per proteggere il flusso di cassa aziendale.`,
customDay: 'Giorno personalizzato',
},
describeSearch: {
- title: 'Describe your search',
- description: "Describe what expenses you want to see in plain English, and we'll apply the right filters automatically.",
- inputLabel: 'Describe your search',
- buttonText: 'Apply',
+ title: 'Descrivi la tua ricerca',
+ description: 'Descrivi in inglese semplice quali spese vuoi vedere e applicheremo automaticamente i filtri giusti.',
+ inputLabel: 'Descrivi la tua ricerca',
+ buttonText: 'Applica',
},
status: 'Stato',
keyword: 'Parola chiave',
diff --git a/src/languages/ja.ts b/src/languages/ja.ts
index 515d590f..7106048d 100644
--- a/src/languages/ja.ts
+++ b/src/languages/ja.ts
@@ -10002,10 +10002,10 @@ ${reportName}`,
customDay: 'カスタム日',
},
describeSearch: {
- title: 'Describe your search',
- description: "Describe what expenses you want to see in plain English, and we'll apply the right filters automatically.",
- inputLabel: 'Describe your search',
- buttonText: 'Apply',
+ title: '検索内容を入力してください',
+ description: '表示したい経費をわかりやすい英語で入力してください。適切なフィルターを自動的に適用します。',
+ inputLabel: '検索内容を入力してください',
+ buttonText: '適用',
},
status: 'ステータス',
keyword: 'キーワード',
diff --git a/src/languages/nl.ts b/src/languages/nl.ts
index 2d576e3a..bf3d38bc 100644
--- a/src/languages/nl.ts
+++ b/src/languages/nl.ts
@@ -10111,10 +10111,10 @@ er bestedingsregels toe om de kasstroom van het bedrijf te beschermen.`,
customDay: 'Aangepaste dag',
},
describeSearch: {
- title: 'Describe your search',
- description: "Describe what expenses you want to see in plain English, and we'll apply the right filters automatically.",
- inputLabel: 'Describe your search',
- buttonText: 'Apply',
+ title: 'Beschrijf je zoekopdracht',
+ description: 'Beschrijf in gewone taal welke uitgaven je wilt zien, dan passen wij automatisch de juiste filters toe.',
+ inputLabel: 'Beschrijf je zoekopdracht',
+ buttonText: 'Toepassen',
},
status: 'Status',
keyword: 'Trefwoord',
diff --git a/src/languages/pl.ts b/src/languages/pl.ts
index 059924fd..99753c13 100644
--- a/src/languages/pl.ts
+++ b/src/languages/pl.ts
@@ -10128,10 +10128,10 @@ Dodaj więcej zasad wydatków, żeby chronić płynność finansową firmy.`,
customDay: 'Niestandardowy dzień',
},
describeSearch: {
- title: 'Describe your search',
- description: "Describe what expenses you want to see in plain English, and we'll apply the right filters automatically.",
- inputLabel: 'Describe your search',
- buttonText: 'Apply',
+ title: 'Opisz swoje wyszukiwanie',
+ description: 'Opisz po prostu po angielsku, jakie wydatki chcesz zobaczyć, a my automatycznie zastosujemy odpowiednie filtry.',
+ inputLabel: 'Opisz swoje wyszukiwanie',
+ buttonText: 'Zastosuj',
},
status: 'Status',
keyword: 'Słowo kluczowe',
diff --git a/src/languages/pt-BR.ts b/src/languages/pt-BR.ts
index bdcf0a35..6fa12a21 100644
--- a/src/languages/pt-BR.ts
+++ b/src/languages/pt-BR.ts
@@ -10109,10 +10109,10 @@ Adicione mais regras de gasto para proteger o fluxo de caixa da empresa.`,
customDay: 'Dia personalizado',
},
describeSearch: {
- title: 'Describe your search',
- description: "Describe what expenses you want to see in plain English, and we'll apply the right filters automatically.",
- inputLabel: 'Describe your search',
- buttonText: 'Apply',
+ title: 'Descreva sua pesquisa',
+ description: 'Descreva em inglês simples quais despesas você quer ver e nós aplicaremos os filtros certos automaticamente.',
+ inputLabel: 'Descreva sua pesquisa',
+ buttonText: 'Aplicar',
},
status: 'Status',
keyword: 'Palavra-chave',
diff --git a/src/languages/zh-hans.ts b/src/languages/zh-hans.ts
index 1ce2adfc..e259ce60 100644
--- a/src/languages/zh-hans.ts
+++ b/src/languages/zh-hans.ts
@@ -9732,12 +9732,7 @@ ${reportName}`,
},
customDay: '自定义日期',
},
- describeSearch: {
- title: 'Describe your search',
- description: "Describe what expenses you want to see in plain English, and we'll apply the right filters automatically.",
- inputLabel: 'Describe your search',
- buttonText: 'Apply',
- },
+ describeSearch: {title: '描述你的搜索', description: '用简单的英文描述你想查看的报销记录,我们会自动为你应用合适的筛选条件。', inputLabel: '描述你的搜索', buttonText: '应用'},
status: '状态',
keyword: '关键词',
keywords: '关键词',
Note You can apply these changes to your branch by copying the patch to your clipboard, then running |
|
🚧 marcaaron has triggered a test Expensify/App build. You can view the workflow run here. |
|
🧪🧪 Use the links below to test this adhoc build on Android, iOS, and Web. Happy testing! 🧪🧪
|
2026-10-16_11-24-06.mp4 |
|
@neil-marcellini 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] |
|
🎯 @truph01, thanks for reviewing and testing this PR! 🎉 A payment issue will be created for your review once this PR is deployed to production. If payment is not needed (e.g., regression PR review fix etc), react with 👎 to this comment to prevent the payment issue from being created. |
|
Re-assigning to @carlosmiceli because he reviewed the last PR and has context. |
|
@carlosmiceli would love your review as soon as you're able. We're trying to get round two of this PR in the hands of customers. |
carlosmiceli
left a comment
There was a problem hiding this comment.
I think we still need to implement the translations, no?
Reviewer Checklist
Screenshots/VideosAndroid: HybridAppScreen.Recording.2026-10-20.at.08.45.33.movAndroid: mWeb ChromeScreen.Recording.2026-10-20.at.08.47.43.moviOS: HybridAppScreen.Recording.2026-10-20.at.08.37.25.moviOS: mWeb SafariScreen.Recording.2026-10-20.at.08.39.29.movMacOS: Chrome / SafariScreen.Recording.2026-10-20.at.08.20.33.mov |
|
@puneetlath 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] |
Explanation of Change
Re-PR of the NL filters feature that was reverted from staging after QA found 9 deploy blockers. This addresses the 4 App-side blockers; 5 backend parsing fixes land in a companion Web-Expensify PR (https://github.com/Expensify/Web-Expensify/pull/56459).
Changes from the original reverted version:
nlFiltersbeta flag so the feature only shows to opted-in users -- prevents another mass revert if more issues surface before a full rolloutViewwith aScrollViewso the input is reachable in landscape (Android & iOS - Spend - Unable to scroll down Describe your search page in landscape #102186)Fixed Issues
$ https://github.com/Expensify/Expensify/issues/647828
$ #102200
$ https://github.com//Expensify/App/issues/102174
Tests
nlFiltersbeta.nlFiltersbeta.Offline tests
No offline behavior to test -- the NL filter requires a network call to parse the query; that already shows a loading state and the button is disabled while loading.
QA Steps
Scenario 1: Feature hidden for non-beta users
nlFiltersbeta enabled.Scenario 2: Apply button disabled when input is empty
nlFiltersbeta.Scenario 3: Enter key submits on web
Scenario 4: Landscape scroll on mobile
PR Author Checklist
### Fixed Issuessection aboveTestssectionOffline stepssectionQA stepssectionAvatar, I verified the components usingAvatarare working as expected)StyleUtils.getBackgroundAndBorderStyle(theme.componentBG))npm run compress-svg)Avataris modified, I verified thatAvataris working as expected in all cases)Designlabel and/or tagged@Expensify/designso the design team can review the changes.mainbranch was merged into this PR after a review, I tested again and verified the outcome was still expected according to theTeststeps.Screenshots/Videos
Android: Native
Android: mWeb Chrome
iOS: Native
iOS: mWeb Safari
MacOS: Chrome / Safari