uView Pro Earns Gitee GVP After Full Vue3 Rewrite and 80-Component Cross-Platform Gauntlet
I finally got selected as a Gitee GVP today, and it's really worth celebrating~
When the GVP selection pop-up suddenly appeared, I was fixing a bug in a Douyin mini-program.
The picker component wouldn't pop up. After two days of investigation, I finally discovered that Douyin's native picker-view requires data at creation time, but we were using async/await, so the asynchronous data loading caused the picker-view to be empty when it was created. You'd never think of this kind of problem unless you've stepped on it.
Just as I was getting a headache, the GVP message popped up. A bit dazed, but genuinely happy.
Gitee GVP?
GVP stands for Gitee Most Valuable Project, an official certification by Gitee for high-quality open-source projects on the platform. The selection criteria include code quality, documentation completeness, community activity, and the practical value of the project.
Gitee currently has over 8 million developers. Being officially recognized as a 'Most Valuable Open-Source Project' at this scale carries some weight (in my own opinion). As a purely technology-driven component library, receiving this GVP shows that this cross-platform UI component library is somewhat useful.
From uView UI 1.8.8 to uView Pro
uView Pro's predecessor is uView UI 1.8.8. If you used uni-app around 2020, you've probably heard of uView UI—back then, the uni-app ecosystem didn't have many component library choices, and uView UI accumulated quite a few users with its 60+ components and fairly complete documentation.
But tech stacks expire.
In 2022, Vue3 officially became the default version, and uni-app fully embraced Vue3. uView UI 1.8.8 was written based on Vue2 and the Options API. Upgrading to Vue3 wasn't just a matter of changing syntactic sugar. The Composition API's logic organization is completely different, and TypeScript support had to be built from scratch.
At that time, there were two choices: patch together a compatible version, or tear it down and start over. There was already a TS-compatible version of uView 2.x on the market.
Since I had only used the uView UI 1.x version, I chose the latter. Based on the component design ideas of 1.8.8, I rewrote everything using the Vue3 Composition API, and along the way, I solved things that weren't done well in the 1.8.8 era, like TypeScript support, theme customization, and dark mode.
Refactoring isn't translating code. Every component had to be rethought: keeping the API design as unchanged as possible, how to handle cross-platform compatibility, and whether there was room for performance optimization. Over 80 components, tackled one by one.
The repository has also been given the GVP badge, hehe~
Cross-platform pitfalls are plentiful
The most deceptive phrase in cross-platform development is 'one set of code, runs on multiple ends.'
The reality is, every platform has its own quirks.
WeChat Mini Programs are relatively standardized, but they still have some limitations, such as not supporting dynamic binding of CSS variables in style attributes, and certain animation effects require special handling.
The App end uses uni-app's App rendering engine. Most component behavior is consistent with H5, but native components (like picker-view, video, map) behave completely differently.
Douyin Mini Programs have the most pitfalls. Their underlying layer isn't entirely the same as WeChat Mini Programs; many things that work fine on WeChat don't work on Douyin. For example, the picker component mentioned earlier: Douyin's native picker-view must have data at creation time and cannot be filled asynchronously. There are also differences in style isolation mechanisms and component lifecycle timing compared to WeChat.
The H5 end is another set of logic entirely. There are no native components; everything is simulated using web technologies, and the underlying implementations of routing, storage, and network requests are all different.
For example, uView Pro's u-picker component encapsulates uni-app's picker-view at the bottom layer. It behaves differently on WeChat Mini Programs, the App end, and the H5 end. One API, four implementations. Every time you fix a problem on one platform, you have to confirm the other three aren't affected.
There are too many similar situations. The pop-up positioning of u-select differs across platforms, u-form validation has timing issues on Douyin, u-tabs scrolling occasionally stutters on the App end... Behind every problem lies hours or even days of troubleshooting.
But each one solved makes the component library a bit more stable.
Currently has over 80 components
Currently, uView Pro has over 80 components, covering common scenarios like forms, navigation, data display, feedback, and layout. All are developed based on the Vue3 Composition API, with TypeScript type support, and are friendly for IDE code hints.
The number of components isn't the core metric, but having over 80 means you don't have to write UI from scratch for most business scenarios. A login page, a product list, a settings page—uView Pro can basically cover them all.
Besides components, we added several important things in the 0.6.x version:
Deep Theme Customization: Through the u-config-provider component, you can globally configure multiple theme colors. Dark mode is also built-in, automatically following the system or manually toggled.
Built-in Virtual Root Component: Version 0.6.12 automatically injects the root component via a vite plugin, eliminating the need to manually import it in App.vue. This feature is very friendly for beginners; it works right after installation without needing to understand the concept of a 'root component'.
MCP Support: Better provides AI editors with a component documentation query service based on the Model Context Protocol (MCP), allowing AI to obtain the latest component API information in real time.
Skills Support: Can quickly enable AI to understand how to use the uView Pro component library, standardize the quality of AI-generated code, improve development efficiency, and reduce repetitive work.
Community
The scariest thing for an open-source project is having no users. But from day one, uView Pro has had developers filing Issues, giving feedback, and even directly contributing code.
Some people write incredibly detailed reproduction steps, including environment info, operation paths, screenshots, and code snippets, which doubles the troubleshooting efficiency. Others silently star the project, not saying much usually, but every time the star count goes up, it's encouragement to keep going with open source.
The GVP honor belongs to the entire uView Pro community. Without that feedback and those contributions, uView Pro might not have come this far.
What's Next
GVP is not the end. Here are a few things to push forward next:
Platform Compatibility: Some components on Douyin Mini Programs are still not stable enough and need continued polishing.
AI Improvement: Continue to refine the accuracy of skills and MCP.
uni-app x Support: Currently writing the uni-app x version of uView Pro (this thing is incredibly hard to write).
Finally
The hardest part of an open-source project isn't writing code; it's persevering.
uView Pro, from the moment this idea sprouted to now, has gone through countless late-night bug-fixing sessions and phases of being questioned, 'How long can this project survive?' But every time I see someone build a product using uView Pro, or someone leaves a comment saying 'This component is really useful,' I feel I can hold on a little longer.
GVP is a milestone, but more importantly, it confirmed one thing for me: what I'm doing is recognized by others and has value.
If you're doing cross-platform development with uni-app, you can give uView Pro a try:
Official Documentation: https://uviewpro.cn
Gitee: https://gitee.com/anyup/uView-Pro
If you find it useful, feel free to drop a Star. If you encounter problems or have good suggestions, you're welcome to file an Issue (they will all be resolved).
uView Pro went from open-sourcing to a Gitee Recommended Project in 1 month, and from a Gitee Recommended Project to the GVP Annual Most Valuable Open-Source Project in 8 months. Open source isn't easy, but thankfully, I've persevered. Thank you all for your use and support~
Open source is not easy, but with companions on the journey, the road isn't so hard to walk!
Top 2 of 5 from juejin.cn, machine-translated. The original thread is authoritative.
What kind of award is this? Its weight is probably about the same as a math flyer, right?
Does this thing actually carry any weight? Anyone know and can say?
They also give a custom trophy and exclusive gifts.
[eye-rolling dog]
Gitee links are banned, haha okay [facepalm]