Skip to content
forma.
v3.0
☰

From a small idea to a working app

Start with something
you can take apart.

Each example has editable source and a specific lesson. Start in the browser, then connect the same programming model to native HTML.

01 / Browser

A signal, a button

A component sets up once. The accessor updates only the text that reads it.

Explore
02 / Browser

Derived state

Change the team size. A memo derives the total, and the DOM follows.

Explore
03 / Browser

A keyed list

Add, reverse and remove rows. Stable keys preserve each row's DOM identity.

Explore
04 / Browser

Indexed item replacement

Replace a row's data by key without replacing its DOM or losing a typed shelf note.

Explore
05 / Native + island

HTML first. Then interaction.

Rust sends the initial count as HTML. A browser signal then updates the counter instantly, without another request.

Explore
06 / No JavaScript

Let the server update the page.

Rust sends the count as HTML. Submit an ordinary form to change it; the browser needs no JavaScript.

Explore
07 / Server authorization

A paywall before the HTML.

A fictional newspaper serves a teaser or full article according to server-held demo access. Try the ordinary forms with JavaScript disabled.

Explore

05 and 06: what changes?

Both pages arrive with the requested count already rendered by Rust. In 05, Add one changes a signal in the current page’s memory. In 06, submitting the form asks Rust for new HTML. Both forms start a new request from the number you enter.

Neither demo saves your count. Refresh reads the number in the URL again. Browser memory, browser storage and saved server data are separate choices. For a real save-and-reload example, try Field Notes.

07: decide access on the server

The Lantern Ledger is a fictional newspaper. Its demo subscription form grants temporary server-held access; no payment is taken. Refresh keeps that access until you reset it, the session expires or the server restarts. The protected article body stays out of the visitor response until the server grants access. Read how the paywall works and what it protects.

Start a project

Complete course application

Field Notes stockroom

A downloadable native application with adopted editors, server validation, conflict handling and local file persistence.

Explore
Official scaffold

TypeScript + Rust

A minimal native page, typed props, build configuration and one interactive island.

Explore
Browser recipe

Your existing toolchain

Use signals and components with your JavaScript bundler. Rust is optional for client-only applications.

Explore
Read the decisions

Choose a rendering mode

Native SSR, declared islands, browser pages and explicit HTML runtime have different responsibilities.

Explore

Find your next answer.

Search Forma 3.0 documentation, guides and examples.