# NutUI for uni-app puts a JD style component set on Vue 3 and TypeScript

> nutui-uniapp is a mobile component library for uni-app, rebuilt from the Taro version of NutUI 4.x and following the JD app 10.0 visual specification, with more than 80 components, on-demand imports, theming, dark mode and internationalisation. It is MIT licensed, its docs are Chinese, and it targets both mobile H5 and mini program builds.

**nutui-uniapp/nutui-uniapp** — 京东风格的轻量级移动端组件库，基于 uniapp与Vue3，支持移动端 H5 和 小程序开发

- Repository: https://github.com/nutui-uniapp/nutui-uniapp
- Website: https://nutui-uniapp.pages.dev
- Stars: 559 · Forks: 104
- Language: Vue
- License: MIT
- Published: 2026-10-22 · Updated: 2026-10-22 · Language: en
- Canonical page: https://hysenlabs.com/projects/nutui-uniapp-nutui-uniapp

## A NutUI rebuild for uni-app, not a fresh design

nutui-uniapp is a component library based on the Taro version of NutUI 4.x, modified and adapted for uni-app, using the Vue technology stack to build mini program applications. That lineage explains most of what the library is.

NutUI is the component library behind the JD app, and the feature list names the basis directly: the visual specification follows the JD app 10.0. So this is not a new visual language. It is an existing, shipping design system re-expressed for a different build target, which means the components in it have already been through production use on one platform and are now running on another.

The project describes itself as a lightweight uni-app component library in the JD style, supporting mobile H5 and mini program development, and it says it works out of the box with a rich set of business components.

That inheritance also explains the shape of the feature list. The claims are 80 plus high quality components covering mainstream mobile scenarios, one codebase for multiple targets, on-demand referencing, TypeScript support, dynamic theme customisation, dark mode and internationalisation. Those are the things a component library that has to serve both mini program and H5 builds has to solve, and a port of a working library arrives with answers to most of them already written.

## The feature list, in the order the project puts it

The features are listed with a mixture of icons that convey the emphasis, and the order is informative.

Component count and coverage come first, at 80 plus components covering mainstream mobile scenarios. Then the cross platform claim, supporting one codebase developing for multiple ends simultaneously.

The design reference comes next, the visual specification based on the JD app 10.0. After that come the engineering features: support for on-demand referencing, support for TypeScript, support for dynamic theme customisation, support for dark mode, and support for internationalisation.

On-demand referencing is the one that matters most for a mini program project. Mini program builds have a package size limit, and a component library that ships all of its components in one bundle is unusable at that scale, so the ability to import only what a page needs is a practical requirement rather than a nicety.

Dynamic theme customisation and dark mode sit next to each other because they share a mechanism. A theme file holds the colour tokens, and a dark mode is a different set of tokens rather than a different set of components.

Internationalisation is listed last, which for a Chinese commercial design system is an unusual position. It suggests the library treats it as a feature of the port rather than of the original.

## A pnpm monorepo with an example app and a docs site

The repository layout is a pnpm workspace, and the root manifest shows the shape.

There is a packages directory holding the library itself, a docs directory with its own dev, build and preview scripts, an example directory that is a working uni-app project, and a scripts directory. The build script targets the nutui package specifically with nr -C packages/nutui build, and the dev and build scripts for each platform target the example directory instead, which is the arrangement you want, because the example is what proves the library works on that platform.

The platform coverage in the scripts is concrete. There are dev and build pairs for mp-weixin, for mp-alipay, for h5 and for app. So WeChat mini program, Alipay mini program, mobile web and app builds are the four targets the maintainers exercise, and the scripts say so directly:

```json
  "scripts": {
    "build": "nr -C packages/nutui build",
    "dev:mp-weixin": "nr -C example dev:mp-weixin",
    "build:mp-weixin": "nr -C example build:mp-weixin",
    "dev:mp-alipay": "nr -C example dev:mp-alipay",
    "build:mp-alipay": "nr -C example build:mp-alipay",
    "dev:h5": "nr -C example dev:h5",
    "build:h5": "nr -C example build:h5",
    "dev:app": "nr -C example dev:app",
    "build:app": "nr -C example build:app",
```

The example directory carries its own config files, including an icon-config.json, a manifest.config.ts, a pages.config.ts, an uno.config.ts and a vite.config.ts, which tells you the example is a real uni-app project rather than a demo folder.

The release script bumps the version across several package.json files at once, the library package, the example package, the docs package and a scripts/uni package, and the version script regenerates the changelog with conventional-changelog in the angular format and pushes the result. There is also a build:web-types script and a build:uni script, both run with esno, and a commit script that pulls, stages everything and runs git-cz for the commit message.

## The toolchain, and the floors it sets

The manifest is a modern one and its constraints are worth reading before you clone.

The package manager is pnpm 9.15.4, and the engines field allows node 18.18.0 or newer, 20.9.0 or newer, or 21.1.0 or newer, with pnpm 9 required. That node floor is why the release script uses bumpp and the scripts use nr rather than raw npm, and it is the sort of requirement that will bite a team still on node 16.

