Socket
Socket
Sign inDemoInstall

react-markdown

Package Overview
Dependencies
Maintainers
2
Versions
92
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

react-markdown - npm Package Versions

13
10

7.1.2

Diff

Changelog

Source

7.1.2 - 2022-01-02

wooorm
published 7.1.1 •

Changelog

Source

7.1.1 - 2021-11-29

wooorm
published 7.1.0 •

Changelog

Source

7.1.0 - 2021-10-21

wooorm
published 7.0.1 •

Changelog

Source

7.0.1 - 2021-08-26

  • ec387c2 Add improved type for linkTarget as string
  • 5af6bc7 Fix to correctly compile intrinsic types
wooorm
published 7.0.0 •

Changelog

Source

7.0.0 - 2021-08-13

Welcome to version 7. This a major release and therefore contains breaking changes.

Breaking changes

Internals

wooorm
published 6.0.3 •

Changelog

Source

6.0.3 - 2021-07-30

  • 13367ed Fix types to include each element w/ its properties
  • 0a1931a Fix to add min version of property-information
wooorm
published 6.0.2 •

Changelog

Source

6.0.2 - 2021-05-06

  • cefc02d Add string type for classNames
  • 6355e45 Fix to pass vfile to plugins
  • 5cf6e1b Fix to add warning when non-strings are given as children
wooorm
published 6.0.1 •

Changelog

Source

6.0.1 - 2021-04-23

  • 2e956be Fix whitespace in table elements
  • d36048a Add architecture section to readme
wooorm
published 6.0.0 •

Changelog

Source

6.0.0 - 2021-04-15

Welcome to version 6. This a major release and therefore contains breaking changes.

Change renderers to components

react-markdown used to let you define components for markdown constructs (link, delete, break, etc). This proved complex as users didn’t know about those names or markdown peculiarities (such as that there are fully formed links and link references).

See GH-549 for more on why this changed. See Appendix B: Components in readme.md for more on components.

<details> <summary>Show example of needed change</summary>

Before (broken):

<Markdown
  renderers={{
    // Use a fancy hr
    thematicBreak: ({node, ...props}) => <MyFancyRule {...props} />
  }}
>{`***`}</Markdown>

Now (fixed):

<Markdown
  components={{
    // Use a fancy hr
    hr: ({node, ...props}) => <MyFancyRule {...props} />
  }}
>{`***`}</Markdown>
</details> <details> <summary>Show conversion table</summary>

| Type (renderers) | Tag names (components) | | ----------------------------------- | --------------------------------------- | | blockquote | blockquote | | break | br | | code, inlineCode | code, pre​*​ | | definition | | | delete | del | | emphasis | em | | heading | h1, h2, h3, h4, h5, h6§ | | html, parsedHtml, virtualHtml | | | image, imageReference | img | | link, linkReference | a | | list | ol, ul | | listItem | li | | paragraph | p | | root | ​**​ | | strong | strong | | table | table | | tableHead | thead | | tableBody | tbody | | tableRow | tr | | tableCell | td, th | | text | | | thematicBreak | hr |

  • ​*​ It’s possible to differentiate between code based on the inline prop. Block code is also wrapped in a pre
  • Resource ([text](url)) and reference ([text][id]) style links and images (and their definitions) are now resolved and treated the same
  • Available when using remark-gfm
  • § It’s possible to differentiate between heading based on the level prop
  • When using rehype-raw (see below), components for those elements can also be used (for example, abbr for <abbr title="HyperText Markup Language">HTML</abbr>)
  • It’s possible to differentiate between lists based on the ordered prop
  • ​**​ Wrap ReactMarkdown in a component instead
</details>

Add rehypePlugins

We’ve added another plugin system: rehype. It’s similar to remark (what we’re using for markdown) but for HTML.

There are many rehype plugins. Some examples are @mapbox/rehype-prism (syntax highlighting with Prism), rehype-katex (rendering math with KaTeX), or rehype-autolink-headings (adding links to headings).

