Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions .changeset/khaki-pumas-invite.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
---
"@logto/experience": patch
---

opt the sign-in experience out of browser auto-translation

Browser auto-translation replaces the text nodes React created (`<font><font>…</font></font>`). React's DOM bookkeeping no longer matches the document, so the next update throws `NotFoundError: Failed to execute 'removeChild' on 'Node'`; the experience app has no error boundary, so the whole tree unmounts and the user is left on a blank page in the middle of signing in or signing up — a reload is the only way out.

The experience is already localized per tenant (custom phrases plus language detection), so the page now ships `translate="no"` and `<meta name="google" content="notranslate">`, which is what Chrome, Edge and Safari read before offering or applying a translation.
5 changes: 4 additions & 1 deletion packages/experience/index.html
Original file line number Diff line number Diff line change
@@ -1,10 +1,13 @@
<!DOCTYPE html>
<html lang="en">
<!-- `translate="no"`: browser auto-translation rewrites text nodes, which breaks React's
DOM bookkeeping and unmounts the app mid-flow. The experience is localized per tenant. -->
<html lang="en" translate="no">

<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover">
<meta name="robots" content="noindex,nofollow" />
<meta name="google" content="notranslate" />
<title></title>
<script>
/* See {@link packages/schemas/src/types/ssr.ts} */
Expand Down
Loading