Skip to content
forma.
v3.0
☰

Lesson 09 / 9

Take the application with you

Build the matching assets and Rust binary, then deploy the rendering mode you chose.

Create the native starting point

npx @getforma/create-app@3.0.0 my-app --template minimal
cd my-app/admin
npm ci
npm run build:ssr
cd ..
CARGO_BUILD_JOBS=3 cargo run --locked

The first command creates a new project. npm ci installs its locked frontend dependencies; build:ssr produces browser assets and FMIR; cargo run --locked compiles and starts Rust with those assets. Open http://localhost:3000: the native counter should already show 7 in the response, then respond to a click. You are running locally at this point, not publishing a site.

This scaffold is a fresh native starting point, not an automatic deployment of your playground or Field Notes edits. Transfer one interaction at a time and declare request props explicitly. Keep your existing Field Notes project to retain its save behavior and data.

What goes together

Build the frontend before compiling the Rust server that embeds those assets. Ship the manifest, native modules and browser bundles produced by the same build. A server binary containing yesterday’s manifest is not updated by uploading today’s JavaScript.

Try a concrete packaging reference

Download the complete developer-platform source and inspect its Dockerfile. The download intentionally excludes the newspaper’s protected story. In the extracted source root, first create native/private/article.txt with your own nonempty fictional article (UTF-8, at most 64 KiB). Keep it outside public assets; the included native/README.md explains this runtime boundary. Then, from that source root, run:

docker build -t getforma-site .
docker run --rm -p 8080:8080 getforma-site

With a working Docker engine and a successful build, open http://localhost:8080. This origin serves the public documentation, playground and native lab together. It does not start the separate Field Notes inventory service. For HTTPS hosting, set PAYWALL_COOKIE_SECURE=true so the newspaper uses Secure cookies and validates the HTTPS Origin on form submissions. Leave it unset for local HTTP.

Reference deployment: the October 25, 2026 website release passed Linux container CI and all 42 deployment acceptance checks against getforma.dev, including the newspaper and browser playground. A changed artifact or another HTTPS host needs its own verification through the proxy. The unauthenticated Field Notes course remains local-only.

Choose a host for the execution model

Check the result

In the container example, open /lab/native/?count=17: the initial HTML should contain 17, Add one should show 18, and refresh should return to 17. That confirms both server rendering and temporary browser interaction. It does not test durable inventory storage; Field Notes is a separate service.

Before calling it deployed

Check a real response before JavaScript, activate the island, verify errors and input validation, and confirm your deployed binary serves its matching asset manifest. Follow the deployment guide for the full verification checklist and application boundaries.

Keep building

Find your next answer.

Search Forma 3.0 documentation, guides and examples.