Interactive examples · source included
See the browser plans work.
Every preview below is running in this Presolve route. Use it, inspect the matching source, and follow the linked guide for the compiler products and lifecycle behind the behavior.
Current Presolve syntaxReal compiler artifactsNo generic hydrationMobile and keyboard ready
State + Actions + Computed
Read the guide →Cart quantity
Compiler field notesDigital edition · immediate delivery
Total
Source
app/routes/cart.tsximport { action, Component, state } from "presolve";export class Cart extends Component {quantity = state(1);get total() { return this.quantity * 24; }increase = action(() => { this.quantity += 1; });decrease = action(() => { this.quantity -= 1; });}Boolean State
Resume behavior →Preference toggle
Release notificationsCurrent preference:
State retained for resumeARIA state updates with the same binding
Source
app/components/Preference.tsxexport class Preference extends Component {enabled = state(true);toggle = action(() => {this.enabled = !this.enabled;});}State + Computed + Attribute Bindings
Update planning →Production feature rollout
Release channelruntime-v2 / production
HealthyAudience exposure
Estimated accounts
Automatic rollbackPause when error budget is exceeded
Source
app/components/RolloutControl.tsxexport class RolloutControl extends Component {rollout = state(25);guardrails = state(true);get accounts() { return this.rollout * 40; }setFifty = action(() => { this.rollout = 50; });toggleGuardrails = action(() => {this.guardrails = !this.guardrails;});}Actions + Conditional Structure
Structural rendering →Build pipeline explorer
01 · AnalyzeOne semantic graph
Presolve resolves identity, ownership, dependency order, and exact update plans before publication.
- component.runtime.json
- forms.runtime.json
- resume.runtime.json
Source
app/components/PipelineExplorer.tsxexport class PipelineExplorer extends Component {compiler = state(true);browser = state(false);showBrowser = action(() => {this.compiler = false;this.browser = true;});// Each branch is compiler-authored structural membership.{this.browser ? <BrowserPlan /> : null}}Forms + Validation + Submission
Form lifecycle →Beta access application
Source
app/components/Signup.tsximport { defineForm, email, field, minLength, required } from "presolve";signup = defineForm({serialization: "json",fields: {name: field({ initial: "", validate: [required(), minLength(2)] }),email: field({ initial: "", validate: [required(), email()] }),company: field({ initial: "", validate: [required(), minLength(2)] }),productUpdates: field({ initial: true }),},submit: async ({ value, signal }) => {this.submissions += 1;},});Files + FormData + Validation
File field lifecycle →Creative asset intake
Source
app/components/AssetIntake.tsximport { defineForm, field, required } from "presolve";upload = defineForm({serialization: "form-data",fields: {assets: field<File[]>({initial: [], validate: [required()]}),},submit: async ({ value, signal }) => {this.accepted += 1;},});<input type="file" multiple required bind:files={this.upload.fields.assets} />Build your own
Start from the same compiler contract.
The generated starter includes a real interactive route, global CSS, public metadata, and the project structure used throughout these examples.