Guida pratica all'uso di Storybook: dalla creazione al test di interfacce modulari e documentate.
Nel moderno sviluppo front-end, la modularità è la chiave. Costruire componenti riutilizzabili, documentati e testabili è diventato essenziale per garantire scalabilità, manutenibilità e collaborazione efficace tra team.
In questo contesto, Storybook è uno strumento imprescindibile: una sandbox interattiva per costruire e documentare UI component in isolamento, con supporto nativo a test visivi, accessibility check e integrazione con framework come React, Vue, Angular e Svelte.
Storybook è un ambiente di sviluppo open-source che consente di visualizzare, testare e documentare i componenti UI in isolamento dal contesto dell'applicazione.
Questo consente ai designer, sviluppatori e stakeholder di interagire con ogni singolo componente come se fosse un micro-prodotto autonomo.
Per iniziare, supponiamo di avere un progetto React già configurato con Vite o Create React App. Ecco come aggiungere Storybook:
npx storybook@latest init
Questo comando configura automaticamente la struttura delle storie (*.stories.jsx|ts|tsx) e aggiunge gli script necessari nel package.json.
Una volta avviato Storybook (npm run storybook), vedrai un’interfaccia grafica nel browser con una sidebar navigabile e i componenti interattivi.
Supponiamo di avere un semplice bottone:
// Button.jsx export const Button = ({ label, onClick }) => ( );
La relativa storia sarà:
// Button.stories.jsx import { Button } from './Button'; export default { title: 'UI/Button', component: Button, }; export const Primary = () =>
Ogni export rappresenta una “storia”, ovvero una variante visualizzabile del componente. Puoi usarle per descrivere tutti gli stati possibili di quel componente: Loading, Disabled, WithIcon, Danger, ecc.
Storybook genera automaticamente una documentazione leggibile per ogni componente usando i metadata forniti (argTypes, JSDoc, TypeScript).
Con l’addon Docs puoi ottenere un’interfaccia simile a quella di un Design System, con esempi interattivi, prop tables e tipizzazione.
npm install @storybook/addon-docs
E nel tuo main.js:
addons: ['@storybook/addon-docs']
Chromatic (realizzato dagli stessi autori di Storybook) permette di eseguire snapshot visivi e controlli di regressione visuale direttamente su CI.
Con @storybook/testing-library puoi simulare click, hover, input e altri eventi:
export const Clickable = { args: { label: 'Click me' }, play: async ({ canvasElement }) => { const canvas = within(canvasElement); await userEvent.click(canvas.getByText('Click me')); expect(someMockFunction).toHaveBeenCalled(); }, };
Con l’addon @storybook/addon-a11y puoi verificare problemi di accessibilità in tempo reale:
npm install @storybook/addon-a11y
Storybook è potente, ma per ottenere il massimo è fondamentale seguire alcune best practice consolidate nella community. Ecco le più importanti, con esempi consultabili online.
Usa una gerarchia chiara nei titoli delle storie (title) per riflettere la struttura del tuo design system o dell’interfaccia.
export default { title: 'Form/Inputs/TextField', component: TextField, };
Esempio reale: Storybook di Adobe Spectrum
Ben organizzato, con categorie chiare e documentazione approfondita.
Usa args per rendere i componenti interattivi e configurabili direttamente dal pannello Storybook, riducendo il codice ripetitivo.
export const Default = { args: { label: 'Invia', disabled: false, }, };
Esempio reale: Chakra UI Storybook
Ogni componente è dimostrato con args interattivi e use case chiari.
La documentazione automatica diventa più utile quando le props sono descritte accuratamente. Usa commenti JSDoc o tipizzazione TypeScript.
/** * Pulsante principale dell’interfaccia. * @param label Etichetta visualizzata. * @param onClick Callback al click. */ export const Button = ({ label, onClick }: ButtonProps) => ...
Esempio reale: Shopify Polaris Storybook
Una documentazione impeccabile e tipizzata.
Esempio reale: Carbon Design System by IBM
Con test di accessibilità e stories per ogni stato del componente.
Storybook non è solo uno strumento di sviluppo: può diventare parte del tuo pipeline di delivery, usando tool come Chromatic o GitHub Actions per pubblicare la documentazione aggiornata ad ogni PR.
Guida utile: Deploy Storybook with GitHub Actions
In un contesto professionale, Storybook può diventare un asset strategico:
Puoi anche deployare automaticamente la tua documentazione con GitHub Pages, Vercel o Netlify.
Se stai costruendo un progetto moderno in React, Vue o qualsiasi altro framework basato su componenti, Storybook è il tuo alleato naturale. Una base solida per un design system ben fatto, una documentazione viva e una UI più affidabile.
Con l’aiuto del team Unitiva, puoi: