Retour au glossaire

Radix UI

Bibliothèque de composants React headless accessible et non stylisés, offrant des primitives UI robustes pour construire des design systems personnalisés.

Révisé par Lucien Arbieu, cofondateur de PeakLab · Mis à jour le 30 mars 2026

Radix UI est une bibliothèque open-source de composants React headless conçue pour créer des interfaces utilisateur accessibles et de haute qualité. Contrairement aux bibliothèques UI traditionnelles, Radix UI fournit des primitives non stylisées qui gèrent la logique complexe d'accessibilité, les interactions clavier, la gestion du focus et les comportements ARIA, tout en laissant le contrôle total du design visuel aux développeurs. Cette approche headless permet une personnalisation complète sans compromis sur l'accessibilité.

Fondements de Radix UI

  • Architecture headless séparant totalement la logique comportementale du style visuel
  • Conformité stricte aux standards WAI-ARIA avec support complet du clavier et des lecteurs d'écran
  • Composants modulaires composables permettant de créer des patterns UI complexes
  • API déclarative avec composition via des sous-composants React intuitifs

Avantages stratégiques

  • Accessibilité native garantie sans effort supplémentaire de développement
  • Liberté totale de design permettant l'alignement parfait avec l'identité de marque
  • Réduction significative du code boilerplate pour les interactions complexes (modals, dropdowns, tooltips)
  • Compatibilité optimale avec CSS-in-JS, Tailwind CSS, ou tout autre système de styling
  • Bundle size minimal grâce à la modularité et au tree-shaking
  • Maintenance réduite en déléguant la complexité comportementale à des primitives éprouvées

Exemple concret : Dialog accessible

CustomDialog.tsx
import * as Dialog from '@radix-ui/react-dialog';
import './dialog.css';

export function CustomDialog() {
  return (
    <Dialog.Root>
      <Dialog.Trigger asChild>
        <button className="btn-primary">
          Ouvrir le dialogue
        </button>
      </Dialog.Trigger>
      
      <Dialog.Portal>
        <Dialog.Overlay className="dialog-overlay" />
        <Dialog.Content className="dialog-content">
          <Dialog.Title className="dialog-title">
            Confirmer l'action
          </Dialog.Title>
          <Dialog.Description className="dialog-description">
            Cette action est irréversible. Voulez-vous continuer ?
          </Dialog.Description>
          
          <div className="dialog-actions">
            <Dialog.Close asChild>
              <button className="btn-secondary">Annuler</button>
            </Dialog.Close>
            <button className="btn-danger">Confirmer</button>
          </div>
          
          <Dialog.Close asChild>
            <button className="dialog-close" aria-label="Fermer">
              ×
            </button>
          </Dialog.Close>
        </Dialog.Content>
      </Dialog.Portal>
    </Dialog.Root>
  );
}

Cet exemple démontre comment Radix UI gère automatiquement le focus trap, la fermeture au clavier (Escape), le scroll lock, et tous les attributs ARIA nécessaires, pendant que vous conservez le contrôle total du style via vos propres classes CSS.

Mise en œuvre dans un projet

  1. Installer les primitives nécessaires via npm (packages individuels pour optimisation) : npm install @radix-ui/react-dialog @radix-ui/react-dropdown-menu
  2. Créer vos composants wrapper en important les primitives Radix et en appliquant votre système de styling
  3. Définir les styles visuels avec votre méthode préférée (CSS modules, Tailwind, styled-components)
  4. Tester l'accessibilité avec des outils comme axe DevTools et navigation clavier
  5. Documenter les patterns créés pour standardiser l'usage dans l'équipe
  6. Itérer progressivement en remplaçant les composants custom existants par des versions basées sur Radix

Conseil Pro

Combinez Radix UI avec Tailwind CSS et CVA (Class Variance Authority) pour créer un design system puissant : Radix gère le comportement et l'accessibilité, Tailwind fournit les utilities CSS, et CVA permet de gérer élégamment les variantes de composants. Cette stack offre le meilleur équilibre entre DX, performance et maintenabilité.

Outils et écosystème associés

  • Shadcn UI - collection de composants préconstruits basés sur Radix UI et Tailwind
  • Stitches - CSS-in-JS développé par l'équipe Radix pour styling performant
  • React Aria (Adobe) - alternative headless avec approche hooks
  • Headless UI (Tailwind Labs) - bibliothèque similaire pour React et Vue
  • Zag.js - state machines pour composants UI headless framework-agnostic

Radix UI représente un investissement stratégique pour les équipes souhaitant construire des interfaces accessibles et personnalisées sans réinventer la roue. En externalisant la complexité comportementale tout en gardant le contrôle du design, vous accélérez le développement, réduisez la dette technique liée à l'accessibilité, et créez une base solide pour votre design system évolutif. La popularité croissante de Radix dans l'écosystème React, notamment via Shadcn UI, confirme sa pertinence pour les applications modernes exigeantes.

Comment PeakLab utilise Radix UI ?

Chez PeakLab, le design produit précède le code : recherche utilisateur, prototypes testés, design system. C'est ce qui fait la différence entre une interface qui convertit et une interface qui se visite.

Pour passer à la pratique : notre agence UX/UI et product design.

Parlons de votre projet

Besoin d'expertise sur le sujet ?

Nos experts vous accompagnent de la stratégie à la mise en production. Échangeons 30 min sur votre projet.

Termes connexes

Votre projet mérite des fondations à la hauteur.

En un appel, on vous dit ce qui est faisable, à quel prix, et dans quel délai. En toute transparence.

Agence de développement web, automatisation & IA

[email protected]
Newsletter

Recevez nos conseils tech et business directement dans votre boîte mail.

Suivez-nous
Crédit d'Impôt Innovation - PeakLab agréé CII