Shipping
Stability
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,/serverand/polyfillsentry points, and thenative/jsandnative/sveltepackages thattern_native.gen.gouses.tern.gen.go,tern_native.gen.goand.tern/are regenerated by the CLI, andgo get -toolkeeps the CLI andkitat the same version, so these can change in any release. <script lang="go">withoutlive, 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/terndoes 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.