The package is marked private, so the root is not published, and the name and keywords point at what it is: nutui, vue3, uniapp and typescript.

The linting is split by concern, which is a sign of a project with several file types. There is eslint with --fix, a separate stylelint run over the vue and scss files with a cache, and a separate markdownlint run over the repository markdown with the gitignore respected. The lint-staged script runs a type check on the nutui package before the staged files are processed, so a type error blocks the commit rather than the build.

The commit tooling follows the same convention discipline. There is a commitlint config, a changelogithub config, and a release script using bumpp, and the postinstall hook runs the build and installs simple-git-hooks.

The clean script removes node_modules directories with rimraf, and the build:all script chains the library build, the web types build, the h5 build, the docs build and a final script run, which is the command a release engineer would use.

## Documentation that is Chinese, and links that give it a second address

The readme is short and the documentation is the real content, and it is in Chinese.

The readme points to a quick start guide on the documentation site for getting set up, and then lists the links a contributor or user needs: an online documentation site with a backup address, a feedback link to the issue tracker, a changelog link to the releases, a frequently asked questions page, and a Discussions area.

The dual documentation address is a practical detail rather than a technical one. The primary site is on pages.dev and the backup is on netlify.app, and the repository carries a Netlify deploy badge, so the two are separate deployments of the same docs with a fallback in case one is unreachable. For a project outside China, that matters, because pages.dev can be slow or blocked from some networks.

The contributing section is short too. It asks you to read the contribution guide before changing code, and it invites both issues and pull requests. There is a code of conduct file and a contributing guide in the repository, and the changelog is maintained with the angular convention through changelogithub, which is why the version script can regenerate it automatically.

The acknowledgements name the projects the work builds on, among them ano-ui, the original NutUI, Uni-NutUi, vin-ui and uni-helper, which is a useful map of the ecosystem this library sits in.

## Maintenance, and the gap between the branch and the release

The licence is MIT, held by Yang1206 and all contributors, and the repository is not archived.

The release history is regular. The tags are v1.11.2 from 2026-03-11, v1.11.1 from 2026-02-26 and v1.11.0 from 2026-02-26, so the 1.11 line shipped three point releases within about two weeks in late February and March 2026.

The last push was on 2026-06-30, which is more recent than the newest tag by several months. That gap is the one signal worth carrying into a decision: the branch is being worked on but the published package has not caught up. For a component library that is a routine state of affairs, since a release often waits for a set of components to be finished, but it does mean the code in the repository and the code in your node_modules are not the same thing.

The homepage is nutui-uniapp.pages.dev, and the primary language of the repository is Vue with the topics listing miniprogram, nutui, uniapp, vue3 and typescript.

## Conclusion

Adopt nutui-uniapp if you build mobile mini programs or mobile H5 with uni-app on Vue 3 and want a component set that already looks like a JD app rather than something you restyle yourself. Do not adopt it if your team cannot work with Chinese documentation, since the readme, the docs site and the contribution guide are all in Chinese, and expect a porting effort if you need the Taro version of NutUI instead. Before you start, check three things: which mini program platforms you need, since the build scripts cover WeChat, Alipay, H5 and app, the node and pnpm floors in the manifest, since it requires node 18.18 or newer and pnpm 9, and whether the component set covers what your design needs, since the 80 plus component count is a claim about coverage of mainstream mobile scenarios rather than a guarantee of an exact match.

## FAQ

### What is nutui-uniapp and where does it come from?

It is a uni-app component library built on the Taro version of NutUI 4.x, modified and adapted for uni-app with the Vue stack. The visual specification follows the JD app 10.0, and the project provides more than 80 components for mobile H5 and mini program development.

### Which platforms does nutui-uniapp build for?

The build scripts in the package manifest cover WeChat mini program, Alipay mini program, mobile H5 and app, with a dev and a build script for each. The project claims one codebase can develop for multiple ends at the same time.

### What are the requirements for working on nutui-uniapp?

Node 18.18 or newer, 20.9 or newer, or 21.1 or newer, with pnpm 9. The repository uses pnpm 9.15.4 as its package manager and a pnpm workspace layout, with the library, the docs and an example app as separate packages.

### Does nutui-uniapp support TypeScript, theming and dark mode?

The feature list states support for TypeScript, dynamic theme customisation, dark mode, internationalisation and on-demand referencing. The repository is written in Vue with TypeScript and uses eslint, stylelint and markdownlint as separate lint passes.

### What licence is nutui-uniapp released under?

MIT, held by Yang1206 and all contributors. The last push was on 2026-06-30 and the newest release tag is v1.11.2 from 2026-03-11, so the published package is a few months behind the branch.

## Sources

- [License: MIT](https://github.com/nutui-uniapp/nutui-uniapp/blob/main/LICENSE)
- [nutui-uniapp/nutui-uniapp on GitHub](https://github.com/nutui-uniapp/nutui-uniapp)
- [Project website](https://nutui-uniapp.pages.dev)
- [README](https://github.com/nutui-uniapp/nutui-uniapp/blob/main/README.md)
- [Releases](https://github.com/nutui-uniapp/nutui-uniapp/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/nutui-uniapp-nutui-uniapp
