Search titles and sections of every page. ↑↓ to move, ↵ to open

Shipping

Stability

2 min read Edit on GitHub

Tern follows semantic versioning. From v1.0.0, minor and patch releases do not break code that uses the public API described here. Breaking changes happen only in major versions, are listed in the changelog, and come with a migration note.

#What the promise covers

Area Covered
Route conventions src/routes, +page.svelte, +layout.svelte, +error.svelte, the .param, .optional, .rest and .group directory suffixes, and the exported names Load, LayoutLoad, Actions, GET (and other methods), SSR, Prerender and Entries
kit for application code Ctx and its methods, LoadOf, Action, FormAction, Actions, Parent, Defer and Deferred, Error, NotFound, Redirect, Fail, FieldError, FormError and their error types, Invalid, the validate, form, label and message struct tags and the rules' messages, App, New's options (With…), Plugin and Setup
Built-in plugins Everything under plugins/
Accounts The accounts package, and its tables: Migrate brings tables made by an earlier release up to date, keeping their data
Live components <script lang="go" live>, the goscript API they use (except MountLive, StartLive, Instance and LiveOptions, which the generated code and kit use), goscript/livetest, realtime/pgbroker, and what the markup sees (values, Funcs and live)
@ternkit/tern Everything exported from @ternkit/tern, @ternkit/tern/vite and @ternkit/tern/ui (components, their props, and the --tern-* custom properties; their exact look may be refined in minor releases)
Generated modules The names exported from ./$types (PageProps, PageData, LayoutProps, LayoutData, ActionData, RouteParams, …) and from $routes (route, base, Routes, RoutePattern), and forms from ./$forms
Wire format How Go types map to TypeScript, the placeholders in src/app.html, and tern.json
CLI The tern commands and their flags
Runtime behavior The documented behavior in the guide, such as when loads rerun and which headers are sent

#What it does not cover

  • The generated-code interface: kit.Manifest, LayoutDef, RouteDef, PageDef, FallbackDef, and the @ternkit/tern/client, /server and /polyfills entry points, and the native/js and native/svelte packages that tern_native.gen.go uses. tern.gen.go, tern_native.gen.go and .tern/ are regenerated by the CLI, and go get -tool keeps the CLI and kit at the same version, so these can change in any release.
  • <script lang="go"> without live, compiled to WebAssembly, which is experimental.
  • Packages under internal/, which Go prevents other modules from importing.
  • The exact HTML and JSON Tern produces, beyond what is documented: markup details, the data request format, and log messages may change.
  • Unsupported setups: Go and Node.js versions older than those in the README, and Svelte or Vite majors that @ternkit/tern does not list as peer dependencies.

#Deprecation

When something is going to be removed, it is first marked Deprecated: in its doc comment (Go) or @deprecated (TypeScript) for at least one minor release, with the replacement named, before the next major version removes it.

#Supported versions

Security and bug fixes go to the latest minor release. After a new major version, the previous major gets security fixes for six months.