iq2i/storia-bundle
A Symfony bundle for integrating Storia into PHP applications. It provides the service wiring and configuration needed to enable Storia features in a Symfony project, so you can install via Composer, register the bundle, and start using it without building custom integration code.
storia:test, HTML snapshot comparison, and PHPUnit integration (StoriaVariants, StoriaTestCaseTrait). That changes the question from "do we buy a component gallery?" to "do we buy a gallery and a visual-regression harness?" — a materially bigger scope than 0.5.0 offered, and one that overlaps with snapshot-testing vendors.storia:export generates a static catalog site with assets. This unlocks publishing component docs to an internal static host (or per-PR preview) without running a Symfony app in production. Directly relevant if the roadmap includes "design system documentation" as a deliverable rather than a side effect of dev tooling.storia:list / storia:render commands, a skills/ui-storia agent skill, and Symfony Mate tools mean the catalog is now machine-readable. This is a real input to the "how do we give coding agents grounded UI context?" decision — a cheap way to let agents enumerate and render real component variants instead of guessing at markup.!data, !repeat, !lorem, PHP data providers) reduce the manual effort of covering states/variants. This supports a decision to standardize variant coverage as a QA gate, at the cost of one more thing to maintain.symfony/form and symfony/ux-twig-component are now optional: the bundle compiles without them, and only the matching view types go dark. For a Laravel-first or minimal-Symfony team, the integration surface to evaluate is now smaller than the 0.5.0 assessment assumed.storia/ folder is documented as code. This removes a class of "internal tool executes user-ish input" objections — relevant if the catalog is ever exposed beyond a laptop.Consider it when:
kernel.debug is true, so non-debug environments require an explicit iq2i_storia.enabled: true.storia:list / storia:render rather than hallucinating markup.!repeat, !lorem, PHP providers) to make variant coverage tractable across teams.Look elsewhere when:
symfony/form / ux-twig-component dependencies make it lighter, not Laravel-shaped.options precedence reversal will each break existing catalogs.Executive summary: iq2i/storia-bundle 0.6.0 grows from a lightweight PHP/Twig component catalog into a three-part tool: a local preview UI, a static documentation exporter, and a variant snapshot-testing harness with commands that coding agents can call. That breadth makes it worth a short, reversible evaluation — but it is still an early-stage, Symfony-flavored, MIT-licensed project with no support commitment, and the upgrade from the prior version is breaking. Recommendation: evaluate, don't standardize.
Engineering framing: Low integration cost for a Symfony/Twig codebase, and lower than before — symfony/form and symfony/ux-twig-component are now optional. The interesting new capability is storia:test with HTML snapshots and a PHPUnit trait, which turns variant coverage into something CI can enforce; storia:export gives us static docs without running the bundle outside debug. Two things to flag: Storia is now off by default outside kernel.debug, and the iq2i_storia_menu() Twig function is gone because the bundle builds the sidebar — both will break any 0.5.x trial. Security posture improved (data-provider values no longer compiled as Twig, CSRF disabled in form previews for stable snapshots), which matters if this ever leaves a laptop. Vendor or fork to de-risk maintenance.
Decision requested: Approve a bounded spike (days, not sprints) in a non-critical repo covering three things: (1) does the catalog actually get used by design/QA, (2) does storia:test give us snapshot coverage cheaply enough to adopt, and (3) does storia:export remove the "who hosts the docs?" blocker. If any of the three lands, reopen build-vs-buy against Storybook/Fractal — the release now ships its own comparison docs, which makes that conversation cheaper to have. If none land, we've spent days and learned where our component-documentation gap actually is.
How can I help you explore Laravel packages today?