diff --git a/src/components/HTMLEngineProvider/BaseHTMLEngineProvider.tsx b/src/components/HTMLEngineProvider/BaseHTMLEngineProvider.tsx
index 6122c257509b..cda0c6ea7bf3 100755
--- a/src/components/HTMLEngineProvider/BaseHTMLEngineProvider.tsx
+++ b/src/components/HTMLEngineProvider/BaseHTMLEngineProvider.tsx
@@ -130,6 +130,7 @@ function BaseHTMLEngineProvider({textSelectable = false, children, enableExperim
'mention-report': HTMLElementModel.fromCustomModel({tagName: 'mention-report', contentModel: HTMLContentModel.textual}),
'mention-here': HTMLElementModel.fromCustomModel({tagName: 'mention-here', contentModel: HTMLContentModel.textual}),
'mention-short': HTMLElementModel.fromCustomModel({tagName: 'mention-short', contentModel: HTMLContentModel.textual}),
+ 'concierge-link': HTMLElementModel.fromCustomModel({tagName: 'concierge-link', contentModel: HTMLContentModel.textual}),
'next-step': HTMLElementModel.fromCustomModel({
tagName: 'next-step',
mixedUAStyles: {...styles.textLabelSupporting, ...styles.lh16},
diff --git a/src/components/HTMLEngineProvider/HTMLRenderers/ConciergeLinkRenderer.tsx b/src/components/HTMLEngineProvider/HTMLRenderers/ConciergeLinkRenderer.tsx
new file mode 100644
index 000000000000..a6161d4b7aba
--- /dev/null
+++ b/src/components/HTMLEngineProvider/HTMLRenderers/ConciergeLinkRenderer.tsx
@@ -0,0 +1,48 @@
+import React from 'react';
+import type {StyleProp, TextStyle} from 'react-native';
+import type {CustomRendererProps, TPhrasing, TText} from 'react-native-render-html';
+import {TNodeChildrenRenderer} from 'react-native-render-html';
+import * as HTMLEngineUtils from '@components/HTMLEngineProvider/htmlEngineUtils';
+import Text from '@components/Text';
+import useThemeStyles from '@hooks/useThemeStyles';
+import {navigateToConciergeChat as navigateToConciergeChatAction} from '@userActions/Report';
+
+type ConciergeLinkRendererProps = CustomRendererProps;
+
+/**
+ * Simple wrapper to create a stable reference without passing event args to navigation function.
+ */
+function navigateToConciergeChat() {
+ navigateToConciergeChatAction();
+}
+
+function ConciergeLinkRenderer({tnode}: ConciergeLinkRendererProps) {
+ const styles = useThemeStyles();
+
+ // Define link style based on context
+ let linkStyle: StyleProp = styles.link;
+
+ // Special handling for links in RBR to maintain consistent font size
+ if (HTMLEngineUtils.isChildOfRBR(tnode)) {
+ linkStyle = [
+ styles.link,
+ {
+ fontSize: HTMLEngineUtils.getFontSizeOfRBRChild(tnode),
+ },
+ ];
+ }
+
+ return (
+
+
+
+ );
+}
+
+ConciergeLinkRenderer.displayName = 'ConciergeLinkRenderer';
+
+export default ConciergeLinkRenderer;
diff --git a/src/components/HTMLEngineProvider/HTMLRenderers/index.ts b/src/components/HTMLEngineProvider/HTMLRenderers/index.ts
index 60670838ef20..bdbc0618a473 100644
--- a/src/components/HTMLEngineProvider/HTMLRenderers/index.ts
+++ b/src/components/HTMLEngineProvider/HTMLRenderers/index.ts
@@ -1,6 +1,7 @@
import type {CustomTagRendererRecord} from 'react-native-render-html';
import AnchorRenderer from './AnchorRenderer';
import CodeRenderer from './CodeRenderer';
+import ConciergeLinkRenderer from './ConciergeLinkRenderer';
import DeletedActionRenderer from './DeletedActionRenderer';
import EditedRenderer from './EditedRenderer';
import EmojiRenderer from './EmojiRenderer';
@@ -38,6 +39,7 @@ const HTMLEngineProviderComponentList: CustomTagRendererRecord = {
emoji: EmojiRenderer,
'next-step-email': NextStepEmailRenderer,
'deleted-action': DeletedActionRenderer,
+ 'concierge-link': ConciergeLinkRenderer,
/* eslint-enable @typescript-eslint/naming-convention */
};
diff --git a/src/languages/de.ts b/src/languages/de.ts
index f047a04f6754..463a877a3f9d 100644
--- a/src/languages/de.ts
+++ b/src/languages/de.ts
@@ -1521,8 +1521,8 @@ const translations = {
clearCacheAndRestart: 'Cache leeren und neu starten',
viewConsole: 'Debug-Konsole anzeigen',
debugConsole: 'Debug-Konsole',
- description: 'Verwenden Sie die untenstehenden Tools, um das Expensify-Erlebnis zu unterstützen. Wenn Sie auf Probleme stoßen, bitte',
- submitBug: 'einen Fehler melden',
+ description:
+ 'Verwenden Sie die folgenden Tools, um Probleme mit Expensify zu beheben. Wenn Sie auf Probleme stoßen, melden Sie bitte einen Fehler.',
confirmResetDescription: 'Alle nicht gesendeten Entwurfsnachrichten gehen verloren, aber der Rest Ihrer Daten ist sicher.',
resetAndRefresh: 'Zurücksetzen und aktualisieren',
clientSideLogging: 'Client-seitiges Logging',
diff --git a/src/languages/en.ts b/src/languages/en.ts
index 43b033502526..1163baf86b56 100755
--- a/src/languages/en.ts
+++ b/src/languages/en.ts
@@ -1501,8 +1501,8 @@ const translations = {
clearCacheAndRestart: 'Clear cache and restart',
viewConsole: 'View debug console',
debugConsole: 'Debug console',
- description: 'Use the tools below to help troubleshoot the Expensify experience. If you encounter any issues, please',
- submitBug: 'submit a bug',
+ description:
+ 'Use the tools below to help troubleshoot the Expensify experience. If you encounter any issues, please submit a bug.',
confirmResetDescription: 'All unsent draft messages will be lost, but the rest of your data is safe.',
resetAndRefresh: 'Reset and refresh',
clientSideLogging: 'Client side logging',
diff --git a/src/languages/es.ts b/src/languages/es.ts
index d9ea77c217ed..c1bb49f3fd17 100644
--- a/src/languages/es.ts
+++ b/src/languages/es.ts
@@ -1498,8 +1498,8 @@ const translations = {
clearCacheAndRestart: 'Borrar caché y reiniciar',
viewConsole: 'Ver la consola de depuración',
debugConsole: 'Consola de depuración',
- description: 'Utilice las herramientas que aparecen a continuación para solucionar los problemas de Expensify. Si tiene algún problema, por favor',
- submitBug: 'envíe un informe de error',
+ description:
+ 'Utilice las herramientas que aparecen a continuación para solucionar los problemas de Expensify. Si tiene algún problema, por favor envíe un informe de error.',
confirmResetDescription: 'Todos los borradores no enviados se perderán, pero el resto de tus datos estarán a salvo.',
resetAndRefresh: 'Restablecer y actualizar',
clientSideLogging: 'Registro a nivel cliente',
diff --git a/src/languages/fr.ts b/src/languages/fr.ts
index 8338f6b0be75..a037d20c74f6 100644
--- a/src/languages/fr.ts
+++ b/src/languages/fr.ts
@@ -1522,8 +1522,8 @@ const translations = {
clearCacheAndRestart: 'Effacer le cache et redémarrer',
viewConsole: 'Afficher la console de débogage',
debugConsole: 'Console de débogage',
- description: "Utilisez les outils ci-dessous pour vous aider à résoudre les problèmes liés à l'expérience Expensify. Si vous rencontrez des problèmes, veuillez",
- submitBug: 'soumettre un bug',
+ description:
+ "Utilisez les outils ci-dessous pour vous aider à résoudre les problèmes liés à l'utilisation d'Expensify. Si vous rencontrez des problèmes, veuillez soumettre un bug.",
confirmResetDescription: 'Tous les brouillons de messages non envoyés seront perdus, mais le reste de vos données est en sécurité.',
resetAndRefresh: 'Réinitialiser et actualiser',
clientSideLogging: 'Journalisation côté client',
diff --git a/src/languages/it.ts b/src/languages/it.ts
index cc758ca9efd2..f7a214b7e757 100644
--- a/src/languages/it.ts
+++ b/src/languages/it.ts
@@ -1515,8 +1515,8 @@ const translations = {
clearCacheAndRestart: 'Cancella cache e riavvia',
viewConsole: 'Visualizza console di debug',
debugConsole: 'Console di debug',
- description: "Usa gli strumenti qui sotto per aiutarti a risolvere i problemi con l'esperienza Expensify. Se incontri problemi, per favore",
- submitBug: 'segnala un bug',
+ description:
+ 'Utilizzate gli strumenti qui sotto per risolvere i problemi di Expensify. Se riscontrate problemi, inviate un bug.',
confirmResetDescription: 'Tutti i messaggi di bozza non inviati andranno persi, ma il resto dei tuoi dati è al sicuro.',
resetAndRefresh: 'Reimposta e aggiorna',
clientSideLogging: 'Registrazione lato client',
diff --git a/src/languages/ja.ts b/src/languages/ja.ts
index c8fd5c1d50cf..18977abe29be 100644
--- a/src/languages/ja.ts
+++ b/src/languages/ja.ts
@@ -1515,8 +1515,8 @@ const translations = {
clearCacheAndRestart: 'キャッシュをクリアして再起動',
viewConsole: 'デバッグコンソールを表示',
debugConsole: 'デバッグコンソール',
- description: 'Expensifyの体験をトラブルシューティングするために、以下のツールを使用してください。問題が発生した場合は、どうぞ',
- submitBug: 'バグを提出する',
+ description:
+ 'Expensifyのトラブルシューティングには以下のツールをご利用ください。問題が発生した場合は、バグをご報告ください。',
confirmResetDescription: '送信されていないすべての下書きメッセージは失われますが、その他のデータは安全です。',
resetAndRefresh: 'リセットして更新',
clientSideLogging: 'クライアントサイドのログ記録',
diff --git a/src/languages/nl.ts b/src/languages/nl.ts
index 4d251c624e00..d520fbf22b63 100644
--- a/src/languages/nl.ts
+++ b/src/languages/nl.ts
@@ -1517,8 +1517,8 @@ const translations = {
clearCacheAndRestart: 'Cache wissen en opnieuw starten',
viewConsole: 'Bekijk debugconsole',
debugConsole: 'Debugconsole',
- description: 'Gebruik de onderstaande tools om de Expensify-ervaring te helpen oplossen. Als u problemen ondervindt, neem dan alstublieft',
- submitBug: 'een bug indienen',
+ description:
+ 'Gebruik de onderstaande hulpmiddelen om problemen met Expensify op te lossen. Als je problemen tegenkomt, dien dan een bug in.',
confirmResetDescription: 'Alle niet-verzonden conceptberichten gaan verloren, maar de rest van uw gegevens is veilig.',
resetAndRefresh: 'Reset en vernieuwen',
clientSideLogging: 'Client-side logging',
diff --git a/src/languages/pl.ts b/src/languages/pl.ts
index 1bda5db8e213..d397612e49fb 100644
--- a/src/languages/pl.ts
+++ b/src/languages/pl.ts
@@ -1513,8 +1513,8 @@ const translations = {
clearCacheAndRestart: 'Wyczyść pamięć podręczną i uruchom ponownie',
viewConsole: 'Wyświetl konsolę debugowania',
debugConsole: 'Konsola debugowania',
- description: 'Użyj poniższych narzędzi, aby pomóc w rozwiązywaniu problemów z działaniem Expensify. Jeśli napotkasz jakiekolwiek problemy, proszę',
- submitBug: 'zgłoś błąd',
+ description:
+ 'Skorzystaj z poniższych narzędzi, aby pomóc w rozwiązywaniu problemów z Expensify. Jeśli napotkasz jakiekolwiek problemy, zgłoś błąd.',
confirmResetDescription: 'Wszystkie niesłane wiadomości robocze zostaną utracone, ale reszta Twoich danych jest bezpieczna.',
resetAndRefresh: 'Zresetuj i odśwież',
clientSideLogging: 'Logowanie po stronie klienta',
diff --git a/src/languages/pt-BR.ts b/src/languages/pt-BR.ts
index 412073883c1c..012e28798ba0 100644
--- a/src/languages/pt-BR.ts
+++ b/src/languages/pt-BR.ts
@@ -1513,8 +1513,8 @@ const translations = {
clearCacheAndRestart: 'Limpar cache e reiniciar',
viewConsole: 'Ver console de depuração',
debugConsole: 'Console de depuração',
- description: 'Use as ferramentas abaixo para ajudar a solucionar problemas na experiência do Expensify. Se você encontrar algum problema, por favor',
- submitBug: 'enviar um bug',
+ description:
+ 'Use as ferramentas abaixo para ajudar a solucionar problemas na experiência da Expensify. Se você encontrar algum problema, envie um bug.',
confirmResetDescription: 'Todas as mensagens de rascunho não enviadas serão perdidas, mas o restante dos seus dados está seguro.',
resetAndRefresh: 'Redefinir e atualizar',
clientSideLogging: 'Registro no lado do cliente',
diff --git a/src/languages/zh-hans.ts b/src/languages/zh-hans.ts
index 6bf0c1884a0b..37101513d2ec 100644
--- a/src/languages/zh-hans.ts
+++ b/src/languages/zh-hans.ts
@@ -1500,8 +1500,7 @@ const translations = {
clearCacheAndRestart: '清除缓存并重启',
viewConsole: '查看调试控制台',
debugConsole: '调试控制台',
- description: '使用以下工具帮助解决Expensify体验中的问题。如果您遇到任何问题,请',
- submitBug: '提交错误报告',
+ description: '使用以下工具帮助排除 Expensify 体验中的故障。如果遇到任何问题,请提交错误。',
confirmResetDescription: '所有未发送的草稿消息将会丢失,但您的其他数据是安全的。',
resetAndRefresh: '重置并刷新',
clientSideLogging: '客户端日志记录',
diff --git a/src/pages/settings/Troubleshoot/TroubleshootPage.tsx b/src/pages/settings/Troubleshoot/TroubleshootPage.tsx
index f5c2c6f8133b..db4e2d80c293 100644
--- a/src/pages/settings/Troubleshoot/TroubleshootPage.tsx
+++ b/src/pages/settings/Troubleshoot/TroubleshootPage.tsx
@@ -11,14 +11,13 @@ import LottieAnimations from '@components/LottieAnimations';
import MenuItemList from '@components/MenuItemList';
import {useOptionsList} from '@components/OptionListContextProvider';
import RecordTroubleshootDataToolMenu from '@components/RecordTroubleshootDataToolMenu';
+import RenderHTML from '@components/RenderHTML';
import ScreenWrapper from '@components/ScreenWrapper';
import ScrollView from '@components/ScrollView';
import Section from '@components/Section';
import Switch from '@components/Switch';
import TestToolMenu from '@components/TestToolMenu';
import TestToolRow from '@components/TestToolRow';
-import Text from '@components/Text';
-import TextLink from '@components/TextLink';
import useEnvironment from '@hooks/useEnvironment';
import useLocalize from '@hooks/useLocalize';
import useOnyx from '@hooks/useOnyx';
@@ -29,7 +28,6 @@ import {setShouldMaskOnyxState} from '@libs/actions/MaskOnyx';
import ExportOnyxState from '@libs/ExportOnyxState';
import Navigation from '@libs/Navigation/Navigation';
import {clearOnyxAndResetApp} from '@userActions/App';
-import {navigateToConciergeChat} from '@userActions/Report';
import type {TranslationPaths} from '@src/languages/types';
import ONYXKEYS from '@src/ONYXKEYS';
import ROUTES from '@src/ROUTES';
@@ -122,16 +120,9 @@ function TroubleshootPage() {
illustrationStyle={illustrationStyle}
titleStyles={styles.accountSettingsSectionTitle}
renderSubtitle={() => (
-
- {translate('initialSettingsPage.troubleshoot.description')}{' '}
- navigateToConciergeChat()}
- >
- {translate('initialSettingsPage.troubleshoot.submitBug')}
-
- .
-
+
+
+
)}
>