import { h, mount } from "@getforma/core"; type DemoProps = { count: number; rawHtmlHref: string }; function NoJavaScriptDemo(props: DemoProps) { return (
Skip to content
forma.

THE NATIVE LAB / ZERO JAVASCRIPT

A complete page.
No browser runtime.

Rust renders declared request props through the same native pipeline. There are no islands here, so the build sends no JavaScript.

REQUEST-TIME HTML ZERO EXECUTABLE SCRIPTS NATIVE FORM NAVIGATION

THIS REQUEST'S SERVER VALUE

{props.count}

Submit the form to change this number. Rust returns a new page at this result, with no JavaScript required.

Ask Rust for a new page.

The number travels in the URL, and Rust puts it in the HTML. Refreshing uses that URL again; nothing is saved to a database.

Choose interaction deliberately.

Both demos render real request data in Rust. Example 05 adds instant browser interaction; this example uses ordinary form navigation. It is dynamic server rendering, even without JavaScript in the browser.

The raw HTML view renders a new response with the same request count. It is not a capture of this response.

Compare the island route →
); } mount( () => NoJavaScriptDemo({ count: 0, rawHtmlHref: "/lab/native/no-js/html/?count=0", }), "#app", );