See List of plugins for more plugins.

<details> <summary>Show example of feature</summary>
import rehypeHighlight from 'rehype-highlight'

<Markdown rehypePlugins={[rehypeHighlight]}>{`~~~js
console.log(1)
~~~`}</Markdown>
</details>

Remove buggy HTML in markdown parser

In a lot of cases, you should not use HTML in markdown: it’s most always unsafe. And it defeats much of the purpose of this project (not relying on dangerouslySetInnerHTML).

react-markdown used to have an opt-in HTML parser with a bunch of bugs. As we now support rehype plugins, we can defer that work to a rehype plugin. To support HTML in markdown with react-markdown, use rehype-raw. The astPlugins and allowDangerousHtml (previously called escapeHtml) props are no longer needed and were removed.

When using rehype-raw, you should probably use rehype-sanitize too.

<details> <summary>Show example of needed change</summary>

Before (broken):

import MarkdownWithHtml from 'react-markdown/with-html'

<MarkdownWithHtml>{`# Hello, <i>world</i>!`}</MarkdownWithHtml>

Now (fixed):

import Markdown from 'react-markdown'
import rehypeRaw from 'rehype-raw'
import rehypeSanitize from 'rehype-sanitize'

<Markdown rehypePlugins={[rehypeRaw, rehypeSanitize]}>{`# Hello, <i>world</i>!`}</Markdown>
</details>

Change source to children

Instead of passing a source pass children instead:

<details> <summary>Show example of needed change</summary>

Before (broken):

<Markdown source="some\nmarkdown"></Markdown>

Now (fixed):

<Markdown>{`some
markdown`}</Markdown>

Or (also fixed):

<Markdown children={`some
markdown`} />
</details>

Replace allowNode, allowedTypes, and disallowedTypes

Similar to the renderers to components change, the filtering options also changed from being based on markdown names towards being based on HTML names: allowNode to allowElement, allowedTypes to allowedElements, and disallowedTypes to disallowedElements.

<details> <summary>Show example of needed change</summary>

Before (broken):

<Markdown
  // Skip images
  disallowedTypes={['image']}
>{`![alt text](./image.url)`}</Markdown>

Now (fixed):

<Markdown
  // Skip images
  disallowedElements={['img']}
>{`![alt text](./image.url)`}</Markdown>

Before (broken):

<Markdown
  // Skip h1
  allowNode={(node) => node.type !== 'heading' || node.depth !== 1}
>{`# main heading`}</Markdown>

Now (fixed):

<Markdown
  // Skip h1
  allowElement={(element) => element.tagName !== 'h1'}
>{`# main heading`}</Markdown>
</details>

Change includeNodeIndex to includeElementIndex

Similar to the renderers to components change, this option to pass more info to components also changed from being based on markdown to being based on HTML.

<details> <summary>Show example of needed change</summary>

Before (broken):

<Markdown
  includeNodeIndex={true}
  renderers={{
    paragraph({node, index, parentChildCount, ...props}) => <MyFancyParagraph {...props} />
  }}
>{`Some text`}</Markdown>

Now (fixed):

<Markdown
  includeElementIndex={true}
  components={{
    p({node, index, siblingsCount, ...props}) => <MyFancyParagraph {...props} />
  }}
>{`Some text`}</Markdown>
</details>

Change signature of transformLinkUri, linkTarget

The second parameter of these functions (to rewrite href on a or to define target on a) are now hast (HTML AST) instead of mdast (markdown AST).

Change signature of transformImageUri

The second parameter of this function was always undefined and the fourth was the alt (string) on the image. The second parameter is now that alt.

Remove support for React 15, IE11

We now use ES2015 (such as Object.assign) and removed certain hacks to work with React 15 and older.

wooorm
published 5.0.3 •

Changelog

Source

5.0.3 - 2020-10-23

  • bb0bdde Unlock peer dependency on React to allow v17
  • 24e42bd Fix exception on missing element from html-to-react
  • 3d363e9 Fix umd browser build
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc