Here are some fairly straightforward notes and impressions from attending VueConf Hangzhou.

Vue 3.0
Vue 3.0 was impossible to avoid, and it was also the subject of the opening conference talk by Evan You.
To be honest, I was already familiar with part of this material before the event, having followed some internal discussions and earlier presentations. So I listened with a relatively calm mindset. The parts that seemed most worth paying attention to were these:
- The data system is being upgraded. It will support newer ES data types, be implemented on top of ES Proxy/Reflect, and support both reactive and immutable data structures.
- The underlying virtual DOM design is becoming friendlier.
- Components can be defined using ES Class syntax.
- Renderers can be defined and replaced without being coupled at the source-code level, even at runtime. This opens the door to renderers for browsers, Weex, and quite possibly mini programs in the future.
- The framework will support module-level maintenance and replacement, such as
observer,compiler,runtime-core,runtime-web,runtime-server, and so on.
There were also plenty of other thoughtful improvements: source maps for templates, time slicing, hooks, TypeScript support, and further work on performance and bundle size. I believe those were exciting for many people as well, but I will not list every single item here.
What I found more interesting was what seemed to sit behind the Vue 3.0 roadmap.
First, Vue 3.0 is clearly serving a stronger technical core. People may interpret Vue’s growth in different ways, but to me, the strength of the core is the decisive factor. Version 3.0 makes many improvements to the robustness of the framework itself: the codebase is written entirely in TypeScript, the project is split into multiple maintainable modules, and the structure makes it easier for more contributors to participate in core development. It should also reduce maintenance cost while making mistakes harder to introduce casually.
Second, it is also serving a healthier technical ecosystem. Changes such as the virtual DOM redesign and the ability to build custom renderers without deep source-level coupling should help the upper layers of the ecosystem become more focused and higher quality. This also makes communication and collaboration among Vue developers easier. As a related detail, the official Vue documentation now includes more than just tutorials and API references; sections such as the style guide and cookbook are also part of this broader effort.
Third, it is preparing for the next stage of web technology. Vue has consistently chosen to embrace newer technologies such as ES Class, Proxy/Reflect, Set/Map, TypeScript, and Web Components. On one hand, that prepares the framework for the future; on the other, it gives developers a more concrete way to understand and experience these technologies. Whether mini programs count as a new “technology” is debatable, but with custom renderers becoming possible, the room for imagination is large.
Assuming nothing unexpected happens, Vue 3.0 will now go through a gradual process of iteration and polishing. Some features or changes may still appear along the way, but I do not expect a dramatic shift in direction. The main design philosophy of the new version should remain stable.
My own view is that front-end development patterns, especially at the framework layer, are entering a more stable phase. Most major efforts are converging around two large areas: component systems and data management. Without another language-level leap like the ES5 and ES6 eras, the technical means available to frameworks are unlikely to change qualitatively in the near term. That makes the role of the surrounding ecosystem increasingly important. In that context, strictly guarding framework quality while doing more to support the upper-layer ecosystem seems like a very wise choice.
Of course, this is only my personal judgment, and disagreement is welcome.
Thoughts on the Other Sessions
Declarative interaction in Vue
This topic was presented by Han, and I had discussed it privately with him before the conference. In fact, I felt our earlier conversation went even deeper than the conference talk itself, extending into details of MVVM’s design philosophy. From that perspective, the Turing completeness of Vue templates may only be the tip of the iceberg.
For example, I believe nearly every front-end project today, not only Vue projects, contains complex data structures: the Model in MVVM terms, or the Store in Flux terminology. These structures need to be designed, maintained, and periodically “governed.” From the perspective of modern front-end engineering, some parts of MVVM feel rather abstract and distant from real scenarios and language features. Flux is more practical, but theoretically it is not discussed with the same level of detail and rigor as MVVM. So when certain special business logic appears, confusion still arises.
After discussing this with Han, I got some new ideas and plan to spend time experimenting with them. More concrete notes will have to wait until there are actual conclusions to share.
Vue CLI
Vue CLI should probably be considered the most important tooling release in the Vue ecosystem over the past year.
In the talk by its maintainer, several design details stood out to me. One was the intention to reduce pressure on vue-loader and webpack configuration while also preventing excessive fragmentation at that layer of the community and ecosystem. Another was the amount of work Vue CLI has put into project-level technical upgrades and configuration templates. These are exactly the areas where many developers clearly have needs, yet hesitate to touch anything because they are afraid of making things worse or ending up with an increasingly messy setup.
There was also a lightning talk by Wei Yuanyue. It felt a little rushed, but two important points were still clear. First, Vue CLI is highly extensible. Second, Vue CLI’s GUI matters. As front-end engineering continues to mature, visual project management and configuration tools are becoming more and more valuable.
Alongside Vue CLI, another tool worth paying attention to is VuePress. Both of these tools are currently maintained by Chinese developers, which is great to see.
The Vue ecosystem
The afternoon sessions on Ant Design Vue, Electron-Vue, and Hippy-Vue all belonged to the broader Vue community and ecosystem. They corresponded respectively to component libraries, desktop applications, and mobile applications. Not everyone will necessarily use all of them, but together they demonstrated the breadth of the Vue ecosystem.
There were also two sessions related to Vue’s signature practical features: SFC and SSR.
The SFC practice session came from Taobao. To me, that felt like a form of recognition for Vue from Taobao, though I will not expand too much on that.
The SSR practice session was by Tianxiang, with whom I had also discussed the topic before. The talk did not spend much time introducing SSR’s own characteristics. Instead, it focused more on data management in SSR business scenarios. I realized that this topic has a strange connection with Han’s talk, because both are essentially about how UI and data interact. I will leave that thread aside for now as well.
The CRDT talk was honestly outside my expectations. First, I did not expect Andrey Sitnik to jump directly from PostCSS into what seemed like a completely unrelated field and discuss data interaction from a distributed-systems perspective. Second, I did not expect to come away with a methodology: looking for inspiration for new problems from the accumulated knowledge of computer science over the past several decades. That was much more enlightening to me than CRDT itself.
Bonus: Hax’s Lightning Talk on New ES Proposals
Because Vue 3.0 will provide an ES Class-style API, related ECMAScript proposals will gradually become a topic every Vue developer needs to care about.
Regarding the new ES proposals Hax mentioned at the conference, my own position is quite clear: I do not like using # to represent private members, such as this#foo. There are so many reasons I dislike it that I do not even know where to begin, and Hax basically covered them already, so I will not repeat them here.
One might reasonably ask: if I dislike it, what alternative do I prefer? To be honest, I cannot offer a better solution right now. But I do think that if a new standard cannot be discussed until it reaches a sufficiently good shape, then I would rather not have that standard yet. This is not something that must immediately produce a conclusion.
The larger issue now may be that the proposal appears to be on the verge of acceptance. What should we do then? That may have been one of the important points Hax wanted to express. If you follow language standards and new language features, it is worth learning more about this area.
Overall, I thought VueConf Hangzhou was excellent.
I also felt fortunate to take part in the opening band performance and to perform a song I had helped create, which was an honor.
I originally considered writing more about technical conferences in general, especially since VueConf Hangzhou will likely be the last tech conference I attend this year. But this has already become fairly long, and time is limited, so I will leave those thoughts for another occasion.