This uses remark-react
under the hood, so it does not use dangerouslySetInnerHTML, which means
it doesn't do any innerHTML and has a smaller surface for security vulnerabilities
than other approaches: its HTML output is guided by React's strict rules.