question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

Vue 3 / Component Roadmap

See original GitHub issue

Vue 3 support is currently on the beta release channel. This issue will track the state of progress to the v4 release of the component with support for Vue 3. This issue will be updated when progress has been made or new tasks are discovered.

To install the v4 beta with Vue 3 support:

yarn add vue-select@beta

# or npm

npm install vue-select@beta

This release has been out in the wild for some time now. At this point, things are pretty stable, but I can’t guarantee there won’t be more breaking changes. More on that at the very bottom.

Breaking Changes in v4 beta branch

  • value renamed to modelValue to match the Vue 3 v-model syntax
  • @input event renamed to update:modelValue
  • scss files have been removed and replaced with CSS properties

Remaining Tasks

Now that Vue 3 is the default install, the pressure is on to get support moved off the beta channel and into master for a v4.0 release!

Todo

These items must be completed in order to merge beta into master.

Build / Ecosystem

  • remove webpack dependency, switch to vite
    • update imports to include file extensions
  • remove jest dependencies, switch to vitest
  • write docs
    • v4 upgrade guide
    • breaking change list
  • update doc platform
    • pick vitepress or vuepress-next or something else entirely? nuxt? separate repo?
    • install nuxt 3
    • install @nuxt/content
    • migrate markdown files
  • versioned docs for v3 / v4

Vue 3 Updates

  • add emits property
  • replace this.$on
  • update scoped slot calls
  • update template ref syntax in v-for
  • new function to determine if component is reducing values

Public API Breaking Changes

  • : update v-model syntax
    • value prop -> modelValue
    • input event ->
  • drop SASS to CSS with custom properties
    • deprecated on 3.x
    • remove dependencies
    • update docs

How You Can Help

The current beta distribution has primarily been a community effort driven by contributors. A huge thanks to the folks that pushed up the new initial PRs, triaged bugs and helped with issues to get to this point. I appreciate it!

There’s quite a bit to do here, and I’m excited to get moving. If you want to see this stuff move faster, the number one thing you can do is sponsor me through GitHub. I freelance full time, so the opportunity costs for me to work on vue-select instead of work for my clients is pretty high. Sponsorship contributions really help!

Outside of sponsoring, please get in touch before working on anything big so we can coordinate efforts - either through discussions or twitter. As always, I’m thrilled to welcome contributors to work on the component, and very grateful for those that do!


Wishlist

There are a few areas that the component really needs to improve on separate from Vue 3 support that may require breaking changes:

focus management The open/closed state is currently tied to whether the input has focus. This is bad for accessibility and general UX of forms. This needs to be fixed.

state management Having to manage selected values internally brings with it lots of code, and lots of room for bugs. A much simpler and easier to maintain approach would be to only emit events, don’t manage state internally. This would really shrink the codebase, but in order for the component to be able to select values, the consumer needs to provide a v-model/:modelValue binding, otherwise the component won’t know what’s selected.

prop creep The number of props available continues to grow, which creates challenges for maintenance and edge cases. Many of these props have been added to alter visual opinions, as well as modify default behaviour. With a more robust slot implementation (and probably provide/inject wrapper components like Headless UI) many of the style related props can be removed. Behaviour modification is more challenging.

I’d like to compress the breaking changes for those areas into the v4 release so that the component API is good to go for the next few years, and is in line with the way Vue is evolving. Converting the build to Vite/Vitest is part of that path. I’m going to focus on the critical path items, and if there’s time, I’ll assess the viability whether breaking changes are required in those areas for this release, or if it’s better to address them in a future release. If you’ve got opinions about this, I’d love to hear them.

Issue Analytics

  • State:open
  • Created 2 years ago
  • Reactions:25
  • Comments:17 (5 by maintainers)

github_iconTop GitHub Comments

3reactions
amchconsultcommented, Nov 5, 2022

is library dead for Vue 3?

3reactions
ankitsinghaniyazcommented, Sep 6, 2022

Is there a documentation showing how I can use this?

Read more comments on GitHub >

github_iconTop Results From Across the Web

️ Roadmap for the Vue.js project (archive) - GitHub
Vue Project Roadmap. This document outlines work that is currently being worked on and things we plan to work on next. The general...
Read more >
The Vuetify roadmap
Vuetify is a Material Design component framework for Vue.js. It aims to provide all the tools necessary to create beautiful content rich ...
Read more >
Vue 3 beginners roadmap resources. FREE
Vue 3 beginners roadmap resources. FREE · 1. The best way to learn Vue.js in 2022 - CRASH COURSE. Vue Master · 2....
Read more >
Releases - Vue.js
Vue does not have a fixed release cycle. Patch releases are released as needed. Minor releases always contain new features, with a typical...
Read more >
Vue.js Roadmap for Beginners 2022 - YouTube
Angular Roadmap for Beginners 2022 · Vue JS 3 Tutorial for Beginners · Mix - Codevolution · Vue.js Course for Beginners [2021 Tutorial]...
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found