Version: 1.0.0Bundle Size: ~6KB minified (~2.3KB gzipped) Dependencies: Zero Language: Pure Vanilla JavaScript TypeScript: Built-in declarations included
Eleva is a minimalist, lightweight (6KB), pure vanilla JavaScript frontend framework crafted for exceptional Developer Experience (DX). When developers enjoy building, users enjoy using — Eleva makes it effortless to create beautiful, responsive, and performant User Interfaces (UI).
Unlike React, Vue, or Angular, Eleva:
Eleva is ideal for developers building performance-critical applications, data-intensive dashboards (10K+ rows), micro-frontends, or anyone seeking a simpler alternative to React, Vue, or Angular.
“The best UX comes from developers who love their tools.” — Eleva’s DX philosophy
Stable Release: This is the official documentation for Eleva v1.0.0 - the first stable release! The framework is production-ready with a stable API. We welcome your feedback and contributions to make Eleva even better.
// 1. Import
import Eleva from "eleva";
// 2. Create app
const app = new Eleva("MyApp");
// 3. Define component
app.component("Counter", {
setup: ({ signal }) => ({ count: signal(0) }),
template: (ctx) => `
<button @click="() => count.value++">
Count: ${ctx.count.value}
</button>
`
});
// 4. Mount
app.mount(document.getElementById("app"), "Counter");
| Method | Command/Code |
|---|---|
| npm | npm install eleva |
| CDN (jsDelivr) | <script src="https://cdn.jsdelivr.net/npm/eleva"></script> |
| CDN (unpkg) | <script src="https://unpkg.com/eleva"></script> |
| ESM Import | import Eleva from "eleva" |
| Plugin Import | import { Router, Store } from "eleva/plugins" |
| Method | Description | Returns |
|---|---|---|
new Eleva(name) |
Create app instance | Eleva |
app.component(name, def) |
Register component | Eleva |
app.mount(el, name, props?) |
Mount to DOM | Promise<MountResult> |
app.use(plugin, options?) |
Install plugin | Eleva or plugin result |
signal(value) |
Create reactive state | Signal<T> |
emitter.on(event, fn) |
Subscribe to event | () => void (unsubscribe) |
emitter.emit(event, data) |
Emit event | void |
Quick Rule:
${}needsctx.—@eventsand:propsdon’t.
| Syntax | Purpose | ctx.? |
Example |
|---|---|---|---|
${expr} |
JavaScript value interpolation | Yes | ${ctx.user.name} |
@event |
Event binding | No | @click="handleClick" |
:prop |
Pass prop to child | No | :user="userData.value" |
| Guide | Description |
|---|---|
| Getting Started | Installation, first component, design philosophy |
| Cheat Sheet | Quick reference for syntax, signals, templates, events |
| Glossary | Definitions of key terms and concepts |
| Core Concepts | Signals, templates, lifecycle hooks, emitter, renderer |
| Components | Registration, mounting, children, props, styles |
| Architecture | Data flow diagrams and internal architecture |
| Guide | Description |
|---|---|
| Plugin System | Creating and using plugins |
| Best Practices | Patterns, guidelines, and anti-patterns |
| FAQ & Troubleshooting | Common questions and debugging tips |
| Plugin | Description | Docs |
|---|---|---|
| Attr | ARIA, data-*, boolean attributes | View → |
| Router | Client-side routing & guards | View → |
| Store | Global state management | View → |
| Resource | Description |
|---|---|
| Examples | Real-world examples and tutorials |
| State Patterns | State management patterns |
| Form Patterns | Form handling patterns |
| List Patterns | List rendering patterns |
| Async Patterns | Async data fetching patterns |
| From | Guide |
|---|---|
| React | Migration Guide → |
| Vue | Migration Guide → |
| Alpine.js | Migration Guide → |
How does Eleva compare to popular JavaScript frameworks?
| Feature | Eleva 1.0 | React 19 | Vue 3.5 | Svelte 5 | Angular 19 |
|---|---|---|---|---|---|
| Bundle Size | ~6KB | ~44KB | ~45KB | ~3KB* | ~90KB |
| Dependencies | 0 | 3+ | 0 | 0 | 10+ |
| Virtual DOM | No | Yes | Yes | No | No |
| Reactivity | Signals | useState/Hooks | Refs/Reactive | Compiler | Zone.js |
| TypeScript | Built-in | Optional | Optional | Built-in | Built-in |
| Build Required | No | Yes | Optional | Yes | Yes |
| Learning Curve | Low | Medium | Medium | Low | High |
| Component Model | Object-based | JSX/Functional | SFC/Options | SFC | Decorators |
*Svelte compiles away, so runtime is minimal but build step is required.
Choose Eleva when you need:
Consider other frameworks when you need:
Eleva is built on a simple principle: great DX leads to great UX. When developers have intuitive tools, they build better interfaces.
| DX Feature | How It Helps You Build Better UX |
|---|---|
| Zero Config | Start building immediately — no webpack, no bundlers, no setup |
| Intuitive API | Learn in minutes, master in hours — more time for polishing UI |
| Pure JavaScript | No JSX, no compilation — what you write is what runs |
| Instant Feedback | Signal-based reactivity shows changes immediately |
| TypeScript Built-in | Full autocomplete and type safety out of the box |
| Tiny Bundle | ~2.3KB gzipped means instant page loads for your users |
| No Hidden Magic | Debug easily with transparent, predictable behavior |
Eleva is built for high-performance applications. With an average render time of 0.011ms, Eleva can theoretically achieve 90,000+ fps for simple updates:
| FPS Target | Frame Budget | Eleva Capability | Status |
|---|---|---|---|
| 60 fps | 16.67ms | ~1,500 renders possible | Supported |
| 120 fps | 8.33ms | ~750 renders possible | Supported |
| 240 fps | 4.17ms | ~380 renders possible | Supported |
Performance Highlights:
Eleva targets modern evergreen browsers and requires no polyfills for supported environments.
| Browser | Minimum Version |
|---|---|
| Chrome | 71+ |
| Firefox | 69+ |
| Safari | 12.1+ |
| Edge | 79+ (Chromium) |
Coverage: The supported browsers cover approximately 96%+ of global web traffic.
View full browser support details →
Join our community for support, discussions, and collaboration:
| Channel | Purpose | Link |
|---|---|---|
| GitHub Discussions | General questions, ideas | Discussions |
| GitHub Issues | Bug reports, feature requests | Issues |
| Stack Overflow | Technical questions | eleva, eleva.js |
| Community projects | r/elevajs | |
| Discord | Real-time chat | Join |
| Telegram | Support, feedback | Join |
Contributions are welcome! Whether you’re fixing bugs, adding features, or improving documentation, your input is invaluable.
See the CONTRIBUTING file for guidelines.
For a detailed log of all changes and updates, please refer to the Changelog.
Eleva is open-source and available under the MIT License.