diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml
index a0cca79df..0a9693e99 100644
--- a/.github/workflows/release.yaml
+++ b/.github/workflows/release.yaml
@@ -10,6 +10,7 @@ jobs:
   release:
     name: Release
     runs-on: ubuntu-latest
+    if: github.ref == 'refs/heads/main' || github.ref == 'refs/heads/beta'
 
     steps:
       - uses: actions/checkout@v4
@@ -35,4 +36,8 @@ jobs:
         env:
           GH_TOKEN: ${{ secrets.GH_TOKEN }}
       - name: Publish packages
+        if: github.ref == 'refs/heads/main'
         run: pnpm publish -r
+      - name: Publish packages (beta)
+        if: github.ref == 'refs/heads/beta'
+        run: pnpm publish -r --tag beta
diff --git a/package.json b/package.json
index 97a4b3f10..b271ac23f 100644
--- a/package.json
+++ b/package.json
@@ -89,7 +89,15 @@
     "registry": "https://registry.npmjs.org"
   },
   "release": {
-    "branches": "main",
+    "branches": [
+      {
+        "name": "main"
+      },
+      {
+        "name": "beta",
+        "prerelease": true
+      }
+    ],
     "plugins": [
       "@semantic-release/commit-analyzer",
       "@semantic-release/release-notes-generator",