qrazy
Building a micro-framework to cure framework fatigue
The best cure for "framework fatigue" is realizing that frameworks aren't magic—they're just JavaScript code written by people who got tired of copy-pasting the same logic.
So I built one. 250 lines. No build step. Called it qrazy because you'd have to be to roll your own in 2026.
Here's what it looks like:
<div q-data="{ count: 0 }">
<button q-click="count++">
Clicked <span q-text="count"></span> times
</button>
</div>
That's it. No npm install. No webpack. No JSX. Just HTML with special attributes that make things reactive.
The three problems
Every UI framework—React, Vue, Svelte, Alpine, htmx—solves the same three problems. They just solve them differently.
Reactivity
How do you know when state changes? When someone sets count = 5, how does the framework notice?
qrazy answer: Proxy API. Wrap objects in a trap that fires on every property change.
Binding
How do you connect state to the DOM? HTML doesn't know about your JavaScript objects.
qrazy answer: Custom attributes. Walk the DOM, find q-text, q-click, etc., wire them up.
Reconciliation
What happens when you delete item #2 from a list? Do you rebuild the whole thing or surgically remove one element?
qrazy answer: Keyed templates. Track which DOM nodes belong to which data items.
What we built
qrazy supports these directives:
| Directive | Purpose |
|---|---|
q-data |
Define a reactive scope with initial state |
q-text |
Bind element's textContent to an expression |
q-show |
Toggle visibility based on a boolean expression |
q-bind:attr |
Bind any HTML attribute to an expression |
q-model |
Two-way binding for input elements |
q-click |
Execute a statement on click |
q-submit |
Handle form submission |
q-for |
Render a list from an array |
That's enough to build real UIs. Counters, forms, todo lists, dynamic tables.
Go deeper
Each problem has its own deep dive. Start from first principles, understand why things work the way they do.
The meta-lesson
Once you build a crappy version of React, you understand exactly why React does what it does. The "arbitrary" complexity of modern web dev stops looking arbitrary—it starts looking like standardized solutions to the problems you just struggled with.
Framework fatigue isn't about there being too many frameworks. It's about not understanding what they do for you. Fix that, and the fatigue goes away.