diff --git a/apps/nextjs/src/components/navigation/dynamic-breadcrumb.tsx b/apps/nextjs/src/components/navigation/dynamic-breadcrumb.tsx index 2ed6bc5f8..221736260 100644 --- a/apps/nextjs/src/components/navigation/dynamic-breadcrumb.tsx +++ b/apps/nextjs/src/components/navigation/dynamic-breadcrumb.tsx @@ -65,24 +65,19 @@ export const DynamicBreadcrumb = ({ const isNonInteractable = nonInteractable?.includes(pathnamePart) === true || categorySegments.has(pathnamePart); - if (mappedValue) { - if (isNonInteractable) { - return {mappedValue}; - } - return ( - - {mappedValue} - - ); - } + // Dynamic segments (ids) have no translation and may not be mapped yet while + // their page is still loading. Fall back to the raw segment instead of + // raising MISSING_MESSAGE. + const labelKey = `${translationKey}.label` as TranslationKeys; + const label = mappedValue ?? (t.has(labelKey) ? t(labelKey) : pathnamePart); if (isNonInteractable) { - return {t(`${translationKey}.label` as TranslationKeys)}; + return {label}; } return ( - {t(`${translationKey}.label` as TranslationKeys)} + {label} ); })}