diff --git a/lang/ui.ca.json b/lang/ui.ca.json
index 35d6d4813..c6aa4a09e 100644
--- a/lang/ui.ca.json
+++ b/lang/ui.ca.json
@@ -842,9 +842,6 @@
"unexpected-error-description": {
"defaultMessage": "Si us plau, torna-ho a provar o plantejar una solicitud de suport ."
},
- "unexpected-error-title": {
- "defaultMessage": "Si us plau, torna-ho a provar o plantejar una solicitud de suport."
- },
"untitled-project": {
"defaultMessage": "Projecte sense títol"
},
diff --git a/lang/ui.de.json b/lang/ui.de.json
index 036828e08..b2048a4dc 100644
--- a/lang/ui.de.json
+++ b/lang/ui.de.json
@@ -836,9 +836,6 @@
"unexpected-error-description": {
"defaultMessage": "Bitte versuche es erneut oder stelle eine Supportanfrage"
},
- "unexpected-error-title": {
- "defaultMessage": "Bitte versuche es erneut, oder stelle eine Supportanfrage"
- },
"untitled-project": {
"defaultMessage": "Unbenanntes Projekt"
},
diff --git a/lang/ui.en.json b/lang/ui.en.json
index d3ca33dce..029463caf 100644
--- a/lang/ui.en.json
+++ b/lang/ui.en.json
@@ -1135,8 +1135,8 @@
"description": "Text shown for unexpected error scenarios"
},
"unexpected-error-title": {
- "defaultMessage": "Please try again or raise a support request",
- "description": "Text shown for unexpected error scenarios"
+ "defaultMessage": "An unexpected error occurred",
+ "description": "Title of the notification shown for unexpected error scenarios"
},
"untitled-project": {
"defaultMessage": "Untitled project",
diff --git a/lang/ui.es-ES.json b/lang/ui.es-ES.json
index 12e164612..06c30f6c7 100644
--- a/lang/ui.es-ES.json
+++ b/lang/ui.es-ES.json
@@ -842,9 +842,6 @@
"unexpected-error-description": {
"defaultMessage": "Inténtalo otra vez o solicita asistencia"
},
- "unexpected-error-title": {
- "defaultMessage": "Inténtalo otra vez o solicita asistencia"
- },
"untitled-project": {
"defaultMessage": "Proyecto sin título"
},
diff --git a/lang/ui.fr.json b/lang/ui.fr.json
index 7aff0665c..d8f9c88ed 100644
--- a/lang/ui.fr.json
+++ b/lang/ui.fr.json
@@ -842,9 +842,6 @@
"unexpected-error-description": {
"defaultMessage": "Veuillez réessayer ou soumettre une demande d’assistance"
},
- "unexpected-error-title": {
- "defaultMessage": "Veuillez réessayer ou soumettre une demande d’assistance"
- },
"untitled-project": {
"defaultMessage": "Projet sans titre"
},
diff --git a/lang/ui.ga-IE.json b/lang/ui.ga-IE.json
index 1ef1b1c7e..8adc65380 100644
--- a/lang/ui.ga-IE.json
+++ b/lang/ui.ga-IE.json
@@ -842,9 +842,6 @@
"unexpected-error-description": {
"defaultMessage": "Bain triail eile as nó ardaigh iarratas tacaíochta"
},
- "unexpected-error-title": {
- "defaultMessage": "Bain triail eile as nó ardaigh iarratas tacaíochta"
- },
"untitled-project": {
"defaultMessage": "Tionscadal gan teideal"
},
diff --git a/lang/ui.ja.json b/lang/ui.ja.json
index 2b84de308..97ba13beb 100644
--- a/lang/ui.ja.json
+++ b/lang/ui.ja.json
@@ -842,9 +842,6 @@
"unexpected-error-description": {
"defaultMessage": "もう一度やり直すか、サポートリクエストを提出してください"
},
- "unexpected-error-title": {
- "defaultMessage": "もう一度やり直すか、サポートリクエストを提出してください"
- },
"untitled-project": {
"defaultMessage": "無題プロジェクト"
},
diff --git a/lang/ui.ko.json b/lang/ui.ko.json
index 322ddafd2..3e7030dc2 100644
--- a/lang/ui.ko.json
+++ b/lang/ui.ko.json
@@ -833,9 +833,6 @@
"unexpected-error-description": {
"defaultMessage": "다시 시도하거나 지원 요청을 접수하세요"
},
- "unexpected-error-title": {
- "defaultMessage": "다시 시도하거나 지원 요청을 접수하세요"
- },
"untitled-project": {
"defaultMessage": "이름 없는 프로젝트"
},
diff --git a/lang/ui.lol.json b/lang/ui.lol.json
index 2effea779..b876a4155 100644
--- a/lang/ui.lol.json
+++ b/lang/ui.lol.json
@@ -842,9 +842,6 @@
"unexpected-error-description": {
"defaultMessage": "crwdns331774:0crwdne331774:0"
},
- "unexpected-error-title": {
- "defaultMessage": "crwdns331776:0crwdne331776:0"
- },
"untitled-project": {
"defaultMessage": "crwdns331778:0crwdne331778:0"
},
diff --git a/lang/ui.nl.json b/lang/ui.nl.json
index 35543d2fb..703696579 100644
--- a/lang/ui.nl.json
+++ b/lang/ui.nl.json
@@ -842,9 +842,6 @@
"unexpected-error-description": {
"defaultMessage": "Probeer het opnieuw of doe een ondersteunings verzoek"
},
- "unexpected-error-title": {
- "defaultMessage": "Probeer het opnieuw of doe een ondersteunings verzoek"
- },
"untitled-project": {
"defaultMessage": "Naamloos Project"
},
diff --git a/lang/ui.pl.json b/lang/ui.pl.json
index 12618cc09..f7bdd256e 100644
--- a/lang/ui.pl.json
+++ b/lang/ui.pl.json
@@ -842,9 +842,6 @@
"unexpected-error-description": {
"defaultMessage": "Spróbuj ponownie lub zgłoś prośbę o wsparcie"
},
- "unexpected-error-title": {
- "defaultMessage": "Spróbuj ponownie lub zgłoś prośbę o wsparcie"
- },
"untitled-project": {
"defaultMessage": "Projekt bez tytułu"
},
diff --git a/lang/ui.pt-BR.json b/lang/ui.pt-BR.json
index c1bc93709..6faf21d25 100644
--- a/lang/ui.pt-BR.json
+++ b/lang/ui.pt-BR.json
@@ -842,9 +842,6 @@
"unexpected-error-description": {
"defaultMessage": "Por favor, tente novamente ou abra um pedido de suporte"
},
- "unexpected-error-title": {
- "defaultMessage": "Por favor, tente novamente ou abra um pedido de suporte"
- },
"untitled-project": {
"defaultMessage": "Projeto sem título"
},
diff --git a/lang/ui.zh-CN.json b/lang/ui.zh-CN.json
index d875e1e92..94cca82ed 100644
--- a/lang/ui.zh-CN.json
+++ b/lang/ui.zh-CN.json
@@ -836,9 +836,6 @@
"unexpected-error-description": {
"defaultMessage": "请重试或 raise a support request"
},
- "unexpected-error-title": {
- "defaultMessage": "请重试或 raise a support request"
- },
"untitled-project": {
"defaultMessage": "未命名的项目"
},
diff --git a/lang/ui.zh-TW.json b/lang/ui.zh-TW.json
index c540556db..63548e9a8 100644
--- a/lang/ui.zh-TW.json
+++ b/lang/ui.zh-TW.json
@@ -833,9 +833,6 @@
"unexpected-error-description": {
"defaultMessage": "請重試或提出支援要求"
},
- "unexpected-error-title": {
- "defaultMessage": "請重試或提出支援要求"
- },
"untitled-project": {
"defaultMessage": "未命名的專案"
},
diff --git a/src/common/use-action-feedback.test.tsx b/src/common/use-action-feedback.test.tsx
new file mode 100644
index 000000000..f20008963
--- /dev/null
+++ b/src/common/use-action-feedback.test.tsx
@@ -0,0 +1,33 @@
+/**
+ * (c) 2026, Micro:bit Educational Foundation and contributors
+ *
+ * SPDX-License-Identifier: MIT
+ */
+import { ToastFn } from "@microbit/ui";
+import { createIntl } from "react-intl";
+import { vi } from "vitest";
+import { MockLogging } from "../logging/mock";
+import messages from "../messages/ui.en.json";
+import { ActionFeedback } from "./use-action-feedback";
+
+describe("ActionFeedback", () => {
+ it("uses a distinct title for unexpected errors", () => {
+ const intl = createIntl({ locale: "en", messages });
+ const toast = Object.assign(vi.fn(), { closeAll: vi.fn() });
+ const logging = new MockLogging();
+ const feedback = new ActionFeedback(
+ toast as unknown as ToastFn,
+ logging,
+ intl
+ );
+
+ feedback.unexpectedError(new Error("Boom"));
+
+ expect(toast).toHaveBeenCalledOnce();
+ expect(toast.mock.calls[0][0]).toMatchObject({
+ title: "An unexpected error occurred",
+ status: "error",
+ });
+ expect(logging.errors).toHaveLength(1);
+ });
+});
diff --git a/src/common/use-action-feedback.tsx b/src/common/use-action-feedback.tsx
index 990905baa..bbab7cba1 100644
--- a/src/common/use-action-feedback.tsx
+++ b/src/common/use-action-feedback.tsx
@@ -85,7 +85,7 @@ export class ActionFeedback {
unexpectedError(error: any) {
this.logging.error("Unexpected error", error);
this.toast({
- title: this.intl.formatMessage({ id: "unexpected-error-description" }),
+ title: this.intl.formatMessage({ id: "unexpected-error-title" }),
status: "error",
description: (
<>