Farm.js

Stability and Support

Farm 0.1 is the first release line with a compatibility promise. This page states what the promise covers, how each package, renderer, deployment target, and feature is classified, and how changes are introduced.

Stability levels

LevelWhat you can rely on
StableCovered by the versioning policy below. Breaking changes follow a deprecation in an earlier minor release.
BetaSupported and tested, but the API can still change in a minor release without a deprecation cycle. Beta packages keep publishing 0.1.0-beta.N versions.
ExperimentalOpt-in only, behind an experimental option or an explicit flag. It can change or be removed in any release. Disabled experimental features add no runtime cost.

Versioning policy

Farm follows semantic versioning with the usual rules for 0.x releases:

  • Patch releases (0.1.1, 0.1.2) fix bugs and security issues. They do not remove or change stable APIs, configuration, generated route types, or production output contracts.
  • Minor releases (0.2.0) may change stable APIs. A stable API is deprecated in an earlier minor release first, keeps working with a runtime or type-level warning, and the release notes include migration steps.
  • Experimental APIs can change in any release. The release notes call out those changes.
  • Security fixes may tighten behavior in a patch release when the previous behavior was unsafe. The release notes say so explicitly.

The integration packages pin @farm.js/core to the exact version they were released with, so keep every package in the shared release group on the same version. farm upgrade does this for you.

Independently versioned beta plugins must also be republished against a stable core before a stable release is promoted. The release publisher checks registry manifests and stops if a beta package still resolves a prerelease core, preventing two Farm runtimes from being installed.

Packages

Stable, released together at the same version:

  • @farm.js/core, @farm.js/cli, @farm.js/create-app, @farm.js/plugin, @farm.js/devtools
  • @farm.js/integration-utils and the @farm.js/integrations compatibility re-exports
  • The first-party integrations: @farm.js/ai, @farm.js/auth, @farm.js/auth0, @farm.js/authjs, @farm.js/autumn, @farm.js/better-auth, @farm.js/cf-agent, @farm.js/clerk, @farm.js/contentful, @farm.js/email, @farm.js/eve, @farm.js/jobs, @farm.js/polar, @farm.js/preview-gateway, @farm.js/sanity, @farm.js/sentry, @farm.js/stripe, @farm.js/supabase, @farm.js/unkey, @farm.js/workos

An integration's stable surface is its Farm API: the factory, options, mounted routes, generated client bindings, and documented request and response shapes. Provider behavior follows the provider SDK version declared in the package's peer dependencies.

Beta, versioned independently:

  • Renderer packages: @farm.js/react (the React compiler and runtime package; the default React path lives in core), @farm.js/preact, @farm.js/solid, @farm.js/vue, @farm.js/svelte
  • Plugins: @farm.js/analyzer, @farm.js/cache-redis, @farm.js/content, @farm.js/hints, @farm.js/msw, @farm.js/otel, @farm.js/partytown, @farm.js/preview-tunnel, @farm.js/pwa, @farm.js/scripts, @farm.js/search, @farm.js/stylex, @farm.js/sync

Experimental packages: @farm.js/federation, @farm.js/mcp, @farm.js/wasm, @farm.js/webmcp.

Renderers

RendererLevelPackageNotes
ReactStablebuilt into @farm.js/coreDefault renderer. Used by every template unless you pick another one.
PreactBeta@farm.js/preact
SolidBeta@farm.js/solid
VueBeta@farm.js/vue
SvelteBeta@farm.js/svelteBuffered server rendering (no streaming).

Framework-level behavior (routing, APIs, actions, queries, middleware, deployment) is renderer-neutral and covered by the shared renderer conformance suite. See Renderers for the per-renderer capability matrix.

Deployment targets

TargetPresetLevelHow it is verified
nodenode-serverStableProduction browser suites in CI run against a built node-server output.
vercelvercelStableBuild Output tests in CI; the Farm documentation site is deployed with it.
cloudflarecloudflare-pagesStableBuilt output runs in workerd on every supported Node.js version in CI.
netlifynetlifyStableBuilt output runs through Netlify's request pipeline on every supported Node.js version in CI.
Direct Nitro preset valuesanyPass-throughFarm passes the preset to Nitro. Output is not tested by Farm unless it appears above.

deploy.target values get Farm's defaults and deploy commands. A raw Nitro preset such as vercel-edge, netlify-edge, cloudflare-module, deno, or bun is supported on a best-effort basis. See Deployment.

Experimental features

These are off by default and outside the stability promise:

FeatureHow to enable
React Server Componentsexperimental.serverComponents, or the @farm.js/plugin/rsc setup
Server Actions under RSCexperimental.serverActions
Partial Prerenderingexperimental.ppr, then opt routes in
Isolated client hydrationexperimental.isolatedClientHydration: "analyze" | "enabled"
React compilerreact({ experimental: { compiler: true } }) from @farm.js/react
API route MCP serverapiMcp() from @farm.js/mcp
WebMCP browser tools@farm.js/webmcp
Module federation@farm.js/federation
WebAssembly components@farm.js/wasm

Known limits in 0.1

  • Runtime-only docs features on edge. Farm can precompile the built-in renderer and external adapters that publish an edge compiler, but adapter features that require live server callbacks or mutable sessions still need a Node target. The official adapter reports the exact unsupported features during the build.
  • Node.js 22.13 or newer is required for development and for Node deployment targets.

Reporting problems

Open an issue at github.com/farming-labs/farm.js with the Farm version (farm doctor prints it), the renderer, and the deployment target.