Change Update required view on web - #98407
Conversation
|
Hey, I noticed you changed If you want to automatically generate translations for other locales, an Expensify employee will have to:
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 --helpTypically, you'd want to translate only what you changed by running |
🦜 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 c0273788..2807c4c3 100644
--- a/src/languages/de.ts
+++ b/src/languages/de.ts
@@ -2141,6 +2141,9 @@ const translations: TranslationDeepObject<typeof en> = {
pleaseInstallExpensifyClassic: 'Bitte installiere die neueste Version von Expensify',
toGetLatestChanges: 'Für Mobilgeräte lade die neueste Version herunter und installiere sie. Für das Web aktualisiere deinen Browser.',
newAppNotAvailable: 'Jetzt aktualisieren, und Sie werden es uns später danken.',
+ updateAvailable: 'Aktualisierung verfügbar',
+ pleaseRefresh: 'Bitte aktualisieren Sie diese Seite, um die neueste Version von Expensify zu erhalten.',
+ refreshPage: 'Seite aktualisieren',
},
initialSettingsPage: {
about: 'Info',
diff --git a/src/languages/el.ts b/src/languages/el.ts
index 619da4e1..616f2be5 100644
--- a/src/languages/el.ts
+++ b/src/languages/el.ts
@@ -2196,6 +2196,9 @@ const translations: TranslationDeepObject<typeof en> = {
pleaseInstallExpensifyClassic: 'Παρακαλούμε εγκαταστήστε την πιο πρόσφατη έκδοση του Expensify',
toGetLatestChanges: 'Σε κινητό, κάντε λήψη και εγκαταστήστε την πιο πρόσφατη έκδοση. Σε web, ανανεώστε το πρόγραμμα περιήγησής σας.',
newAppNotAvailable: 'Ενημερώστε τώρα και θα μας ευχαριστήσετε αργότερα.',
+ updateAvailable: 'Διαθέσιμη ενημέρωση',
+ pleaseRefresh: 'Παρακαλούμε ανανεώστε αυτή τη σελίδα για να λάβετε την πιο πρόσφατη έκδοση του Expensify.',
+ refreshPage: 'Ανανεώστε τη σελίδα',
},
initialSettingsPage: {
about: 'Πληροφορίες',
diff --git a/src/languages/es.ts b/src/languages/es.ts
index c2f33688..2499898f 100644
--- a/src/languages/es.ts
+++ b/src/languages/es.ts
@@ -2063,6 +2063,9 @@ const translations: TranslationDeepObject<typeof en> = {
pleaseInstallExpensifyClassic: 'Por favor, instala la última versión de Expensify',
toGetLatestChanges: 'Para móvil, descarga e instala la última versión. Para la web, actualiza tu navegador.',
newAppNotAvailable: 'Actualiza ahora y nos lo agradecerás más tarde.',
+ updateAvailable: 'Actualización disponible',
+ pleaseRefresh: 'Por favor, actualiza esta página para obtener la última versión de Expensify.',
+ refreshPage: 'Actualizar página',
},
initialSettingsPage: {
about: 'Acerca de',
diff --git a/src/languages/fr.ts b/src/languages/fr.ts
index d73f782c..3ce52240 100644
--- a/src/languages/fr.ts
+++ b/src/languages/fr.ts
@@ -2146,6 +2146,9 @@ const translations: TranslationDeepObject<typeof en> = {
pleaseInstallExpensifyClassic: 'Veuillez installer la dernière version d’Expensify',
toGetLatestChanges: 'Sur mobile, téléchargez et installez la dernière version. Sur le web, actualisez votre navigateur.',
newAppNotAvailable: 'Mettez à jour maintenant et vous nous remercierez plus tard.',
+ updateAvailable: 'Mise à jour disponible',
+ pleaseRefresh: 'Veuillez actualiser cette page pour obtenir la dernière version d’Expensify.',
+ refreshPage: 'Actualiser la page',
},
initialSettingsPage: {
about: 'À propos',
diff --git a/src/languages/it.ts b/src/languages/it.ts
index a26fc7d1..8f083382 100644
--- a/src/languages/it.ts
+++ b/src/languages/it.ts
@@ -2138,6 +2138,9 @@ const translations: TranslationDeepObject<typeof en> = {
pleaseInstallExpensifyClassic: 'Installa l’ultima versione di Expensify',
toGetLatestChanges: 'Per mobile, scarica e installa la versione più recente. Per il web, aggiorna il browser.',
newAppNotAvailable: 'Aggiorna ora e ci ringrazierai più tardi.',
+ updateAvailable: 'Aggiornamento disponibile',
+ pleaseRefresh: 'Aggiorna questa pagina per ottenere la versione più recente di Expensify.',
+ refreshPage: 'Aggiorna pagina',
},
initialSettingsPage: {
about: 'Informazioni',
diff --git a/src/languages/ja.ts b/src/languages/ja.ts
index 5d2b26e6..ccf01bbf 100644
--- a/src/languages/ja.ts
+++ b/src/languages/ja.ts
@@ -2118,6 +2118,9 @@ const translations: TranslationDeepObject<typeof en> = {
pleaseInstallExpensifyClassic: '最新バージョンの Expensify をインストールしてください',
toGetLatestChanges: 'モバイルでは最新バージョンをダウンロードしてインストールしてください。ウェブではブラウザを再読み込みしてください。',
newAppNotAvailable: '今すぐアップデートすると、きっと後で感謝していただけます。',
+ updateAvailable: 'アップデートがあります',
+ pleaseRefresh: '最新バージョンの Expensify を利用するには、このページを再読み込みしてください。',
+ refreshPage: 'ページを更新',
},
initialSettingsPage: {
about: '概要',
diff --git a/src/languages/nl.ts b/src/languages/nl.ts
index 25f00ee8..ae4c5f02 100644
--- a/src/languages/nl.ts
+++ b/src/languages/nl.ts
@@ -2133,6 +2133,9 @@ const translations: TranslationDeepObject<typeof en> = {
pleaseInstallExpensifyClassic: 'Installeer de nieuwste versie van Expensify',
toGetLatestChanges: 'Voor mobiel: download en installeer de nieuwste versie. Voor web: vernieuw je browser.',
newAppNotAvailable: 'Werk nu bij en je zult ons later dankbaar zijn.',
+ updateAvailable: 'Update beschikbaar',
+ pleaseRefresh: 'Ververs deze pagina om de nieuwste versie van Expensify te krijgen.',
+ refreshPage: 'Pagina vernieuwen',
},
initialSettingsPage: {
about: 'Over',
diff --git a/src/languages/pl.ts b/src/languages/pl.ts
index 0d14cbf4..048d3c5d 100644
--- a/src/languages/pl.ts
+++ b/src/languages/pl.ts
@@ -2130,6 +2130,9 @@ const translations: TranslationDeepObject<typeof en> = {
pleaseInstallExpensifyClassic: 'Zainstaluj najnowszą wersję Expensify',
toGetLatestChanges: 'Na urządzeniu mobilnym pobierz i zainstaluj najnowszą wersję. W przeglądarce odśwież stronę.',
newAppNotAvailable: 'Zaktualizuj teraz, a później nam podziękujesz.',
+ updateAvailable: 'Dostępna aktualizacja',
+ pleaseRefresh: 'Odśwież tę stronę, żeby uzyskać najnowszą wersję Expensify.',
+ refreshPage: 'Odśwież stronę',
},
initialSettingsPage: {
about: 'Informacje',
diff --git a/src/languages/pt-BR.ts b/src/languages/pt-BR.ts
index 52690e34..22526049 100644
--- a/src/languages/pt-BR.ts
+++ b/src/languages/pt-BR.ts
@@ -2127,6 +2127,9 @@ const translations: TranslationDeepObject<typeof en> = {
pleaseInstallExpensifyClassic: 'Instale a versão mais recente do Expensify',
toGetLatestChanges: 'Para mobile, faça o download e instale a versão mais recente. Para web, atualize o seu navegador.',
newAppNotAvailable: 'Atualize agora e você vai agradecer a gente depois.',
+ updateAvailable: 'Atualização disponível',
+ pleaseRefresh: 'Atualize esta página para obter a versão mais recente do Expensify.',
+ refreshPage: 'Atualizar página',
},
initialSettingsPage: {
about: 'Sobre',
diff --git a/src/languages/zh-hans.ts b/src/languages/zh-hans.ts
index 59339478..74d8c18b 100644
--- a/src/languages/zh-hans.ts
+++ b/src/languages/zh-hans.ts
@@ -2063,6 +2063,9 @@ const translations: TranslationDeepObject<typeof en> = {
pleaseInstallExpensifyClassic: '请安装最新版本的 Expensify',
toGetLatestChanges: '在移动端,请下载并安装最新版本。在网页端,请刷新浏览器。',
newAppNotAvailable: '现在更新,以后你会感谢我们的。',
+ updateAvailable: '有可用更新',
+ pleaseRefresh: '请刷新此页面以获取最新版本的 Expensify。',
+ refreshPage: '刷新页面',
},
initialSettingsPage: {
about: '关于',
Note You can apply these changes to your branch by copying the patch to your clipboard, then running |
Codecov Report✅ Changes either increased or maintained existing code coverage, great job!
|
|
@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] |
Explanation of Change
The
Update requiredpage copy was written for native, where the user installs a new app version. On web the same page shows for a different reason: the browser is running a stale cached bundle, and the fix is to reload with caches cleared (which the button already does —updateAppon web clears the service worker / Cache Storage entries and then reloads).On production web
isStandaloneNewAppProduction(production && !HybridApp) istrue, so web users were shown the Expensify Classic install copy: "Please install the latest version of Expensify" + "Update now and you'll thank us later." — instructions they cannot act on in a browser.This PR splits the view into platform files and gives web its own copy:

Fixed Issues
$ #97309
PROPOSAL: N/A
Tests
Onyx.set('updateRequired', true).Offline tests
Same as Tests above
QA Steps
// TODO: These must be filled out, or the issue title must include "[No QA]."
Same as Tests above
PR Author Checklist
### Fixed Issuessection aboveTestssectionOffline stepssectionQA stepssectiontoggleReportand notonIconClick)Avatar, 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.