OWL: A web framework for structured, dynamic and maintainable applications
See the codeA modern, lightweight UI framework for applications that scale
Owl 3.0.0 Alpha: This is an alpha release. The API and features are subject to change without notice.
The fastest way to discover Owl is the online playground. It features interactive examples, a live editor, and showcases all major features: reactivity, components, plugins, and more. It also includes guided tutorials and is the recommended way to learn about Owl.
Owl is a modern UI framework (~30kb gzipped, zero dependencies) written in TypeScript, built by Odoo. It powers Odoo's web client, one of the largest open-source business applications, but is equally suited for small projects and prototypes.
Key features:
import { Component, signal, computed, mount, xml } from "@odoo/owl";
class TodoList extends Component {
static template = xml`
<input placeholder="Add todo..." t-on-keydown="this.onKeydown"/>
<ul>
<t t-foreach="this.todos()" t-as="todo" t-key="todo.id">
<li t-att-class="{ done: todo.done }">
<input type="checkbox" t-model="todo.done"/>
<t t-out="todo.text"/>
</li>
</t>
</ul>
<p t-if="this.remaining() > 0">
<t t-out="this.remaining()"/> item(s) remaining
</p>`;
todos = signal.Array([
{ id: 1, text: "Learn Owl", done: false },
{ id: 2, text: "Build something", done: false },
]);
remaining = computed(() => this.todos().filter((t) => !t.done).length);
onKeydown(ev) {
if (ev.key === "Enter" && ev.target.value) {
this.todos.push({
id: Date.now(),
text: ev.target.value,
done: false,
});
ev.target.value = "";
}
}
}
mount(TodoList, document.body);
This example demonstrates Owl's reactivity: todos is a signal, remaining
is a computed value that updates automatically, and the UI reacts to changes
without manual subscription management.
The full documentation is available at odoo.github.io/owl/documentation.
For the Owl 2 documentation, see the owl-2.x branch.
npm install @odoo/owl
Or download directly: latest release
The Owl devtools extension helps debug your applications with component tree inspection, state visualization, and performance profiling. Download it from the releases page.
Owl is released under the LGPL v3 license.
Overall
Maintained
Code review
npm
Latest release
Releases this year
5,830 followers · starred Dec 2023
164 followers · starred Sep 2020
189 followers · starred Oct 2019
832 followers · starred Oct 2023
OWL: A web framework for structured, dynamic and maintainable applications
See the codeA modern, lightweight UI framework for applications that scale
Owl 3.0.0 Alpha: This is an alpha release. The API and features are subject to change without notice.
The fastest way to discover Owl is the online playground. It features interactive examples, a live editor, and showcases all major features: reactivity, components, plugins, and more. It also includes guided tutorials and is the recommended way to learn about Owl.
Owl is a modern UI framework (~30kb gzipped, zero dependencies) written in TypeScript, built by Odoo. It powers Odoo's web client, one of the largest open-source business applications, but is equally suited for small projects and prototypes.
Key features:
import { Component, signal, computed, mount, xml } from "@odoo/owl";
class TodoList extends Component {
static template = xml`
<input placeholder="Add todo..." t-on-keydown="this.onKeydown"/>
<ul>
<t t-foreach="this.todos()" t-as="todo" t-key="todo.id">
<li t-att-class="{ done: todo.done }">
<input type="checkbox" t-model="todo.done"/>
<t t-out="todo.text"/>
</li>
</t>
</ul>
<p t-if="this.remaining() > 0">
<t t-out="this.remaining()"/> item(s) remaining
</p>`;
todos = signal.Array([
{ id: 1, text: "Learn Owl", done: false },
{ id: 2, text: "Build something", done: false },
]);
remaining = computed(() => this.todos().filter((t) => !t.done).length);
onKeydown(ev) {
if (ev.key === "Enter" && ev.target.value) {
this.todos.push({
id: Date.now(),
text: ev.target.value,
done: false,
});
ev.target.value = "";
}
}
}
mount(TodoList, document.body);
This example demonstrates Owl's reactivity: todos is a signal, remaining
is a computed value that updates automatically, and the UI reacts to changes
without manual subscription management.
The full documentation is available at odoo.github.io/owl/documentation.
For the Owl 2 documentation, see the owl-2.x branch.
npm install @odoo/owl
Or download directly: latest release
The Owl devtools extension helps debug your applications with component tree inspection, state visualization, and performance profiling. Download it from the releases page.
Owl is released under the LGPL v3 license.
Overall
Maintained
Code review
npm
Latest release
Releases this year
5,830 followers · starred Dec 2023
164 followers · starred Sep 2020
189 followers · starred Oct 2019
832 followers · starred Oct 2023