Wot UI counts its components twice and the numbers disagree
A uni-app component library built with Vue3 and TypeScript, providing 70+ high-quality components with support for dark mode, i18n and custom themes.
At a glance
- What is it?
- Wot UI is a Vue 3 and TypeScript component library for uni-app, targeting mini programs, H5 and apps. Its repository description says 70-odd components while its own feature list says more than 80.
- Who is it for?
- Wot UI suits a team already building with uni-app who wants one component set across mini program, H5 and app targets, written in TypeScript with theming through CSS variables. It does not suit a Vue project that is not on uni-app, since the components target that platform layer.
- Can I use it commercially?
- Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 17 days ago.
- What is it written in?
- Mainly TypeScript, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on September 28, 2026, and from our analysis. They are not legal advice.
Editorial analysis
Two component counts, both official, four apart
The repository description says the library provides 70-odd high-quality components. The feature list in the README says 80-odd. Both sentences are written by the project, and the gap is at least ten components if the numbers are literal, so at least one of them is stale. That is a small thing and a useful one, because component libraries accumulate: the count in a description field is edited rarely, while a feature list gets refreshed with the release notes. The honest way to use either number is to open the component documentation and count what you need. The library itself is built on Vue 3 and TypeScript and follows the design of wot-design, the mini program component set, adapted for uni-app so the same components compile to more than one platform.
The target platforms are the reason this library exists
The multi-platform claim is the substance rather than the marketing, and the feature list names the targets concretely: WeChat mini programs, Alipay mini programs, DingTalk mini programs, H5, and apps. A component library that renders correctly in a browser is straightforward; one that produces acceptable layout inside three different mini program runtimes is a different problem, since each runtime has its own view layer and its own set of constraints. Building on uni-app is what makes that tractable, because the platform differences are handled underneath rather than by the component. The consequence for you is that the platform target is chosen per page and per build rather than per component, and that some visual details will still be the runtime's interpretation. If your product lives mostly in one mini program, the multi-platform coverage is insurance rather than a daily benefit, and the migration case is where it pays off.
Theming is CSS variables and dark mode rides on them
Customization has one mechanism rather than a theming API: you modify CSS variables. The feature list describes theme customization as editing CSS variables, which keeps the surface area small. A component that reads its colors from variables does not need a palette object, a provider component, or a config file, and the same variables are what make dark mode possible, since dark mode is supported as a distinct capability alongside theming. This is a pragmatic choice for a component library that has to compile into environments with limited runtime, because the styling stays in the stylesheet and the JavaScript does less. The trade-off is that a variable-based theme is only as consistent as the variables the library exposes, and nothing in the description promises a per-component override API. So to restyle one control you change the variable it reads, and the granularity you get is the granularity the author chose to publish.
Fifteen language packs ship with the library
Fifteen built-in language packs are named in the feature list, which is more than most component libraries of this size carry, and it matters differently depending on where your product ships. In China, where WeChat, Alipay and DingTalk are the named targets, a library shipping fifteen locales is close to table stakes rather than a differentiator. Outside that market it changes the calculation, because the set of supported languages is fixed at whatever fifteen were chosen, and adding one is your work. There is also documentation in two languages in the repository itself, with a Chinese README and a separate README_en.md, which is a small signal about where the audience sits. For a team outside the region, the practical check before adopting is simple and worth doing early: open the language list, confirm your locale is in it, and if not, plan on maintaining your own pack.
The documentation is published to three domains
Three documentation sites are linked, which is unusual and tells you something about hosting inside mainland China. The first, at v1.wot-ui.cn, is marked as recommended. The second is on Cloudflare Pages at wot-design-uni.pages.dev, and the third is on Netlify at wot-design-uni.netlify.app. Two of the three are overseas hosts, which is the usual answer to a site that needs to load quickly for users on one side of a network boundary and for contributors on the other. There is a Netlify deploy badge in the README tied to a specific site id. The documentation itself covers a quick start guide, a common problems page, a changelog, a case gallery and a group page, and the repository asks for demo applications to be submitted through a specific issue. Multiple mirrors mean one stale copy does not break the project, but it also means a search result can send you to a stale copy, so check which domain you are reading before filing an issue about something that is already fixed.
The hosted mini program demo can be behind the source
The preview section says something that most libraries do not say out loud. You can scan a QR code to reach the demo on WeChat, Alipay, H5 and Android, but there is a warning that because of WeChat's review process, the hosted WeChat mini program example may not be the latest version, and the alternative given is to clone the code locally to preview it. That is a platform constraint rather than a project failing, and it has a direct consequence for how you evaluate a component library: a screenshot from a hosted demo is evidence about the version that demo was built from, which may not be the version in your node_modules. Anything you notice in the demo, from a spacing quirk to a missing component, should be checked against the local clone before you conclude it is a bug. The same caution applies to the other hosted demos in principle, since they are all deployed artifacts rather than the source.
An ecosystem of first-party plugins does much of the glue work
The surrounding projects table is longer than most component libraries manage, and several entries exist because the framework does not solve the problem. wot-ui-intellisense is a VS Code completion plugin, and Wot UI Snippets is the matching snippet set, so editor support is not an afterthought here. uni-mini-ci is a plugin that makes continuous integration work for the mini program side of a uni-app build, which is the gap that stops many teams from deploying mini programs at all. uni-mini-router is a lightweight router for uni-app on Vue 3 and TypeScript. wot-starter is a starter project based on vitesse-uni-app, and wot-starter-retail is a retail industry template built on Wot UI, with unibest listed as a third template that uses it. There is also an AI assistant listed as a store bot for answering questions about the component library. The pattern is clear: the library plus about ten satellites covers editor, routing, CI, project scaffolding and templates.
Editorial conclusion
Wot UI suits a team already building with uni-app who wants one component set across mini program, H5 and app targets, written in TypeScript with theming through CSS variables. It does not suit a Vue project that is not on uni-app, since the components target that platform layer. Before adopting, count the components you actually need against the documentation, check whether the fifteen bundled language packs include yours, and clone the repository locally if you need the newest code, since the hosted WeChat demo can lag behind.
Frequently asked questions
How many components does Wot UI have?
The repository description says 70-odd and the README feature list says more than 80, so the two official counts disagree. The component documentation is the place to check whether a specific control exists.
Which platforms does Wot UI support?
WeChat, Alipay and DingTalk mini programs, H5, and apps. The library is built on Vue 3 and TypeScript for uni-app, so a single component set compiles to those targets.
How do I theme Wot UI or turn on dark mode?
By modifying CSS variables, which is the customization mechanism named in the feature list. Dark mode is a separate supported capability rather than a separate theming API.
How many languages does Wot UI ship with?
Fifteen built-in language packs. The repository documentation itself is available in Chinese and in English through a separate README_en.md.
Is the hosted WeChat demo up to date?
Not necessarily. Because of WeChat's review process the hosted mini program example may not be the latest version, and the README recommends cloning the code locally to preview instead.
Does Wot UI have CI support for mini program builds?
The surrounding projects list includes uni-mini-ci, a plugin that adds continuous integration support to the mini program side of a uni-app build, along with editor tooling such as wot-ui-intellisense and Wot UI Snippets.