remarkjs/react-markdown
60.7
Weak · 1 October 2026
1.7k
lines of production code
JavaScript
primary language
2
measurements over time
What this system is
This system is a React library that renders Markdown content into JSX elements. It provides a modern, ESM-only API for parsing Markdown and transforming it into React components, supporting async processing and custom URL transformations. The library relies on the unified ecosystem for Markdown parsing and rendering, requiring React 18+ and Node.js 16+.
Features
Added JSX file loading support via esbuild
A new script (script/load-jsx.js) has been introduced to enable the loading and transformation of .jsx files. This module uses esbuild to transpile JSX source code into JavaScript, supporting both ESM and CommonJS output formats depending on the context, and generates source maps for debugging. It exposes loader functions (load, getFormat, transformSource) that can be integrated into a runtime or build toolchain to handle JSX files natively.
script · high confidence
Removals
Removal of legacy ReactMarkdown component
The legacy \src/react-markdown.js\ file has been removed. This file contained an early implementation of the \ReactMarkdown\ component using the deprecated \React.createClass\ API and \React.PropTypes\. Its removal indicates that the project has moved away from this initial, minimal implementation in favor of more modern React patterns and likely a more robust underlying parsing/rendering engine.
src · high confidence
Behavioural changes
Major version 10.0.0: ESM-only, React 18+, and removed legacy props
This release upgrades the library to ESM-only (removing the UMD bundle), requires Node.js 16+ and React 18+, and removes several legacy props including \className\, \linkTarget\, \allowDangerousHtml\, and \includeElementIndex\. It introduces a unified \urlTransform\ prop to replace the previous \transformImageUri\ and \transformLinkUri\ functions, and adds support for async plugins via \MarkdownAsync\ and \MarkdownHooks\. The package now uses TypeScript declaration maps and strict type checking, and the \source\ prop has been replaced by \children\ for passing markdown content.
(repo-wide) · high confidence
React Markdown v9.0.0: Major API overhaul and async support
This release introduces significant breaking changes to the library's API, including the removal of legacy props such as \className\, \linkTarget\, \rawSourcePos\, \sourcePos\, \escapeHtml\, \allowDangerousHtml\, \astPlugins\, \includeElementIndex\, \includeNodeIndex\, \renderers\, and \plugins\. These have been replaced or consolidated: \renderers\ and \plugins\ are replaced by \components\ and \remarkPlugins\ respectively, while \transformImageUri\ and \transformLinkUri\ are unified into a single \urlTransform\ option. The \source\ prop is renamed to \children\. New capabilities include support for async plugins via the \MarkdownAsync\ component and the \MarkdownHooks\ component (which also adds a \fallback\ prop for loading states). The library now requires Node.js 16 and has been refactored to use explicit \ReactElement\ types instead of the global \JSX\ namespace.
lib · high confidence
Test coverage
Removed legacy test suite and configuration
The legacy test file \test/react-markdown.test.js\ and the associated ESLint configuration \test/.eslintrc\ have been removed. This cleanup eliminates outdated test code that relied on deprecated React addons (\React.addons.TestUtils\) and obsolete testing patterns, streamlining the test directory structure.
test · high confidence
Dependencies
Major version 10.1.0 release with unified ecosystem dependencies
The package has been upgraded to version 10.1.0, replacing the legacy \react\ dependency with a peer dependency requiring React \>=18 and introducing a modern dependency stack based on the unified ecosystem (including \remark-parse\, \remark-rehype\, \unified\, \hast-util-to-jsx-runtime\, and \vfile\). This shift updates the core rendering engine to use \hast-util-to-jsx-runtime\ and \mdast-util-to-hast\, aligning the library with current Markdown processing standards. Additionally, the module type has changed to ESM (\"type": "module"\), build tools have moved from Gulp/Babel to TypeScript and esbuild, and development dependencies have been updated to support React 19 and modern testing utilities.
(dependencies) · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
Score
- CAI 57 → 61 (+3.4)
- Rubric changed (rubric-2026.09.11 → rubric-2026.09.18) — scores are not directly comparable.
Lenses
- Code Health 80 → 80 (+0.0)
- Architecture 98 → 99 (+0.4)
- Maturity 62 → 62 (+0.0)
- Readiness 39 → 43 (+4.4)
- Security 88 → 92 (+4.5)
- Performance 100 (new)
Resolved (3)
- Documentation: no installation or build instructions (README.md)
- Documentation: no usage examples (README.md)
- Off-boarding risk: anonymized user #1
New (2)
- Off-boarding risk: anonymized user #1
- Scanner failed to run — not a clean result
Changes since last survey
- 1 commits — 1 feature/other, 0 fixes
By area
- (root) — 1 commit
Notable commits
- change: Add types to tsconfig.json (#945)
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
remarkjs/react-markdown was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 1 October 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit 5088035b33a6523273e822f35c90e86c397c93e5 — the exact code this score is about.
- Scored under rubric-2026.09.18 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-e569280dd5e2.