Vant is for mobile Vue screens, not desktop dashboards
Vant 4 is a Vue 3 component library built for mobile web apps. The README lists more than 80 components, TypeScript source, server rendering, dark mode, theme controls, and translations for more than 30 languages. The scope is clear before installation: this is phone-first interface furniture, not a general desktop application kit.
Our checkout at commit cb63aed contained 1,562 files, about 75,959 lines of source, and occupied 15.1 MB. The pnpm workspace holds the main library, icons, shared helpers, and build tooling. A developer changing one button enters the whole monorepo, while an app consumer installs the published vant package and imports only the pieces it needs.
More than 80 components cover ordinary mobile flows
The set covers forms, navigation, popups, tabs, pickers, and feedback states without mixing several UI libraries. Common tokens, utilities, icons, and global configuration keep those parts consistent. ConfigProvider can switch dark mode and override theme variables within one subtree or across the page. That is enough control for a branded app without forking every component.
Our source install pulled 433 packages and occupied 526 MB, compared with the 15.1 MB checkout. That figure describes contributors building the monorepo, not the weight sent to a browser. The README's average component-size claim concerns minified, compressed output. Repository storage and the code shipped to users are separate budgets.
What happened when we ran it
Our fresh Node 22 sandbox installed the workspace in 21 seconds. The build completed in 46 seconds, and the test command succeeded in 79 seconds. It ran without secrets inside an unprivileged container with 3 CPUs and 8 GB of RAM. We did not measure page load time, rendered bundle size, visual regressions, or behavior on physical phones.
The scan found seven CI workflow files and no Dockerfile or root-level tests directory. Tests still exist beside components inside the monorepo, as the contribution guide shows, and the lab's test command passed. The signal describes layout, not missing test coverage. Your own app still needs rendering checks across its target devices.
Tree shaking removes JavaScript, not the shared CSS
The quick-start guide says unused JavaScript can be removed by tree shaking, while CSS cannot. The simplest setup imports selected components plus vant/lib/index.css. A smaller style payload requires unplugin-vue-components, unplugin-auto-import, and Vant's resolver. The guide calls this route more cumbersome and recommends the simpler import unless CSS size requirements are strict.
Our 433-package workspace installed and built cleanly, but the consuming app needs its own check. The full stylesheet, an auto-import plugin, and the Nuxt module are different build paths. Pick one and inspect the generated assets. Vant warns that combining full and on-demand imports can duplicate code and override styles.
Vant 4 requires Vue 3, while Vue 2 stays on Vant 2
The current vant package declares Vue ^3.0.0 as its peer dependency. The docs direct Vue 2 projects to vant@latest-v2; the main branch maps to Vant 4, while older branches hold Vant 3 and Vant 2. 'Supports Vue 2 and Vue 3' does not mean one current package can drop into either codebase.
Vant 3 and 4 list Chrome 51 and iOS 10 as their browser floors. Our Node 22 run says nothing about those browsers, touch input, screen readers, or WebViews. Test the devices your users carry. Open issue 13919 reports sticky Tabs leaving a page unable to respond to taps under a specific iOS and iPadOS browser condition in Vant 4.10.2.
Accessibility remains an explicit work in progress
The README describes accessibility support as 'still improving.' That sentence should decide the evaluation for teams with a fixed conformance gate. An accessible component library cannot certify the finished product after custom colors, validation copy, focus behavior, and overlays are added. Keyboard, contrast, labels, reduced motion, and screen-reader output need application-level checks.
Our successful 79-second test run shows that the supplied command passes, not that every user can operate every component. Issue 13888 documents error ordering after dynamic form fields are inserted. Issue 13898 reports that text in a readonly Field cannot be selected for copying. Both concern interaction behavior rather than compilation.
October activity is current, with a large mixed queue
GitHub showed 182 open issues and 44 open pull requests, for 226 combined items. Many recently updated pull requests were automated dependency changes, while user reports remained active. The repository was pushed on October 5, 2026, the date of reviewed commit cb63aed. Release v4.10.2 arrived on August 31 with a packaging fix for unresolved workspace dependencies.
Vant fits when the decision is already narrowed to Vue 3 and mobile web. The 21-second install, clean build, and successful tests make the source approachable, while the docs are candid about CSS imports, version branches, browser floors, and unfinished accessibility work. Accept those boundaries and it can save routine component work. Otherwise, choose a broader framework or a component set built for your screen and stack.

