Oui, c'est une excellente stratégie technique. Partir de Shepherd.js (ou de sa sous-couche de positionnement Floating UI ) vous évitera de réinventer la roue sur la partie la plus complexe du SDK : la gestion du positionnement, du scroll, des événements clavier/toucher et de la mise en surbrillance.
Voici un état des lieux pour structurer votre approche :
1. Pourquoi Shepherd.js est un très bon choix
- Maturité et robustesse : Shepherd.js est une librairie open-source très stable, sans dépendance lourde, nativement compatible avec les Single Page Applications (React, Vue, Angular, Svelte, JS vanilla).
- Gestion du Spotlight & Overlay : Il gère déjà le découpage visuel ( smooth scrolling , assombrissement de l'arrière-plan, mise en avant de l'élément cible).
- Architecture modulaire : Il s'appuie sur @floating-ui/dom (ex-Popper.js) pour calculer au pixel près la position des infobulles, même lors du redimensionnement de la fenêtre.
2. Ce qu'il vous reste à développer (Votre surcouche SaaS)
Shepherd.js n'est qu'un moteur d'affichage . Pour le transformer en produit SaaS complet, vous devrez construire les couches supérieures :
┌─────────────────────────────────────────────────────────┐
│ Votre Surcouche SaaS (Ce que vous devez coder) │
│ ├── Loader / Fetcher de scénarios JSON depuis votre CDN│
│ ├── Moteur de sélecteurs résilients (CSS + Fallbacks) │
│ ├── Encapsulation dans un Shadow DOM (Isolation CSS) │
│ ├── Moteur de Branching (Questions / Réponses) │
│ └── Telemetry / Analytics Engine (Beacon API) │
└──────────────────────────┬──────────────────────────────┘
│ Utilise comme moteur d'UI
▼
┌─────────────────────────────────────────────────────────┐
│ Shepherd.js Engine (Open Source) │
│ └── Gestion du Spotlight, Positionnement & Tooltip UI │
└─────────────────────────────────────────────────────────┘
3. Les 3 points d'attention avec Shepherd.js
A. L'isolation CSS (Shadow DOM)
Par défaut, Shepherd.js injecte ses styles et classes CSS (.shepherd-element, .shepherd-target) directement dans le du site client.
- Ce qu'il faut faire : Envelopper les conteneurs de Shepherd.js à l'intérieur de votre propre Shadow DOM pour éviter que le CSS du site client ne vienne déformer les bulles d'aide ou altérer les boutons.
B. Le format de scénario dynamique (JSON)
Shepherd.js s'instancie habituellement en code JS impératif (tour.addStep(...)).
- Ce qu'il faut faire : Écrire un interpréteur JSON -> Shepherd . Votre extension Chrome génèrera un fichier JSON (les étapes), et votre SDK lira ce JSON pour appeler dynamiquement l'API de Shepherd.js.
C. La résilience des sélecteurs (Auto-healing)
Shepherd.js prend un simple sélecteur CSS string (ex: attachTo: { element: '#submit-btn' }).
- Ce qu'il faut faire : Avant de passer le sélecteur à Shepherd, votre surcouche doit vérifier si l'élément existe. S'il a changé de classe ou d'ID, votre script cherche les fallbacks (attributs ARIA, texte du bouton) puis transmet le nœud DOM trouvé à Shepherd.
4. Bilan : Le gain de temps pour le MVP
En utilisant Shepherd.js comme moteur UI :
- Temps de dev économisé sur le SDK : ~60% (toute la logique mathématique de positionnement et de masque est offerte).
- Focus principal : Vous concentrez 80% de vos efforts sur l' Extension Chrome No-Code (l'inspecteur visuel) et le Moteur de Branching JSON , qui constituent la réelle valeur commerciale de votre produit.