Comparing Vue Component Documentation tools
Tags: vue, storybook, component, library
Published: 2024-06-09 04:39:30

This article will compare 3 different tools for documenting and demoing Vue components.

* **Vue-Doxen** - The new hotness
* **Vue Styleguidist** - The old thing the community mostly ignored
* **Storybook** - The thing everyone has heard of, but no one really likes


![Vue-doxen Logo](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kf5bo01g8cew28h5evqv.png)

<h3>Vue-Doxen</h3>

<a href="https://TheJaredWilcurt.com/vue-doxen">Vue-Doxen Website</a>

<ul>
  <li>
    <strong>Built using:</strong>
    Glorius, Superior, Vue.js
  </li>
  <li>
    <strong>Aimed at:</strong>
    Anyone using Vue 3 for anything (component libraries, webapps, websites, whatever).
  </li>
  <li>
    <strong>Logo</strong>
    It's a little doggy! Also feautres a stretched dropshadow reminiscent of the 1970's aesthetic revival of the early 2000's, with a Western-esque slab font. But I mean, look at that dog though!
  </li>
  <li>
    <strong>Future:</strong>
    Fully open source and community driven. Importantly, most features can be handled by the broader Vue community/ecosystem since "it's just a Vue component".
  </li>
  <li>
    <strong>Documentation</strong>
    Great! Vue-Doxen practices "Documentation Driven Development". This means every new feature is documented first, which requires designing the API, and ensuring the API is as simple as possible to use, and therefor document. Once the feature is fully documented, it is implemented in the library. Any time a feature is changed, it is changed in the documentation first. This keeps the docs and code always in sync.
  </li>
  <li>
    <strong>Interactive Component Demos</strong>
    Yes. By just passing in your Vue component a props playground will be auto-generated on the fly including different controls for different prop types. It even supports using your own custom components for these prop controls as one-offs, or globally replacing what Vue-Doxen ships with.
  </li>

  <li>
    <strong>Can turn off their CSS?</strong>
    Yes! All styles are optional and customizable.
  </li>
</ul>


![Vue Styleguidist logo](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ghscvtpyhwoiwjhuivr1.png)

<h3>Vue Styleguidist</h3>

<a href="https://vue-styleguidist.github.io">Vue Styleguidist Website</a>

<ul>
  <li>
    <strong>Built using:</strong>
    Gross, pathetic, React and JSX
  </li>
  <li>
    <strong>Aimed at:</strong>
    Vue 2 users via Vue-CLI (Webpack) plugin. (But also works with Vue 3 + Vite)
  </li>
  <li>
    <strong>Logo</strong>
    They have the best logo in the entire Vue ecosystem. Respect.
  </li>
  <li>
    <strong>Future:</strong>
    Seems very limited. The maintainers have stated that many features and improvements they'd like to implement would require a total re-write to move away from React, but that would be an amount of effort too high to justify for such little usage the library gets. Let this be a lesson to everyone. Never use React for anything under any circumstance.
  </li>
  <li>
    <strong>Documentation:</strong>
    Very good. They have a ton of documentation and examples, everything is well written and easy to find.
  </li>
  <li>
    <strong>Interactive Component Demos</strong>
    Kind of. They expect you to create many tiny demos of the component with different prop setups. However the code is right under the demo and it is editable, so you can type whatever you want into the prop. This works fine for simple components where the props are mostly just strings, but struggles on more complex scenarios.
  </li>
  <li>
    <strong>Can turn off their CSS?</strong>
    Nope, and it can interfere with your component's styles.
  </li>
</ul>


![Storybook logo](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/se7fsdhqw17pt3d7wa5u.png)

<h3>Storybook</h3>

<a href="https://storybook.js.org">Storybook Website</a>

<ul>
  <li>
    <strong>Built using:</strong>
    Disgusting, low IQ, React and JSX
  </li>
  <li>
    <strong>Aimed at:</strong>
    <blockquote>
      <em>
        "React developers building a component library, and if that's not you, it's kind of a black hole of suffering"
      </em>
      <br>
      - <a href="https://www.youtube.com/live/8117-JmjgOA?t=2h39m13s" target="_blank"><cite>Michael Chan</cite>, AKA Chantastic</a>, YouTuber known for making many <a href="https://www.youtube.com/@chromaticui/videos" target="_blank" rel="nofollow">Storybook tutorial videos</a>.
    </blockquote>
  </li>
  <li>
    <strong>Logo</strong>
    It's just an S on a pink rectangle that is supposed to look like a book. It's not bad. A little boring. Doesn't have an animal at all, not sure what they were thinking.
  </li>
  <li>
    <strong>Future:</strong>
    Bad profit incentives will continue to lead to constant development and releases for features no one cares about, while the core feature of documenting and demoing components remains pretty bad and never gets improved. More and more focus on making nothing work with it unless it is a custom built plugin to lock people into "their ecosystem".
  </li>
  <li>
    <strong>Documentation:</strong>
    Some of the worst I've ever seen. Trying to do just basic stuff is a constant pain. Everything you want to find on their docs takes a minimum of 75 minutes of research, and that's even if it's there at all, which it just may not be. Truly awful. Abysmal.
  </li>
  <li>
    <strong>Can turn off their CSS?</strong>
    Nope, and it will interfere with your component's styles.
  </li>
  <li>
    <strong>Interactive Component Demos</strong>
    Yes. Their props can have controls to interact with the component in real time. The documentation around this is terrible, and they call a prop control <em>"a knob"</em>, which is also slang for <a href="https://www.urbandictionary.com/define.php?term=Knob">"a penis or a dumb-ass"</a>.
  </li>
  <li>
    <strong>Would they kick a dog?</strong>
    Yes. They are actually evil. When looking into how to set up Storybook for the first time, I found out, after 90 minutes of trying, there was no way to turn off their spyware without installing it first, and letting it spy on you <em>at least once</em>. AND THEN you can """"opt-out"""" through an obscure setting in a random file. This is just straight up fucking evil. Fuck these people. You don't end up in this situation on accident. Fuck them. Honestly don't know how they haven't been sued over this. They do not respect you. They do not respect your privacy. Their product is bad. Fuck them.
  </li>
</ul>

And thus concludes this entirely unbiased comparison.