Tiny, yet powerful web UI library built around the islands architecture - ship minimal JavaScript, hydrate only what matters. https://xitter.cf/t.co/zevwtqQ0rP

🇪🇺
Joined April 2026
Pinned Tweet
Ilha is live in alpha 🏝️ A tiny isomorphic UI library - ~1,500 lines of code, one dependency, signal-based reactivity, SSR + hydration, and no build step required. Works with any backend. Renders anywhere.
1
1
6
2,010
Ilha retweeted
who made it
1
6
287
Based on Ilha and Oxide 🚀
Announcing the preview of Noite, aka Vercelld. Noite is a self-hosted PaaS based on celld, Rust (Axum), and a UI based almost entirely on my libraries. My goal is to help you get Cloudflare Workers up and running on a potato VPS (I use $5, 2 vCPU and 2 GB RAM as my benchmark).
5
89
Ilha retweeted
Both Ilha and Oxide are now on Effect v4 stable.
Effect v4 is here. One ecosystem. Zero dependencies. The next chapter of Effect and the foundation for building reliable software and AI agents in TypeScript.
1
1
9
401
Ilha retweeted
Replying to @stolinski
Ilha/Oxide/Effect
2
4
234
🫶
Replying to @MKassabov
Can you try Ilha? It’s built on the Effect runtime
5
86
Ilha retweeted
Same prompt btw. Went to grab a coffee and came back 30 min later to this.
Opus 5.5 on Max effort - "make a dynamic 15-second motion graphics video that shows what an incredible motion designer you are, like it's your showreel for a résumé. go all out."
2
3
73
Ilha retweeted
I'm back! I was fighting Ilha 0.14: - Rewrote internals to @EffectTS_. - 50% weight reduction (16->8 KB minzipped). - Reactivity is now based on Effect's Atom. - state(), derived(), action() are now just atom(). - API is now async and generator first.
7
8
96
4,567
Ilha 0.12 is here, and it: - ditches Fluent Builder for clarity, so there's one preferred authoring style. - introduces a whole new SSR protocol with our new "Oxide" backend (un)framework. - extends the capabilities of deriveds; they can now consume generators.
2
1
7
670
Updated SSR protocol is coming!
The new Ilha SSR protocol is insane! I created my own tiny backend framework with Server Actions. The new version of the Ilha Router will also enable defining and rendering of islands on the server side 🤯
4
184
Ilha retweeted
Final Day: By now, you know all the necessary Ilha functions required to build a typical web UI. What's next? I recommend reaching out to the side libs and picking either @ilha/router or @ilha/astro to build a real app. By the way, @ilha/store works really well with them.
Day 6: Islands have a lifecycle, and you may want to act when they are initialized or updated. For example, you might want to render a map or save editor's text to the DB. This is when you use .onMount() and .effect(). Returning a function in these works as a cleanup.
1
2
6
240
Ilha retweeted
Day 6: Islands have a lifecycle, and you may want to act when they are initialized or updated. For example, you might want to render a map or save editor's text to the DB. This is when you use .onMount() and .effect(). Returning a function in these works as a cleanup.
Day 5: By now, you know everything about the state of the island. But how do we change it? You need the .action() method and bind:'s. The action() attaches a function to a DOM event. The Bind API can handle two-way data binding between a state entry and a DOM element's property.
1
1
1
5
421
Ilha retweeted
Day 5: By now, you know everything about the state of the island. But how do we change it? You need the .action() method and bind:'s. The action() attaches a function to a DOM event. The Bind API can handle two-way data binding between a state entry and a DOM element's property.
Day 4: Off to my favorite: the derived() function to compute a value based on the state. This elegant API lets you fetch external data and perform calculations. It provides a wrapper for loading state. Like in Svelte, derived values are writable, so they handle optimistic UI.
1
1
1
8
496
Ilha retweeted
Day 4: Off to my favorite: the derived() function to compute a value based on the state. This elegant API lets you fetch external data and perform calculations. It provides a wrapper for loading state. Like in Svelte, derived values are writable, so they handle optimistic UI.
Day 3: Islands are interactive. To define a property that changes over time, use the .state() function. This defines a signal that tells the island to re-render when the value changes. Note that state can be initialized from the input values from yesterday's lesson.
2
2
1
7
789
Ilha retweeted
Day 3: Islands are interactive. To define a property that changes over time, use the .state() function. This defines a signal that tells the island to re-render when the value changes. Note that state can be initialized from the input values from yesterday's lesson.
Day 2: In every computer science course, you'll learn that a computer program takes a user from input to output. This is what the .input() function is all about. You can either specify the TS type or use a schema to do so.
1
1
1
8
731
Ilha retweeted
Day 2: In every computer science course, you'll learn that a computer program takes a user from input to output. This is what the .input() function is all about. You can either specify the TS type or use a schema to do so.
Day 1: What is an island? It's an interactive component that can render on both the server and client sides. Although you share the same component on both ends, the server side can only render the shell of the component, which will be used later on the client side.
1
1
1
6
663
Ilha retweeted
Day 1: What is an island? It's an interactive component that can render on both the server and client sides. Although you share the same component on both ends, the server side can only render the shell of the component, which will be used later on the client side.
Day 0: I want you to learn my UI library, and I think you can do so by reading one tweet a day. By the end of next Sunday, you should be proficient in @ilha_js. In return, I ask you to repost lessons so that more people can learn from it. See you tomorrow for our first lesson!
2
2
1
10
1,499