This guide explains how to release beta versions using the beta branch and automated GitHub Actions.
mainbranch → Stable releases (automated viarelease.yml)betabranch → Beta/prerelease versions (automated viarelease-beta.yml)- Feature branches → Work in progress (no releases)
# From your feature branch (e.g., feat/mcp-ui-apps)
git checkout -b beta
# Push to trigger the beta release workflow
git push origin betaThe GitHub Action will automatically:
- Enter prerelease mode (creates
.changeset/pre.json) - Create a "Version Packages (beta)" PR
- Publish beta versions when the PR is merged
# Make your changes
# ... edit files ...
# Create a changeset
pnpm changeset
# Commit and push
git add .
git commit -m "feat: add new feature"
git push origin betaWhen you push to beta:
- If no changesets exist: Nothing happens (waiting for changesets)
- If changesets exist:
- A PR is created with version bumps (e.g.,
0.2.1-beta.0) - Review and merge the PR
- On merge, packages are automatically published to npm with
@betatag
- A PR is created with version bumps (e.g.,
If you prefer manual control:
# On beta branch
git checkout beta
# Enter prerelease mode (first time only)
pnpm changeset pre enter beta
# Create changesets
pnpm changeset
# Version packages
pnpm version
# Commit version changes
git add .
git commit -m "chore: version packages (beta)"
git push
# Publish to npm
pnpm releaseWhile on the beta branch, you can continue making changes:
# Make more changes
# ... edit code ...
# Create another changeset
pnpm changeset
# Push to trigger versioning
git push origin betaEach release will increment the beta number: 0.2.1-beta.0 → 0.2.1-beta.1 → 0.2.1-beta.2, etc.
When beta testing is complete and you're ready for a stable release:
# Switch to main and merge beta
git checkout main
git pull origin main
git merge beta
# Exit prerelease mode
pnpm changeset pre exit
# Commit the pre.json removal
git add .changeset/pre.json
git commit -m "chore: exit prerelease mode"
# Push to main (triggers stable release workflow)
git push origin mainThe stable release workflow will:
- Version packages as stable (e.g.,
0.2.1) - Publish to npm with
@latesttag
If you only want specific changes from beta:
git checkout main
git cherry-pick <commit-hash>
# ... resolve any conflicts ...
git push origin mainUsers can install beta versions:
# Install latest beta
npm install mcp-use@beta
npm install @mcp-use/cli@beta
# Install specific beta version
npm install mcp-use@0.2.1-beta.0View published versions and tags:
# See all versions
npm view mcp-use versions
# See dist-tags
npm view mcp-use dist-tags
# {
# latest: '0.2.0',
# beta: '0.2.1-beta.0'
# }The release-beta.yml workflow includes:
- ✅ Automatic prerelease mode entry
- ✅ Version PR creation
- ✅ Automatic publishing on merge
- ✅ Comment on commits with published versions
- ✅ Manual trigger via GitHub UI (workflow_dispatch)
You can manually trigger a beta release from GitHub:
- Go to Actions tab
- Select Release Beta workflow
- Click Run workflow
- Select
betabranch - Click Run workflow button
-
Keep beta branch up to date with main
git checkout beta git merge main git push
-
Create meaningful changesets
- Describe what changed from a user's perspective
- Mark breaking changes clearly
-
Test beta versions thoroughly
- Install beta versions in test projects
- Verify all packages work together
- Check for breaking changes
-
Clean up after stable release
# After merging to main and releasing stable git checkout beta git merge main # Sync beta with main git push
The workflow handles this automatically, but if you see this message, it means .changeset/pre.json already exists. This is normal and expected.
# Reset beta branch to match a starting point
git checkout beta
git reset --hard main # or feat/your-feature
git push --force origin beta# Exit prerelease mode
pnpm changeset pre exit
# Remove all pending changesets
rm -rf .changeset/*.md
# Commit changes
git add .
git commit -m "chore: reset changesets"
git pushCheck:
- Branch name is exactly
beta - You have changesets in
.changeset/*.md - GitHub Actions is enabled in your repository
NPM_TOKENsecret is configured in GitHub Settings