Markdown: HTML inside code blocks and inline code isn't escaped
Los mantenedores suelen responder en 1 día
@KishanKanejiya23 ya está trabajando en esto.
Desde el 28/10/2026.
- #3823 de @KishanKanejiya23 — abierto
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 88/100
- Tipo de issue
- Error
- Claridad
- Bien especificado
- Estado de actividad
- Activo
- Stack tecnológico
- markdown, react, typescript
- Área
- frontend
Línea de trabajo
Empieza en markdown.tsx y busca los renderizadores de code y codespan; el issue indica que ambos insertan texto sin escapar. Lee las pruebas existentes del componente Markdown y añade un caso para HTML en bloques de código con vallas y en código en línea. Se considera terminado cuando ambos se muestran como texto escapado, de acuerdo con la salida esperada en el issue.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
What versions are you using? (if relevant)
[email protected] (also on canary), [email protected], [email protected]
Describe the Bug
<Markdown> doesn't escape what's inside code blocks and inline code. If a fenced block or a code span contains HTML, the tags go into the email as real HTML, so a code sample showing <b>bold</b> comes out as bold text instead of the snippet.
The code and codespan renderers in markdown.tsx insert text as is, while marked's own renderers escape it.
What is affected (leave empty if unsure)
Markdown Component
Link to the code that reproduces this issue
The repro is short, so it's inline under To Reproduce. It only needs [email protected], [email protected] and [email protected].
To Reproduce
Save this as check.mjs and run it with node:
import { createElement as h } from 'react';
import { renderToStaticMarkup } from 'react-dom/server';
import { Markdown } from 'react-email';
const md = '```html\n<b>bold</b> & <i>x</i>\n```\n\nInline: `<br>`';
console.log(renderToStaticMarkup(h(Markdown, null, md)).replace(/ style="[^"]*"/g, ''));
With the inline styles stripped, the output contains <pre><code><b>bold</b> & <i>x</i> and <p>Inline: <code><br></code></p>.
Expected Behavior
The code gets escaped, the way marked's default renderer does it: <b>bold</b> & <i>x</i> and <code><br></code>.
I'd like to send a PR for this with a test, if that's okay.
What's your node version? (if relevant)
26.7.0
- Lenguaje dominante
- TypeScript
- Estrellas
- 19.9k
- Forks
- 1.1k
- Merge medio
- 1 d 15 h
- PR fusionados (30 d)
- 49
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de resend/react-email
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
resend/react-email#3876 ·
Los mantenedores suelen responder en 1 día
-
render: unstableTextConversion outputs HTML comments and repeats link URLs in plain textPosiblemente ocupada @lakshya-dhariwal la tomó hace 1 día. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 87/100
resend/react-email#3864 ·
Los mantenedores suelen responder en 1 día
-
<CodeInline> causes duplicated text in body previews in Gmail and other providers due to hacky Orange.fr workaroundPosiblemente ocupada Un pull request vinculado a esta issue está abierto o ya se fusionó. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
resend/react-email#3853 ·
Los mantenedores suelen responder en 1 día
-
Tailwind stacked media variants leave nested CSS in rendered emailsPosiblemente ocupada @lakshya-dhariwal la tomó hoy. Abierto
Dificultad 3/5 1-2 días Aptitud para principiantes 35/100
resend/react-email#3874 ·
Los mantenedores suelen responder en 1 día
-
Inspector Text panel omits Uppercase mark toggle (MARK_NAMES missing "uppercase")Posiblemente ocupada @svargas-dev la tomó hace 6 días. Abierto
Dificultad 1/5 Menos de una hora Aptitud para principiantes 22/100
resend/react-email#3849 ·
Los mantenedores suelen responder en 1 día
Todos los issues de resend/react-email
Issues similares
-
documentation good first issue roadmap
Dificultad 1/5 1-3 horas Aptitud para principiantes 68/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
siyuan-note/siyuan#21324 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 74/100
dmno-dev/varlock#1279 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
himynameisdave/bsky-profanity-counter#59 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100