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 pathfor the foundation we want to treat as canonicalpath to prod readinessfor packages we intend to harden and graduateexperimentalfor intentionally unstable surfacesdeferredfor packages that are not on the current hardening path
What the docs assume
Section titled “What the docs assume”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
Stability labels
Section titled “Stability labels”| Label | Meaning | Typical versioning |
|---|---|---|
alpha | Early internal preview. Expect missing pieces and breaking changes. | 1.2.0-alpha.1 |
beta | Feature-complete enough to test with real workloads. | 1.2.0-beta.3 |
rc | Release candidate. Intended to become stable unless blockers appear. | 1.2.0-rc.1 |
experimental | Not yet committed to long-term compatibility. | Usually published on next or beta |
unstable | Umbrella term for any non-stable API. | Usually a prerelease or preview channel |
stable | Public 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.
Release channels
Section titled “Release channels”Use npm dist-tags to control which version installs by default:
latestfor stable releasesnextfor the upcoming release linebetafor prerelease testerscanaryordevfor 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.
Runtime warnings
Section titled “Runtime warnings”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.
Current feature-pack signaling
Section titled “Current feature-pack signaling”| Feature | Package(s) | Status | Notes |
|---|---|---|---|
| Core app model | @lastshotlabs/slingshot-core, @lastshotlabs/slingshot-entity | Core path | These 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-postgres | Prod path | Packages we expect to harden and graduate. |
| Auth family | @lastshotlabs/slingshot-auth, @lastshotlabs/slingshot-oauth, @lastshotlabs/slingshot-oidc, @lastshotlabs/slingshot-m2m, @lastshotlabs/slingshot-scim | Experimental | Identity, 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-infra | Deferred | Feature-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.
How to use this in practice
Section titled “How to use this in practice”- 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.