Skip to content

πŸ€ΉπŸ»β€β™‚οΈ Framework stability in Vue Ecosystem & my visionΒ #222

Open
@jd-solanki

Description

@jd-solanki

Hi πŸ‘‹πŸ»

I have something to share and I guess you are related to this thing as well.

I'm JD, Author of Vue UI framework Anu. You can read why I created Anu here. After Nuxt UI get released (it was nice lib and can fulfill what I was trying to do with Anu) and due to full time job burden I wasn't able to work on Anu as expected at the start.

I'm writing this because I recently realized few stuff I written below and anu reached the 970+ stars which I thought it won't after taking a break from it.

We don't need 10 frameworks that does the same thing differently but 1 framework that does things accurately

The Problems

  1. After doing some wild work I found still Vue UI frameworks are not satisfying to me. Every UI framework has its pros and cons. For example,

    • Vuetify there's regular breaking changes and not enough (easy) customization options compared to new options like radix & nuxt UI.
    • Nuxt UI is nice with flexbility but still you don't have flexibility with how content gets rendered in DOM. E.g. You can't have custom structure for alert component you just pass the props and DOM structure will get rendered. In some case if you want to add badge after title then I guess there's no slot and even if they provide it's practically impossible to provide slot for each customization stuff like before-title, after title, etc.
    • Shadc Vue this is next level but still it has low level code where for just alert with title & desc I have to write 6-7 lines of code as I attached in image
      image
  2. UI frameworks are not stable with their API because we don't have any guidelines on how we should name our props and what slots we should provide as a framework. This makes framework to introduce new API changes as they evolve and author's mind/vision changes. E.g. Vuetify calls alert detail prop "text" where nuxt UI call it "description" etc. Vuetify made data-table slot name changes recently that broke our existing app and had to rename slots everywhere.

  3. (it might look similar to 2nd point) Years passes and framework changes but project stays the same. After project get finished and you wish to upgrade deps to latest after a year or two, framework that project relies on changes few stuff making framework not future proof and we have to carefully upgrade to latest version using release notes.

The Solutions

  1. I would like to work on high level UI lib that is based on radix vue that provides API like nuxt UI for building quick interfaces but still allow accessing low level components of radix vue. For example, for regular alert user will pass prop title & desc just like nuxt UI but if someone wants the more flexibility like rendering badge after title then user can use low level components like shadcn AlertTitle & AlertDescription. This way, user will have full flexibility with style & structure.
  2. We'll create framework guidelines on how framework should be designed and we'll follow it for our UI framework. Similar to Vue Style Guide but for frameworks
    • naming props, slots, etc. For example, boolean props should prefix with is, should, etc.
    • what props and slots should be provided by framework's specific component
  3. As we follow the framework guidelines we'll keep the prop names consistent across the releases and introduce soft deprecations if necessary to make framework as stable as possible and timeless.

The Conclusion

  • I'll be honest with you. Maintaining OSS work is hard when you are busy so if I ever start this big thing I wont able to do it alone with my limited time and knowledge.
  • I'm not going to work on OSS in far future but still want this great thing to exist in vue (in web if possible in future via web components) ecosystem hence proposing this thing to exist.
  • It might be true that we can't create 100% perfect Vue UI framework but why not give it a shot considering after a year if some commercial project decides to go with stable framework they can agree with our vision.
  • After knowing FastAPI, I realized framework shouldn't have zero-deps strictly it can depend on some awesome future proof libraries like Radix Vue, UnoCSS and Tailwind.
  • I really like how nuxt manages team and iterated the team leader to reduce the burden and responsibility on single person. Taking a break from OSS responsibilities and burn out is reward each OSS maintainer should have.

Edit:

  1. Readers of this issue might be interested in this new repo, Check README.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions