A reactive Luau library for creating UI. https://centau.github.io/vide/
Find a file
Andrea Fletcher 18c1d02d43
Add tag() action for CollectionService tags
Adds a built-in `vide.tag()` action that wraps `Instance:AddTag()` /
`Instance:RemoveTag()` so tags can be applied through `create()` props.

It accepts a static string or array of strings, or a reactive source
returning either. The reactive variant diffs the previous and new tag
sets so only the delta is applied. All tags added by the action are
removed when the surrounding scope is destroyed.

Includes mock support for `AddTag`/`RemoveTag`/`HasTag`/`GetTags`,
tests, API reference docs, and a closing note in the actions tutorial.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-26 22:10:47 -07:00
.github/workflows Do not auto deploy site on push to main 2025-09-01 22:22:09 +01:00
docs Add tag() action for CollectionService tags 2026-05-26 22:10:47 -07:00
src Add tag() action for CollectionService tags 2026-05-26 22:10:47 -07:00
test Add tag() action for CollectionService tags 2026-05-26 22:10:47 -07:00
.gitignore Update actions and tooling 2025-06-23 19:09:21 +01:00
.luaurc Initial commit 2023-08-08 21:33:11 +01:00
CHANGELOG.md Add tag() action for CollectionService tags 2026-05-26 22:10:47 -07:00
default.project.json Initial commit 2023-08-08 21:33:11 +01:00
init.luau Fix require paths for latest luau 2025-06-23 20:44:14 +01:00
LICENSE.md Initial commit 2023-08-08 21:33:11 +01:00
pesde.toml Update actions and tooling 2025-06-23 19:09:21 +01:00
README.md Improve Documentation Site (#41) 2024-11-03 17:32:19 +00:00
rokit.toml Update actions and tooling 2025-06-23 19:09:21 +01:00
todo.md Fix recursive batch() use 2023-11-20 12:27:56 +00:00
wally.toml Add GitHub workflow to build rbxm and publish to pesde and wally (#50) 2025-06-23 18:31:40 +01:00


Vide is a reactive Luau UI library inspired by Solid.

  • Fully Luau typecheckable
  • Declarative and concise syntax.
  • Reactively driven.

Getting started

Read the crash course for a quick introduction to the library.

Code sample

local create = vide.create
local source = vide.source

local function Counter()
    local count = source(0)

    return create "TextButton" {
        Text = function()
            return "count: " .. count()
        end,

        Activated = function()
            count(count() + 1)
        end
    }
end