Skip to content

Perf: lazy loading et dimensions sur les images inline markdown #689

@lacatoire

Description

@lacatoire

Problème

`src/components/ui/MarkdownContent.tsx` surcharge `a`, `h2`, `h3`, `pre` mais pas `img`. Résultat : les images inline dans les articles MDX (captures d'écran, diagrammes) rendent en `` natif sans `loading="lazy"`, sans dimensions, sans `decoding="async"`.

Conséquences :

  • CLS (Cumulative Layout Shift) sur les articles avec images inline.
  • Chargement eager par défaut → bande passante gaspillée pour les images en bas d'article.
  • Pas de `alt` fallback contrôlé.

Solution

Ajouter un handler `img` dans `MarkdownContent.tsx` (ligne 36) :

```tsx
img({ src, alt, title }) {
if (!src) return null;
return (
<img
src={src}
alt={alt ?? ""}
title={title}
loading="lazy"
decoding="async"
className="rounded-md"
/>
);
},
```

Pour les dimensions : idéalement, passer par `remark-images` ou un plugin qui lit les dimensions réelles du fichier au build time et les injecte. Sans ça, réserver une aspect-ratio par défaut via CSS (`aspect-video` par exemple) pour réduire le CLS.

Lier avec l'issue #XXX (images responsive via srcset) pour unifier l'approche.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions