feat: CI link validation for MDX content#190
Merged
ErnestM1234 merged 5 commits intomainfrom Mar 31, 2026
Merged
Conversation
- TypeScript link validator using mdast AST parser - Validates internal links resolve to actual files - Validates anchor fragments (#heading) exist in target files - Supports custom heading IDs via [#id] syntax - Handles locale-optional links (middleware auto-fills locale) - Validates docs-templates/ by expanding placeholders for each library - Clear error output grouped by file with line numbers - Unit tests for core utilities - Added validate-links job to CI workflow
- Add permissions: contents: read to validate.yml (security bot comment) - Fix broken cross-references in templates to pages that only exist for some platforms (with-gt-config, get-default-locale, get-locale-direction, get-locale-properties, get-locales, get-region, get-messages, guides/rtl) - Fix broken #decodemsg anchor → #getting-original-strings-with-decodemsg - Fix broken #privacy anchor → #privacy-and-security - Fix bare /docs links in blog/plurals.mdx → /docs/react and /docs/next
The server-side get-* helpers (getLocaleDirection, getLocaleProperties, getLocales, getRegion) are Next.js-only. Moved from shared templates to next-specific docs and removed incorrect react stubs/meta references.
Templates are shared across next/react/react-native. Server-side functions like getLocales, getLocaleDirection, getLocaleProperties, getRegion, and getMessages are next-only, so references to them don't belong in templates.
ErnestM1234
approved these changes
Mar 31, 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.
Summary
Adds a TypeScript-based link validator that runs in CI on every PR.
What it validates
/) resolve to actual files#heading) exist in the target file[#id]syntax (e.g.## My Heading [#custom-id])/docs/next/introand/en-US/docs/next/introboth valid__DOCS_PATH__etc. for next/react/react-native and validates eachFiles
scripts/validate-links.ts— main validator (mdast AST parser + github-slugger)scripts/test-validate-links.ts— unit testsscripts/package.json+ lockfile + .gitignore.github/workflows/validate.yml— addedvalidate-linksjobNote
There are 33 pre-existing broken links in the current content (missing files in react-native, empty generated pages, stale anchors). These are real issues, not false positives. CI will flag them on this PR — they can be fixed in a follow-up or in this PR before merge.