Stop learning new syntax. Lithium harnesses the power of standard Web APIs and extends them naturally with a few simple markup rules. Write less, do more.
Lithium doesn't invent a new language. It embraces HTML, CSS, and JavaScript as they are, adding minimal, intuitive extensions.
Data flows down through properties, changes flow up through events. This creates a clear, predictable data pattern that mirrors how the web has always worked.
Templates are declarative and read-only. State changes don't come from the template—they flow through your component logic via events and ref updates.
Simple rules that make everything powerful
Render lists with natural iteration syntax
<template
for="item of items">
<li>{{item}}</li>
</template>
Conditionally render DOM elements
<template
if="isVisible">
<div>Hidden until true</div>
</template>
Bind properties to reactive expressions
<button
bind-disabled="isActive">
click me
</button>
Listen to events and trigger handlers
<button
on-click="deleteItem(id)">
Delete
</button>
Define component behavior and state
<script setup>
export default
function() {
const count = ref(0);
return { count };
}
</script>
Create reactive values and derived state
const count = ref(0);
const double =
computed(() => count.value * 2)
watch(count, () => ...)
Entire apps in a single file with inline components and a declarative API
Only learn the extensions you need. HTML stays HTML.
Works instantly in the browser with no compilation step.
Add reactivity to existing HTML incrementally.
Start building with Lithium today. It takes just minutes to get up and running.
Star on GitHub →