Skip to content

Maturity and Package Status

Slingshot uses the normal npm and SemVer conventions:

  • SemVer prerelease identifiers describe maturity in the version string.
  • npm dist-tags describe release channels.
  • runtime warnings surface experimental APIs when a developer actually uses them.

All published packages in this worktree are currently pre-1.0 and versioned 0.0.2, so the safest assumption is that the public API may still move.

The product packages below are grouped into four buckets:

  • core path for the foundation we want to treat as canonical
  • path to prod readiness for packages we intend to harden and graduate
  • experimental for intentionally unstable surfaces
  • deferred for packages that are not on the current hardening path

The safest path today is:

  • learn the framework through defineApp(...), packages, entities, events, WebSockets, and SSE
  • treat add-on product packages as feature packs that may still evolve
  • look for explicit bucket badges in the sidebar and on feature pages
LabelMeaningTypical versioning
alphaEarly internal preview. Expect missing pieces and breaking changes.1.2.0-alpha.1
betaFeature-complete enough to test with real workloads.1.2.0-beta.3
rcRelease candidate. Intended to become stable unless blockers appear.1.2.0-rc.1
experimentalNot yet committed to long-term compatibility.Usually published on next or beta
unstableUmbrella term for any non-stable API.Usually a prerelease or preview channel
stablePublic API with normal SemVer expectations.1.2.0 or later

Prod path is the repo-level docs label for pre-1.0 packages that are expected to be hardened and graduated. Experimental is the stricter label for packages we keep on the next channel and warn about at runtime when used. Deferred means the package is intentionally outside the current hardening plan.

Use npm dist-tags to control which version installs by default:

  • latest for stable releases
  • next for the upcoming release line
  • beta for prerelease testers
  • canary or dev for rapid preview builds

npm install <pkg> resolves latest unless you explicitly ask for a different tag. The non-latest tags are conventions rather than npm-enforced states.

When a package is still experimental, the public factory should warn once when it is used, not when the module is merely imported.

import { emitPackageStabilityWarning } from '@lastshotlabs/slingshot-core';
export function createSomePlugin() {
emitPackageStabilityWarning(
'@lastshotlabs/slingshot-some-plugin',
'experimental',
'Use the next channel while the API is still being hardened.',
);
return { name: 'slingshot-some-plugin' };
}

That keeps the warning close to the actual user-facing API. In Node and Bun, this uses the standard process.emitWarning() path with an ExperimentalWarning type.

FeaturePackage(s)StatusNotes
Core app model@lastshotlabs/slingshot-core, @lastshotlabs/slingshot-entityCore pathThese are the canonical docs path.
Prod path@lastshotlabs/slingshot-permissions, @lastshotlabs/slingshot-organizations, @lastshotlabs/slingshot-orchestration-engine, @lastshotlabs/slingshot-orchestration-bullmq, @lastshotlabs/slingshot-orchestration-temporal, @lastshotlabs/slingshot-orchestration, @lastshotlabs/slingshot-bullmq, @lastshotlabs/slingshot-assets, @lastshotlabs/slingshot-search, @lastshotlabs/slingshot-webhooks, @lastshotlabs/slingshot-kafka, @lastshotlabs/slingshot-admin, @lastshotlabs/slingshot-mail, @lastshotlabs/slingshot-notifications, @lastshotlabs/slingshot-push, @lastshotlabs/slingshot-ai, @lastshotlabs/slingshot-billing, @lastshotlabs/slingshot-runtime-bun, @lastshotlabs/slingshot-runtime-node, @lastshotlabs/slingshot-runtime-edge, @lastshotlabs/slingshot-ssr, @lastshotlabs/slingshot-ssg, @lastshotlabs/slingshot-postgresProd pathPackages we expect to harden and graduate.
Auth family@lastshotlabs/slingshot-auth, @lastshotlabs/slingshot-oauth, @lastshotlabs/slingshot-oidc, @lastshotlabs/slingshot-m2m, @lastshotlabs/slingshot-scimExperimentalIdentity, sessions, OAuth, OIDC, M2M, and SCIM.
Deferred feature packs@lastshotlabs/slingshot-community, @lastshotlabs/slingshot-chat, @lastshotlabs/slingshot-game-engine, @lastshotlabs/slingshot-deep-links, @lastshotlabs/slingshot-embeds, @lastshotlabs/slingshot-emoji, @lastshotlabs/slingshot-gifs, @lastshotlabs/slingshot-image, @lastshotlabs/slingshot-interactions, @lastshotlabs/slingshot-polls, @lastshotlabs/slingshot-infraDeferredFeature-oriented and platform packages that are not on the current production hardening track.

The auth-family packages that remain experimental are published on the next channel and emit a one-time runtime warning when their public factories are used.

  • If you are getting started, stay on the core path first.
  • If you need a Prod path package, read its feature page and package overview before adopting it.
  • If you need long-term stability around a Prod path package, expect some API churn while the package is still pre-1.0.
  • If you are publishing a package, use a prerelease version plus the appropriate dist-tag instead of inventing a custom status field.