simonwep/viselect

✨ Viselect - A high performance and lightweight library to add a visual way of selecting elements, just like on your Desktop. Zero dependencies, super small. Support for major frameworks!

TypeScript

2,956

549 commits

updated Sep 13, 2026

See the code

README

Logo

Visual dom-selection library

Documentation / Quickstart / Examples

No dependencies Support me downloads Build Status gzip size brotli size

demo gif

Features 🤘

  • 🧩 Framework-ready - a dependency-free core plus first-party React, Preact, and Vue 3 packages.
  • 🖱️ Natural interactions - drag, click/tap, and Shift range selection.
  • 🎯 Configurable behavior - selection triggers, thresholds, intersections, and overlap handling.
  • 📱 Touch and scroll aware - works with touch input and two-axis scrollable containers.
  • 🔄 Lifecycle events - observe or cancel interactions at every selection stage.
  • 🛠️ Programmatic API - manage selections, refresh selectable elements, or enable/disable selection.
  • ...and much more!

Getting started

Head over to the documentation to get started 🚀

You want to contribute?

That's awesome! Check out the contribution guidelines to get started :)

dom-selection
javascript-library
js-library
preact
react
select
selection
selections
ui
ux-design
ux-experience
viselect
vue

simonwep/viselect

✨ Viselect - A high performance and lightweight library to add a visual way of selecting elements, just like on your Desktop. Zero dependencies, super small. Support for major frameworks!

TypeScript

2,956

549 commits

updated Sep 13, 2026

See the code

README

Logo

Visual dom-selection library

Documentation / Quickstart / Examples

No dependencies Support me downloads Build Status gzip size brotli size

demo gif

Features 🤘

  • 🧩 Framework-ready - a dependency-free core plus first-party React, Preact, and Vue 3 packages.
  • 🖱️ Natural interactions - drag, click/tap, and Shift range selection.
  • 🎯 Configurable behavior - selection triggers, thresholds, intersections, and overlap handling.
  • 📱 Touch and scroll aware - works with touch input and two-axis scrollable containers.
  • 🔄 Lifecycle events - observe or cancel interactions at every selection stage.
  • 🛠️ Programmatic API - manage selections, refresh selectable elements, or enable/disable selection.
  • ...and much more!

Getting started

Head over to the documentation to get started 🚀

You want to contribute?

That's awesome! Check out the contribution guidelines to get started :)

dom-selection
javascript-library
js-library
preact
react
select
selection
selections
ui
ux-design
ux-experience
viselect
vue

Significant stargazers

Luke Karrys

718 followers · starred May 2018

Jakub T. Jankiewicz

615 followers · starred Nov 2022

OJ Kwon

600 followers · starred Nov 2024

_Kerman

543 followers · starred Dec 2023