cover

Syntax Highlighting en 2026: La muerte de Prism y el reinado de Shiki

author photo

Héctorbliss

@hectorbliss

La semana pasada estaba configurando el highlighting de código para un blog y me encontré con un cementerio de librerías. Prism.js, que usé durante años, lleva desde 2022 con su versión 2 "en desarrollo". Highlight.js funciona pero se siente anticuado. ¿Qué pasó? ¿Qué usa la gente en 2026?

Investigué a fondo y esto es lo que encontré.

El problema con las opciones "clásicas"

Prism.js: Abandonado en la práctica

Prism fue el estándar durante años. Ligero, extensible, con plugins para todo. Pero hay un problema: el desarrollo se estancó.

La versión 2.0 lleva años en "beta". Los issues se acumulan. Los PRs no se mergean. El repositorio sigue activo técnicamente, pero la energía se fue.

No significa que no funcione — funciona bien. Pero si empiezas un proyecto nuevo en 2026, ¿para qué elegir algo sin futuro claro?

Highlight.js: Funcional pero básico

Highlight.js sigue mantenido y es sólido. El problema es que se quedó en una era anterior:

  • Temas limitados comparado con el ecosistema de VS Code
  • Sin soporte nativo para cosas modernas como line highlighting
  • La API se siente anticuada

Para proyectos legacy o casos simples, cumple. Para un blog técnico moderno, hay mejores opciones.

El ganador: Shiki

Shiki (木 — "árbol" en japonés) es el highlighter que usa VS Code internamente. Y eso cambia todo.

¿Por qué Shiki domina?

1. Todos los temas de VS Code funcionan

¿Te gusta Dracula? ¿One Dark Pro? ¿GitHub Dark? Si existe en VS Code, funciona en Shiki sin configuración adicional.

2. Highlighting en build-time

Shiki genera HTML con clases CSS en tiempo de compilación. Cero JavaScript en el cliente. Tu blog carga más rápido porque no hay runtime de highlighting.

3. Astro lo usa por defecto

Cuando Astro — uno de los frameworks más populares para blogs — elige Shiki como su highlighter por defecto, es señal de que la industria se movió.

4. Activamente mantenido

La versión 1.0 salió en febrero 2024. El equipo de Nuxt está detrás. Los releases son frecuentes. El ecosistema crece.


🎬 ¿Prefieres ver esto en acción? Tenemos tutoriales de configuración de blogs en nuestro canal de YouTube.


La mejor integración: rehype-pretty-code

Si usas React con markdown (MDX, react-markdown, etc.), la forma más elegante de integrar Shiki es con rehype-pretty-code.

Funcionalidades que vienen gratis

Con rehype-pretty-code obtienes:

  • Line highlighting: Resalta líneas específicas con {1,3-5}
  • Títulos de archivo: Muestra el nombre del archivo sobre el bloque
  • Números de línea: Opcionalmente visibles
  • Diff highlighting: Muestra líneas añadidas/eliminadas
  • Word highlighting: Resalta palabras específicas dentro del código

Todo esto sin JavaScript adicional en el cliente.

Comparativa rápida

CaracterísticaPrismHighlight.jsShiki
Mantenimiento activo⚠️ Estancado✅ Sí✅ Muy activo
Temas de VS Code✅ Todos
Build-timeCon pluginsCon plugins✅ Nativo
Line highlightingCon plugin✅ Con rehype-pretty-code
Bundle size cliente~15kb~30kb0kb (build-time)
Usado porLegacyLegacyAstro, VitePress, Nuxt

Demo: Componente completo para tu blog

Aquí está un componente listo para usar en React Router o Next.js. Copia, pega y funciona.

1. Instala las dependencias

2. Crea el componente de Markdown

3. CSS para el highlighting

4. Úsalo en tu ruta

5. Sintaxis especial en tu markdown

Una vez configurado, puedes usar estas funcionalidades en tus posts:

  • title="..." → Muestra el nombre del archivo arriba del bloque
  • {3-5} → Resalta las líneas 3, 4 y 5
  • showLineNumbers → Muestra números de línea

El resultado

Con esta configuración obtienes:

  • ✅ Highlighting idéntico a VS Code
  • ✅ Cero JavaScript en el cliente (todo se procesa en el servidor)
  • ✅ Soporte para 100+ lenguajes
  • ✅ Line highlighting para tutoriales
  • ✅ Títulos de archivo para contexto
  • ✅ Dark mode que se ve profesional

Lo que NO funcionó

Probé react-syntax-highlighter que internamente puede usar Prism o Highlight.js. El problema: añade JavaScript al cliente y los temas son limitados.

También probé Streamdown para blogs estáticos — error. Está diseñado para streaming de chat con IA, no para renderizar markdown estático. Los estilos dan problemas porque no es su caso de uso.

Mi recomendación

Para blogs y documentación en 2026:

  1. Usa Shiki directamente o a través de rehype-pretty-code
  2. Elige un tema de VS Code que te guste (yo uso github-dark)
  3. Procesa en build-time para cero JS en el cliente

Si estás en Astro o VitePress, ya viene configurado. Si usas React Router, Next.js o similar, integra rehype-pretty-code con tu pipeline de markdown.

El futuro

Shiki sigue evolucionando. Recientemente añadieron soporte para "dual themes" (claro/oscuro automático) y mejor integración con frameworks modernos.

Mientras Prism se queda atrás y Highlight.js se mantiene en modo supervivencia, Shiki está donde está la innovación.

La decisión es simple: si empiezas algo nuevo, usa Shiki.

Abrazo. bliss.

meta cover

Cómo crear un recortador de imagen de perfil con Fabric.js

Checa este otro Post

meta cover

Estos 3 React anti-patterns en los que podrías estar cayendo

Checa este otro Post

¡Nuevo curso!

Animaciones web con React + Motion 🧙🏻