This document describes how to release new versions of the FTL SDKs.
- Rust and Cargo installed
- Authenticated with crates.io:
cargo login - Member of the ftl-sdk crate on crates.io
- Node.js and npm installed
- Authenticated with npm:
npm login - Member of the ftl-sdk package on npm
git status # Should show no uncommitted changes
git pull origin main # Ensure you're up to datecd src/ftl-sdk-rs
make check # Runs format check, linting, and tests
make publish-dry-run # Verifies the packagecd src/ftl-sdk-ts
npm run check # Runs format check, linting, and tests
npm run publish:dry-run # Verifies the packageChoose the appropriate version bump based on Semantic Versioning:
- Patch (0.0.x): Bug fixes, documentation updates
- Minor (0.x.0): New features, non-breaking additions
- Major (x.0.0): Breaking changes
cd src/ftl-sdk-rs
make version-patch # or version-minor, version-majorcd src/ftl-sdk-ts
npm run version:patch # or version:minor, version:majorUpdate CHANGELOG.md with the new version and changes.
git add -A
git commit -m "chore: bump ftl-sdk-{rs|ts} to vX.Y.Z"git tag ftl-sdk-rs-vX.Y.Z # For Rust SDK
git tag ftl-sdk-ts-vX.Y.Z # For TypeScript SDKcd src/ftl-sdk-rs
make publish
# Confirm when promptedThe package will be available at: https://crates.io/crates/ftl-sdk
cd src/ftl-sdk-ts
npm run publish:npmThe package will be available at: https://www.npmjs.com/package/ftl-sdk
git push origin main
git push origin ftl-sdk-rs-vX.Y.Z # If releasing Rust
git push origin ftl-sdk-ts-vX.Y.Z # If releasing TypeScriptFor convenience, the TypeScript SDK has combined release commands:
cd src/ftl-sdk-ts
npm run release:patch # Bump patch version and publish
npm run release:minor # Bump minor version and publish
npm run release:major # Bump major version and publish- Ensure you're logged in:
cargo login - Check crate name availability
- Verify all dependencies are published
- Check for sensitive information in code
- Ensure you're logged in:
npm whoami - Check package name availability
- Verify .npmignore or files field in package.json
- Ensure dist/ is built:
npm run build
- Create a GitHub Release with the tag
- Announce the release in relevant channels
- Update any example projects to use the new version