Skip to content
forma.

THE NATIVE LAB / FORMA 3.0

HTML first.
Interaction where it belongs.

This page arrived as HTML from a Rust server. One counter becomes interactive; the surrounding document stays ordinary HTML.

TSX → FMIR → RUST → HTMLTYPED REQUEST PROPSONE ADOPTED ISLAND

BROWSER COUNT · ONE INTERACTIVE ISLAND

Initial server value: 17

17

Add one updates this page’s memory without a server request. Nothing is saved: refreshing starts again from the count in the URL.

CHANGE THE REQUEST

Start a new server render.

Enter a starting value for a new page. Rust renders it as HTML, then the browser count starts from that value. This form does not save your counter clicks.

This ordinary form also works with JavaScript disabled. The new page opens at the result, keeping the demo in view.

Rendering is separate from saving.

A signal holds state for this page’s lifetime. Keeping it across reloads needs an explicit choice: a URL, browser storage, or a save to the server. This demo proves that a browser island can activate Rust-rendered HTML and update its existing nodes.

For edits that are validated and saved by Rust, try the Field Notes application.

Inspect the handoff.

  1. Change the request value and view page source: the number is already in the HTML.
  2. Click Add one: Forma updates the adopted counter without replacing its server-created element.
  3. Disable JavaScript: the request form still works. For a page that sends no JavaScript at all, open the companion demo.

The raw HTML view renders a new response with this request's initial count. It is not a capture of this response or of later browser changes.

Explore the zero-JavaScript route →