Open travis opened 1 year ago
βοΈ React - https://reactjs.org/
β Vue - https://vuejs.org/
π§ SolidJS - https://www.solidjs.com/
π¨ "Vanilla" JavaScript + HTML - https://developer.mozilla.org/en-US/
πΈοΈ Web Components - https://developer.mozilla.org/en-US/docs/Web/Web_Components
π§ͺ Preact - https://preactjs.com/
π΄ Svelte - https://svelte.dev/
πΊ Angular - https://angular.io/
:atom: React Native - https://reactnative.dev/
My two cents, on this: First what we support going forward should come from users requests. Having the initial version support multiple frameworks has value but keeping support or adding more going forward should be measured by user engagement.
We should keep a headless, framework agnostic core for all the packages so its easy for us to outsource support for more frameworks.
Having said that for the initial release, we should look to the ecosystem and react is king followed by vue, solid js is nice because its getting a lot of press (because its way better than anything else before it, with the exception of qwik).
React for me means react, preact and react-native if we keep our core clean plus all the blockchain frontend frameworks are react based. Vue and solidjs should be treated as nice to have and community driven.
I really would love web components support, it's almost framework agnostic. I think does pretty good job doing something along these lines and demoing integrations with frameworks as well https://shoelace.style/
We currently provide specific libraries to support developers using three different JavaScript UI frameworks:
1) React - react-keyring, react-uploader react-uploads-list 2) Vue - vue-keyring, vue-uploader, vue-uploads-list 3) SolidJS - solid-keyring, solid-uploader, solid-uploads-list
We also provide examples of how to use our components in four different "frameworks":
1) React - examples/react 2) Vue - examples/vue 3) SolidJS - examples/solid 4) "Vanilla" JavaScript - examples/vanilla
Each of the libraries and examples opens up a new community to our product - by providing official support for a framework or library we make it easy for people to love web3.storage and easily build on it in an "official" way. Each of them also comes with non-trivial support cost - as we evolve w3up we should be expected to keep each of them up to date with the latest features, ensure the examples keep working, provide updated packages as security issues are found and fixed in underlying dependencies, etc. We should weigh these costs and benefits and memorialize our decisions in this thread, both to make it clear to the community why we provide official support for specific libraries/frameworks and to make it easy for people to advocate for changes to these decisions in the future.
Of the current frameworks we support, only React seems obvious to me - we build apps in React, most of our team has at least a basic understanding of one or more React frameworks and it's one of the most widely adopted frameworks in the technology industry. Of the others - Vue and SolidJS - Vue seems like a good idea to support (though it's not my cup-of-tea so I wouldn't be sad if we dropped it) and SolidJS seems like an outlier - eg, it's not clear to me why we support it over, say, Svelte. Of the "frameworks" we're missing, I think Web Components seems like an obvious choice - they're close to being "Vanilla" JavaScript at this point but are specific and nuanced enough that it seems worth at least providing an example of how you'd create Web Components that work with our APIs
To kick things off, I'd like to use this issue as an informal non-binding "voting" mechanism in perpetuity. If you have opinions about which frameworks we should officially support, please take a moment to register your support by reacting to the comment below corresponding to your preferred framework.
Note that "support" in this case is explicitly vague - this might mean supporting with a full-blown framework-specific w3ui library or might just mean providing some examples - feel free to use comments below to advocate for a specific type of support but final decisions about the precise nature of support for a particular framework will be made by the core team since we will be signing up for supporting these packages and examples on an ongoing basis for the indefinite future.
Finally, please feel free to use the rest of this thread to advocate for your favorite frameworks - we'd like to stay on top of the latest and greatest in web development and our community is our greatest resource in staying ahead of the game. Thanks!