Skip to content
Open
17 changes: 17 additions & 0 deletions .changeset/blocked-request-screen.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
---
'@clerk/localizations': minor
'@clerk/shared': minor
'@clerk/ui': minor
---

Show a dedicated screen when a sign-in or sign-up request is blocked, instead of a generic inline error.

A blocked request is terminal — there is no field to correct and no retry that helps — so it now replaces the card rather than appearing as a small error beside a form the user cannot resubmit.

The screen shows a short reference for the request, which the end user can quote when contacting support. When the application supplies its own wording, the screen renders that instead of the default: `title`, `description`, and an optional `https` link with a label are read from the error's `meta`.

The error's `meta` also carries `kind` — a tag naming why the request was blocked — and `data`, an arbitrary bag of scalars the application's owner attached. Neither is rendered by the built-in screen: they are there so an application can switch on `kind` and render its own UI instead.

Also adds the `actionBlocked` localization keys (`title`, `subtitle`, `traceIdLabel`) and appearance descriptors for the new elements, so both the copy and the styling are customizable.

This degrades safely: the error's `code` is unchanged, and a response without the new `meta` renders exactly as before. Note that `message` and `long_message` now carry the application owner's own wording when they configured any — so a client that renders only those, rather than the new screen, shows what the owner wrote instead of the generic sentence.
5 changes: 5 additions & 0 deletions packages/localizations/src/ar-SA.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,11 @@ import type { LocalizationResource } from '@clerk/shared/types';

export const arSA: LocalizationResource = {
locale: 'ar-SA',
actionBlocked: {
subtitle: undefined,
title: undefined,
traceIdLabel: undefined,
},
apiKeys: {
action__add: undefined,
action__search: undefined,
Expand Down
5 changes: 5 additions & 0 deletions packages/localizations/src/be-BY.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,11 @@ import type { LocalizationResource } from '@clerk/shared/types';

export const beBY: LocalizationResource = {
locale: 'be-BY',
actionBlocked: {
subtitle: undefined,
title: undefined,
traceIdLabel: undefined,
},
apiKeys: {
action__add: undefined,
action__search: undefined,
Expand Down
5 changes: 5 additions & 0 deletions packages/localizations/src/bg-BG.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,11 @@ import type { LocalizationResource } from '@clerk/shared/types';

export const bgBG: LocalizationResource = {
locale: 'bg-BG',
actionBlocked: {
subtitle: undefined,
title: undefined,
traceIdLabel: undefined,
},
apiKeys: {
action__add: undefined,
action__search: undefined,
Expand Down
5 changes: 5 additions & 0 deletions packages/localizations/src/bn-IN.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,11 @@ import type { LocalizationResource } from '@clerk/shared/types';

export const bnIN: LocalizationResource = {
locale: 'bn-IN',
actionBlocked: {
subtitle: undefined,
title: undefined,
traceIdLabel: undefined,
},
apiKeys: {
action__add: 'নতুন কী যোগ করুন',
action__search: 'কী অনুসন্ধান করুন',
Expand Down
5 changes: 5 additions & 0 deletions packages/localizations/src/ca-ES.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,11 @@ import type { LocalizationResource } from '@clerk/shared/types';

export const caES: LocalizationResource = {
locale: 'ca-ES',
actionBlocked: {
subtitle: undefined,
title: undefined,
traceIdLabel: undefined,
},
apiKeys: {
action__add: undefined,
action__search: undefined,
Expand Down
5 changes: 5 additions & 0 deletions packages/localizations/src/cs-CZ.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,11 @@ import type { LocalizationResource } from '@clerk/shared/types';

export const csCZ: LocalizationResource = {
locale: 'cs-CZ',
actionBlocked: {
subtitle: undefined,
title: undefined,
traceIdLabel: undefined,
},
apiKeys: {
action__add: 'Přidat nový klíč',
action__search: 'Vyhledat klíče',
Expand Down
5 changes: 5 additions & 0 deletions packages/localizations/src/da-DK.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,11 @@ import type { LocalizationResource } from '@clerk/shared/types';

export const daDK: LocalizationResource = {
locale: 'da-DK',
actionBlocked: {
subtitle: undefined,
title: undefined,
traceIdLabel: undefined,
},
apiKeys: {
action__add: undefined,
action__search: undefined,
Expand Down
5 changes: 5 additions & 0 deletions packages/localizations/src/de-DE.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,11 @@ import type { LocalizationResource } from '@clerk/shared/types';

export const deDE: LocalizationResource = {
locale: 'de-DE',
actionBlocked: {
subtitle: undefined,
title: undefined,
traceIdLabel: undefined,
},
apiKeys: {
action__add: 'Neuen API-Key hinzufügen',
action__search: 'Suche',
Expand Down
5 changes: 5 additions & 0 deletions packages/localizations/src/el-GR.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,11 @@ import type { LocalizationResource } from '@clerk/shared/types';

export const elGR: LocalizationResource = {
locale: 'el-GR',
actionBlocked: {
subtitle: undefined,
title: undefined,
traceIdLabel: undefined,
},
apiKeys: {
action__add: 'Προσθήκη',
action__search: 'Αναζήτηση',
Expand Down
5 changes: 5 additions & 0 deletions packages/localizations/src/en-GB.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,11 @@ import type { LocalizationResource } from '@clerk/shared/types';

export const enGB: LocalizationResource = {
locale: 'en-GB',
actionBlocked: {
subtitle: undefined,
title: undefined,
traceIdLabel: undefined,
},
apiKeys: {
action__add: undefined,
action__search: undefined,
Expand Down
5 changes: 5 additions & 0 deletions packages/localizations/src/en-US.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,11 @@ import type { LocalizationResource } from '@clerk/shared/types';

export const enUS: LocalizationResource = {
locale: 'en-US',
actionBlocked: {
subtitle: 'For your security, this request could not be completed.',
title: "We couldn't complete this request",
traceIdLabel: 'Reference',
},
apiKeys: {
action__add: 'Add new key',
action__search: 'Search keys',
Expand Down
5 changes: 5 additions & 0 deletions packages/localizations/src/es-CR.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,11 @@ import type { LocalizationResource } from '@clerk/shared/types';

export const esCR: LocalizationResource = {
locale: 'es-CR',
actionBlocked: {
subtitle: undefined,
title: undefined,
traceIdLabel: undefined,
},
apiKeys: {
action__add: undefined,
action__search: undefined,
Expand Down
5 changes: 5 additions & 0 deletions packages/localizations/src/es-ES.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,11 @@ import type { LocalizationResource } from '@clerk/shared/types';

export const esES: LocalizationResource = {
locale: 'es-ES',
actionBlocked: {
subtitle: undefined,
title: undefined,
traceIdLabel: undefined,
},
apiKeys: {
action__add: undefined,
action__search: undefined,
Expand Down
5 changes: 5 additions & 0 deletions packages/localizations/src/es-MX.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,11 @@ import type { LocalizationResource } from '@clerk/shared/types';

export const esMX: LocalizationResource = {
locale: 'es-MX',
actionBlocked: {
subtitle: undefined,
title: undefined,
traceIdLabel: undefined,
},
apiKeys: {
action__add: undefined,
action__search: undefined,
Expand Down
5 changes: 5 additions & 0 deletions packages/localizations/src/es-UY.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,11 @@ import type { LocalizationResource } from '@clerk/shared/types';

export const esUY: LocalizationResource = {
locale: 'es-UY',
actionBlocked: {
subtitle: undefined,
title: undefined,
traceIdLabel: undefined,
},
apiKeys: {
action__add: undefined,
action__search: undefined,
Expand Down
5 changes: 5 additions & 0 deletions packages/localizations/src/fa-IR.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,11 @@ import type { LocalizationResource } from '@clerk/shared/types';

export const faIR: LocalizationResource = {
locale: 'fa-IR',
actionBlocked: {
subtitle: undefined,
title: undefined,
traceIdLabel: undefined,
},
apiKeys: {
action__add: 'افزودن کلید جدید',
action__search: 'جستجوی کلیدها',
Expand Down
5 changes: 5 additions & 0 deletions packages/localizations/src/fi-FI.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,11 @@ import type { LocalizationResource } from '@clerk/shared/types';

export const fiFI: LocalizationResource = {
locale: 'fi-FI',
actionBlocked: {
subtitle: undefined,
title: undefined,
traceIdLabel: undefined,
},
apiKeys: {
action__add: 'Lisää uusi avain',
action__search: 'Etsi avaimia',
Expand Down
5 changes: 5 additions & 0 deletions packages/localizations/src/fr-FR.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,11 @@ import type { LocalizationResource } from '@clerk/shared/types';

export const frFR: LocalizationResource = {
locale: 'fr-FR',
actionBlocked: {
subtitle: undefined,
title: undefined,
traceIdLabel: undefined,
},
apiKeys: {
action__add: 'Ajouter une nouvelle clé',
action__search: 'Rechercher des clés',
Expand Down
5 changes: 5 additions & 0 deletions packages/localizations/src/he-IL.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,11 @@ import type { LocalizationResource } from '@clerk/shared/types';

export const heIL: LocalizationResource = {
locale: 'he-IL',
actionBlocked: {
subtitle: undefined,
title: undefined,
traceIdLabel: undefined,
},
apiKeys: {
action__add: undefined,
action__search: undefined,
Expand Down
5 changes: 5 additions & 0 deletions packages/localizations/src/hi-IN.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,11 @@ import type { LocalizationResource } from '@clerk/shared/types';

export const hiIN: LocalizationResource = {
locale: 'hi-IN',
actionBlocked: {
subtitle: undefined,
title: undefined,
traceIdLabel: undefined,
},
apiKeys: {
action__add: 'नई कुंजी जोड़ें',
action__search: 'कुंजियाँ खोजें',
Expand Down
5 changes: 5 additions & 0 deletions packages/localizations/src/hr-HR.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,11 @@ import type { LocalizationResource } from '@clerk/shared/types';

export const hrHR: LocalizationResource = {
locale: 'hr-HR',
actionBlocked: {
subtitle: undefined,
title: undefined,
traceIdLabel: undefined,
},
apiKeys: {
action__add: 'Dodaj novi ključ',
action__search: 'Pretraži ključeve',
Expand Down
5 changes: 5 additions & 0 deletions packages/localizations/src/hu-HU.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,11 @@ import type { LocalizationResource } from '@clerk/shared/types';

export const huHU: LocalizationResource = {
locale: 'hu-HU',
actionBlocked: {
subtitle: undefined,
title: undefined,
traceIdLabel: undefined,
},
apiKeys: {
action__add: 'Új kulcs hozzáadása',
action__search: 'Kulcsok keresése',
Expand Down
5 changes: 5 additions & 0 deletions packages/localizations/src/id-ID.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,11 @@ import type { LocalizationResource } from '@clerk/shared/types';

export const idID: LocalizationResource = {
locale: 'id-ID',
actionBlocked: {
subtitle: undefined,
title: undefined,
traceIdLabel: undefined,
},
apiKeys: {
action__add: undefined,
action__search: undefined,
Expand Down
5 changes: 5 additions & 0 deletions packages/localizations/src/is-IS.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,11 @@ import type { LocalizationResource } from '@clerk/shared/types';

export const isIS: LocalizationResource = {
locale: 'is-IS',
actionBlocked: {
subtitle: undefined,
title: undefined,
traceIdLabel: undefined,
},
apiKeys: {
action__add: 'Bæta við lykli',
action__search: 'Leita að lyklum',
Expand Down
5 changes: 5 additions & 0 deletions packages/localizations/src/it-IT.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,11 @@ import type { LocalizationResource } from '@clerk/shared/types';

export const itIT: LocalizationResource = {
locale: 'it-IT',
actionBlocked: {
subtitle: undefined,
title: undefined,
traceIdLabel: undefined,
},
apiKeys: {
action__add: 'Aggiungi nuova chiave',
action__search: 'Cerca chiavi',
Expand Down
5 changes: 5 additions & 0 deletions packages/localizations/src/ja-JP.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,11 @@ import type { LocalizationResource } from '@clerk/shared/types';

export const jaJP: LocalizationResource = {
locale: 'ja-JP',
actionBlocked: {
subtitle: undefined,
title: undefined,
traceIdLabel: undefined,
},
apiKeys: {
action__add: '新しいキーを追加',
action__search: 'キーを検索',
Expand Down
5 changes: 5 additions & 0 deletions packages/localizations/src/kk-KZ.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,11 @@ import type { LocalizationResource } from '@clerk/shared/types';

export const kkKZ: LocalizationResource = {
locale: 'kk-KZ',
actionBlocked: {
subtitle: undefined,
title: undefined,
traceIdLabel: undefined,
},
apiKeys: {
action__add: undefined,
action__search: undefined,
Expand Down
5 changes: 5 additions & 0 deletions packages/localizations/src/ko-KR.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,11 @@ import type { LocalizationResource } from '@clerk/shared/types';

export const koKR: LocalizationResource = {
locale: 'ko-KR',
actionBlocked: {
subtitle: undefined,
title: undefined,
traceIdLabel: undefined,
},
apiKeys: {
action__add: '새 키 만들기',
action__search: '키 검색',
Expand Down
5 changes: 5 additions & 0 deletions packages/localizations/src/mn-MN.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,11 @@ import type { LocalizationResource } from '@clerk/shared/types';

export const mnMN: LocalizationResource = {
locale: 'mn-MN',
actionBlocked: {
subtitle: undefined,
title: undefined,
traceIdLabel: undefined,
},
apiKeys: {
action__add: undefined,
action__search: undefined,
Expand Down
5 changes: 5 additions & 0 deletions packages/localizations/src/ms-MY.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,11 @@ import type { LocalizationResource } from '@clerk/shared/types';

export const msMY: LocalizationResource = {
locale: 'ms-MY',
actionBlocked: {
subtitle: undefined,
title: undefined,
traceIdLabel: undefined,
},
apiKeys: {
action__add: 'Tambah kunci baharu',
action__search: 'Cari kunci',
Expand Down
5 changes: 5 additions & 0 deletions packages/localizations/src/nb-NO.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,11 @@ import type { LocalizationResource } from '@clerk/shared/types';

export const nbNO: LocalizationResource = {
locale: 'nb-NO',
actionBlocked: {
subtitle: undefined,
title: undefined,
traceIdLabel: undefined,
},
apiKeys: {
action__add: 'Legg til ny nøkkel',
action__search: 'Søk i nøkler',
Expand Down
Loading
Loading