fix(ui): mark Popover/HoverCard/Tooltip portals non-translatable - #5218
Merged
Conversation
#5214 applied the translate="no" + notranslate guard (from #5204's Select fix for the browser-translation removeChild crash) to DropdownMenu, ContextMenu, and Menubar, reasoning that they share the exact same Portal+Content shape as Select. Popover, HoverCard, and Tooltip share that identical shape too but were left out — same crash surface, same fix.
pedrofrxncx
enabled auto-merge (squash)
July 24, 2026 18:20
decocms Bot
pushed a commit
that referenced
this pull request
Jul 24, 2026
PR: #5218 fix(ui): mark Popover/HoverCard/Tooltip portals non-translatable Bump type: patch - @deco/ui (packages/ui/package.json): 1.5.2 -> 1.5.3 Deploy-Scope: both
This was referenced Jul 27, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Follows #5214 (which itself followed #5204's Select fix for the browser page-translation
removeChildcrash — radix-ui/primitives#3795, react/react#11538). #5214 reasoned that DropdownMenu, ContextMenu, and Menubar "share the exact same Portal+Content/SubContent shape ... as Select, so they're equally exposed" and applied thetranslate="no"+notranslateguard to them. Popover, HoverCard, and Tooltip share that identical Portal+Content shape but were missed by both fixes, leaving them exposed to the same crash.Why a maintainer wants this: Tooltip in particular is the most exposed of the three — it mounts/unmounts on every hover in/out, which is exactly the timing race (React reconciling a portal subtree the browser's translation engine just mutated) that throws
NotFoundErroronremoveChild. Popover and HoverCard have the same exposure whenever a Chrome/Chromium-translated page closes one.This is a markup-only change (one
translate="no"prop + onenotranslateclass per Content, matching #5204/#5214 byte-for-byte) — no logic, no test needed, same as both prior PRs shipped with none.Command to confirm:
cd packages/ui && bunx tsc --noEmit(attribute is a standard passthrough prop on the underlying Radix primitives, already proven safe by the merged #5204/#5214 pattern).Local checks run:
bun run fmt(clean, no changes).bunx tsc --noEmitinpackages/uitimed out locally (large package, unrelated to this change) — full CI will validate types.Summary by cubic
Mark
Popover,HoverCard, andTooltipportal content as non-translatable to prevent Chrome/Chromium page-translation NotFoundError removeChild crashes on mount/unmount. Addstranslate="no"and anotranslateclass to each Content, matching the prior Select/DropdownMenu/ContextMenu/Menubar fix.Written for commit 126a61b. Summary will update on new commits.