Skip to content

docs(nav): strip invisible U+200E marks from version labels (preview experiment) - #457

Closed
ketanyekale wants to merge 1 commit into
mainfrom
docs/strip-version-label-invisible-marks
Closed

docs(nav): strip invisible U+200E marks from version labels (preview experiment)#457
ketanyekale wants to merge 1 commit into
mainfrom
docs/strip-version-label-invisible-marks

Conversation

@ketanyekale

Copy link
Copy Markdown
Member

What

Removes all 392 invisible U+200E (Left-to-Right Mark) characters from the 49 "version" labels in docs.json navigation. Only .version fields change — no paths, dropdown names, or content are touched (verified by audit: every U+200E in the file was on a "version" line).

The marks were a historical workaround to keep same-named version labels (v5, v4, …) in different dropdowns from colliding, from before Mintlify officially supported versions nested inside dropdowns.

Why (experiment — do not merge before preview checks)

This is a controlled experiment for the version-selector "Error 500 / Error loading page" crash seen on production and staging. There are two competing diagnoses:

  1. Polluted labels: the U+200E-suffixed labels break the version switcher's routing.
  2. Platform bug: a client-side React crash (NotFoundError: Failed to execute 'insertBefore' on 'Node') in Mintlify's hosted bundle when the dropdown opens — reproduced on the React dropdown whose labels contain no marks, intermittently (clicks shortly after page load), with the URL unchanged.

The local CLI does not run the production renderer, so only the Mintlify preview deploy of this branch can settle it.

Verification on the preview deploy

  1. Open /ui-kit/react/overview on the preview, and immediately real-click the version selector (v7 chip in the sidebar). Repeat a few times with hard reloads. Does the Error 500 still occur?
  2. Open each framework dropdown's version menu (React, React Native, iOS, Android, Flutter, Angular, Vue + SDK tabs) and confirm same-named versions did not merge across dropdowns and each version routes to the correct per-framework page.
  3. Spot-check destination pages still return 200: /ui-kit/react/v6/overview, /sdk/android/v5/overview, etc.

If the crash persists with clean labels, diagnosis 2 is confirmed and this becomes evidence for the Mintlify support ticket (deployed chunk f486afc314643ce1.js, deployment dpl_FrDoQHZJuUUsA7qTxqB1HKX9E3Xx). If versions merge across dropdowns in the preview, close this PR unmerged.

🤖 Generated with Claude Code

All 49 version labels in dropdown navigation carried invisible
Left-to-Right Mark (U+200E) characters (392 total) as a historical
workaround to keep same-named versions (v5, v4, ...) in different
dropdowns from colliding. This strips them so every label is a clean
v2-v7 string and relies on Mintlify scoping each version tree to its
parent dropdown.

Experiment for the version-selector 'Error 500' crash: verify on the
Mintlify preview deploy (production renderer) whether the crash and
cross-dropdown version merging behave with clean labels.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@mintlify

mintlify Bot commented Aug 7, 2026

Copy link
Copy Markdown

Preview deployment for your docs. Learn more about Mintlify Previews.

Project Status Preview Updated (UTC)
cometchat 🟢 Ready View Preview Aug 7, 2026, 4:26 AM

💡 Tip: Enable Workflows to automatically generate PRs for you.

@ketanyekale

Copy link
Copy Markdown
Member Author

Preview experiment results — do not merge; closing

Tested on the preview deploy (link), which runs the production renderer.

1. The Error 500 crash is NOT caused by the invisible characters ❌

With all 392 U+200E marks stripped, the crash still reproduces: first real click on the version selector on /ui-kit/react/overview → same "Error 500 / Error loading page", same console error:

NotFoundError: Failed to execute 'insertBefore' on 'Node': The node before
which the new node is to be inserted is not a child of this node.
(preview deployment dpl_4sj1y6YapSzDrgGCFZSWj32ncNRX, same signature as
production dpl_FrDoQHZJuUUsA7qTxqB1HKX9E3Xx)

It is a client-side crash in Mintlify's bundle when the dropdown opens (timing-dependent — clicks shortly after page load; scripted element.click() never triggers it). This goes to Mintlify support; no docs.json change can fix it.

2. The invisible marks are still load-bearing ⚠️

All 17 dropdown menus render the correct per-dropdown version lists (counts all correct, no visual merging). But selecting a version routes by label globally, landing in the wrong dropdown's tree:

Action on preview Expected Actual
UI Kits → iOS → select v4 /ui-kit/ios/v4/overview /ui-kit/vue/overview (Vue's v4)
UI Kits → Android → select v5 /ui-kit/android/v5/overview /ui-kit/react-native/overview (RN's v5)

Mintlify still does not scope version-switch resolution to the parent dropdown, so same-named clean labels collide exactly as the original workaround anticipated. Stripping the marks would break version switching for every framework.

Conclusion: closing unmerged per the plan in the PR description. The U+200E workaround must stay until Mintlify either fixes dropdown-scoped version resolution or the selector crash (ideally both — reporting both in the same support ticket).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

1 participant