These docs cover 0.2.0-beta.26. Each guide distinguishes supported beta behavior, explicit deployment boundaries, and retained 0.1 compatibility material.

Browse documentationAll guides

Release guide · 0.2.0-beta.26

Beta support matrix

Presolve is a public beta with a deliberately explicit contract. The compiler fails closed when it cannot prove a supported meaning; it does not silently substitute a generic client renderer, source transform, or server runtime.

beta.26 typed runtime constants

Computed values, Effects, and Context now share recursively typed constant artifacts. Numeric literals remain numbers at runtime instead of becoming serialized strings, including nested arrays and objects; the canonical scaffold counter proves 0 → 1 with the derived value 1 → 2.

beta.25 canonical Node execution

The schema-v3 Node host now executes compiler-proven Form-bound server actions and route-owned loader Resources through digest-verified Vite registries. Exact request decoding, result codecs, cache policy, cancellation, browser bootstrap, typed failures, JSON, and redirects have deterministic request and browser proof.

beta.23 computed update correction

Actions now execute only the computed update plan owned by their active component instance. Interactive routes remain clean when another route or an unmounted component contributes computed work to the same application publication.

beta.24 publication-size correction

Embedded browser runtime artifacts are now compact JSON while canonical external artifacts remain readable and digest-bound. Large multi-route publications keep the same compiler semantics with substantially less duplicated HTML, making direct Cloudflare publication reliable without adapter patches.

beta.22 scaffold correction

New projects declare the audited esbuild and workerd installers required by Vite and Wrangler, so pnpm 11 can enforce its strict dependency-build policy without blocking checks, builds, or deployment preparation. Use pnpm create presolve@0.2.0-beta.26 my-app during the release's first day because pnpm 11 intentionally delays unversioned packages for 24 hours.

Development updates

presolve dev watches authored inputs, hot-swaps finished global CSS without replacing page state, safely reloads semantic changes from a new compiler publication, and preserves the last good page with an accessible diagnostic when a build fails.

Current package interoperability

An Action can invoke an authority-proven named import using the documented primitive parameter or cancellable Promise<void> forms. TypeScript proves the export, Vite bundles it, and Presolve owns arguments, cancellation, publication integrity, diagnostics, and resume-without-replay.

beta.16 returning-client correction

Presolve now publishes content-addressed global CSS and route runtimes while retaining stable compatibility copies. Generated pages reference the immutable asset names, so Safari and other returning clients cannot pair a newly deployed document with stale framework CSS or behavior.

beta.15 production correction

Conventional file-route builds now derive browser and resume records only from the selected layout/route instance tree. Interactive sibling routes cannot leak targets, events, state, or bindings into another page.

Supported for beta projects

CapabilityWhat is coveredUse it this way
Component modelComponent classes, nested components, element and empty null conditional branches, keyed lists, retained keyed identity, and child-first teardown.Extend Component and return TSX from one instance render() method.
ReactivityOwned state, synchronous actions, bindings, events, computed getters, effects, cleanup, and compiler-owned update plans.Keep state writes inside documented action(handler) fields and use pnpm check before relying on a new shape.
FormsForms, nested Fields, value/checked/file bindings, built-in and Standard Schema validation, client submissions, canonical Node server actions, cancellation, and resume products.Use defineForm() and field(); server execution requires the exact formData/signal callback and package capability.
Resources and server dataCanonical route-owned loader Resources, typed data/error codecs, Node bootstrap, public/private/no-store caching, cancellation, and reload resume.Use loader<Data, Error>() with canonical route parameters and one admitted named package import.
Composition and resumeSlots, Context, form state, Resources, resumability artifacts, identity validation, and cold fallback are compiler products.Deploy the complete build inventory; never edit generated runtime or resume files.
Application platformFile routes, layouts, document templates, metadata sidecars, global CSS, Tailwind input, imported assets, public files, and static output.Use app/app.tsx, app/app.css, app/index.html, app/routes/, and public/ for new projects.
Tooling and releaseDiagnostics, explain, compiler query products, Vite/testing adapters, Cloudflare Static Assets preparation, and schema-v3 Node execution.Keep the framework, CLI, and editor extension on the same beta release train.

Explicit boundaries

BoundaryCurrent behavior
Arbitrary TypeScriptTypeScript acceptance alone does not prove compiler semantics. Unsupported forms produce a diagnostic instead of a runtime fallback.
Server executionThe generated Node host executes canonical Form-bound actions and canonical route-owned loaders. It is not a generic SSR, streaming, database, authentication, session, or infrastructure layer, and the Cloudflare static adapter rejects dynamic handoffs.
Packages and capabilitiesOrdinary packages may supply erased build inputs. Current package Actions admit exact named-import terminal calls with documented primitive parameters, synchronous completion, or cancellable Promise<void>. Values entering compiler semantics and specialized integrations still require their capability-specific contracts; package internals are never inferred.
Historical projectsPresolve 0.1 compatibility is maintained for migration and documented separately. The current beta guides and scaffold are the source of truth for new work.

Adopt the beta responsibly

  1. Pin every Presolve package to the same published beta version.
  2. Start from the canonical project layout and component examples in this guide.
  3. Run pnpm check, pnpm build, and browser coverage for the lifecycles your application owns.
  4. Inspect compiler diagnostics and emitted artifacts when changing structural or deployment behavior.
  5. Use a capability-specific server executor only when you have selected and operated one explicitly.
Report reproducible beta issues

Include the exact package versions, a minimal project, compiler diagnostics, and the generated artifact or browser behavior that differs from this contract in GitHub Issues.