Alpine.js is a minimal reactive framework that lives inside HTML attributes. x-data defines a component scope, x-show and x-bind handle visibility and attribute binding, and x-on:click wires events. The whole runtime is around 15KB gzipped.
It is the sweet spot for sprinkling interactivity on top of server-rendered HTML — exactly the scenario where jumping to React or Vue is overkill. WordPress, Laravel, and Rails developers reach for it because it slots in without a build step.
The mental model is simple: declare state with x-data, mutate it from event handlers, and let bindings propagate. There is no virtual DOM and no JSX — just attributes the browser already understands.