Aprende qué es MDX, cómo combina Markdown con componentes JSX de React, cuándo conviene usarlo y qué versiones existen.
MDX es un formato que permite combinar Markdown con componentes JSX de React dentro del mismo documento. La idea es sencilla: aprovechas la rapidez de Markdown para redactar el texto y, cuando necesitas algo más sofisticado (un gráfico, un formulario, un componente animado), insertas un componente de React sin salir del archivo.
Esta misma web está escrita en MDX. Cada página que ves en tutorialmarkdown.com es un archivo .mdx que mezcla la prosa habitual con componentes propios como editores interactivos, tarjetas y tablas dinámicas. Si nunca habías visto cómo encaja Markdown con un framework moderno, esta es la combinación que probablemente ya estás usando sin saberlo.
MDX es una extensión de Markdown que añade tres capacidades nuevas: la posibilidad de importar componentes de cualquier librería de React, la posibilidad de renderizar esos componentes en línea dentro del documento y la posibilidad de exportar datos desde el propio archivo para que otros módulos los consuman.
Un archivo .mdx se parece a un .md corriente, pero el procesador lo trata como un componente de React que se monta en el árbol de la aplicación. Así, los párrafos, listas y enlaces se convierten en HTML como en cualquier procesador, pero las etiquetas JSX se ejecutan como código real:
import { Grafico } from '../components/Grafico'
Este es un párrafo normal escrito en Markdown.
<Grafico datos={[1, 2, 3, 4, 5]} color="purple" />
Y aquí sigue más texto en Markdown, con un [enlace interno](/sintaxis) o **texto en negrita**.Al renderizarse, el procesador convierte los párrafos y enlaces en HTML estándar, y el <Grafico> se ejecuta como cualquier otro componente de React, recibiendo sus props y manteniendo el estado interno si lo tuviera.
A continuación verás las tres capacidades fundamentales de MDX con ejemplos concretos.
La sintaxis de importación es idéntica a la de JavaScript moderno. Las importaciones se sitúan en la parte superior del archivo, antes de cualquier contenido Markdown.
import { MiComponente } from '../components/MiComponente'
import Layout from '../layouts/Layout'Puedes importar tanto componentes propios como de librerías externas, e incluso utilidades que no sean componentes (funciones, constantes, hojas de estilo, etc.).
Una vez importado, el componente se utiliza con la misma sintaxis JSX que en un componente de React. Puede ir intercalado con el resto del contenido Markdown, en línea o como bloque.
# Título del artículo
Texto narrativo en Markdown.
<MiComponente prop="valor" activo={true} />
Más texto que sigue al componente, sin perder el formato Markdown.Si necesitas pasar contenido Markdown como hijos del componente, deja una línea en blanco después de la etiqueta de apertura y antes de la de cierre. El procesador interpretará entonces el contenido interno como Markdown en lugar de como texto plano.
Los archivos .mdx también pueden exportar valores que otros módulos del proyecto consumirán. El uso más típico es exportar metadatos (título, fecha, autor) que luego un sistema de plantillas utilizará para componer la página.
const meta = {
titulo: 'Mi artículo',
fecha: '2026-05-12',
autor: 'Edu'
}
# {meta.titulo}
Publicado por {meta.autor} el {meta.fecha}.Fíjate en cómo se interpolan los valores dentro del Markdown con la sintaxis { } propia de JSX.
Estas son las razones más habituales para escoger MDX frente a Markdown plano:
export cuando necesitas algo más programático.MDX brilla cuando estás construyendo un sitio web con un framework moderno y quieres mezclar contenido estático con elementos dinámicos. Es la opción habitual en:
En cambio, si lo que buscas es un formato portable que funcione fuera de un proyecto React, MDX no es la opción adecuada. En esos casos lo natural es ceñirse a CommonMark, GFM o, si necesitas funcionalidades editoriales, Pandoc Markdown.
Es importante saber que MDX no es una única especificación, sino que ha evolucionado a lo largo del tiempo:
Si trabajas con un proyecto antiguo en MDX 1, ten presente que la migración a MDX 2 o 3 requiere ajustar la sintaxis en bastantes archivos, sobre todo en las mezclas de HTML y Markdown.
Los frameworks y herramientas con soporte de MDX son cada vez más numerosos. Estos son los más utilizados en la actualidad:
@next/mdx. Es la combinación que utiliza esta web.@astrojs/mdx. Es probablemente la opción más cómoda en 2026 para sitios estáticos con contenido.gatsby-plugin-mdx. En decadencia, pero todavía con base instalada.@mdx-js/rollup.MDX no es la respuesta universal. Antes de adoptarlo en un proyecto conviene considerar algunos puntos:
.mdx no se renderizará en GitHub, en un editor de texto plano o en una plataforma de Markdown estándar..md y verlo renderizado al instante.Si estos puntos te frenan, valora si en realidad necesitas shortcodes o extensiones de Markdown menos invasivas antes de pasar a MDX.
👋 Hola! Soy Edu, me encanta crear cosas y he redactado este tutorial. Si te ha resultado útil, el mayor favor que me podrías hacer es el de compatirlo en Twitter.
Sígueme en Twitter para estar al día con mi contenido. 😊