electron-release
Original:🇺🇸 English
Translated
Guides Electron app release process including build, code signing, notarization, and GitHub Release with auto-update support. Use when releasing Electron apps, creating DMG installers, setting up auto-update, or troubleshooting notarization issues.
1installs
Sourcelaststance/skills
Added on
NPX Install
npx skill4agent add laststance/skills electron-releaseTags
Translated version includes tags in frontmatterSKILL.md Content
View Translation Comparison →Electron Release Guide
Complete release workflow for Electron applications with auto-update support.
Supported Configurations
| Stack | Platform | Build Type | Status |
|---|---|---|---|
| Vite + electron-builder | macOS | Local | ✅ Documented |
| Other configurations | - | - | 📝 To be added |
Quick Start (macOS + Vite + electron-builder)
bash
# 1. Build with notarization
APPLE_KEYCHAIN_PROFILE=your-profile pnpm build:mac
# 2. Rename ZIPs (GitHub converts spaces to dots)
cp "dist/App Name-X.Y.Z-arm64-mac.zip" "dist/App-Name-X.Y.Z-arm64-mac.zip"
cp "dist/App Name-X.Y.Z-mac.zip" "dist/App-Name-X.Y.Z-mac.zip"
# 3. Create release with ALL files
gh release create vX.Y.Z \
dist/latest-mac.yml \
"dist/App-Name-X.Y.Z-arm64-mac.zip" \
"dist/App-Name-X.Y.Z-mac.zip" \
dist/app-name-X.Y.Z-arm64.dmg \
dist/app-name-X.Y.Z-x64.dmg \
--title "vX.Y.Z" --notes "Release notes..."Complete Workflow
Phase 1: Pre-Release
- Update version in
package.json - Commit version bump:
bash
git add package.json git commit -m "chore(release): bump version to X.Y.Z" git push origin main
Phase 2: Build
-
Build with notarization:bash
APPLE_KEYCHAIN_PROFILE=your-profile pnpm build:macEnv Var Purpose APPLE_KEYCHAIN_PROFILEKeychain profile for notarization Alternative: ,APPLE_ID,APPLE_APP_SPECIFIC_PASSWORDAPPLE_TEAM_IDDirect credentials -
Verify build output:bash
ls -la dist/*.dmg dist/*.zip dist/*.ymlExpected files:- - Auto-update metadata
latest-mac.yml - - ARM64 update payload
App Name-X.Y.Z-arm64-mac.zip - - x64 update payload
App Name-X.Y.Z-mac.zip - - ARM64 installer
app-name-X.Y.Z-arm64.dmg - - x64 installer
app-name-X.Y.Z-x64.dmg
Phase 3: Prepare Release Assets
-
Rename ZIP files (critical for auto-update):bash
# GitHub converts spaces to dots, but latest-mac.yml expects hyphens cp "dist/App Name-X.Y.Z-arm64-mac.zip" "dist/App-Name-X.Y.Z-arm64-mac.zip" cp "dist/App Name-X.Y.Z-mac.zip" "dist/App-Name-X.Y.Z-mac.zip" -
VerifyURLs match renamed files:
latest-mac.ymlbashcat dist/latest-mac.yml # Check that 'url:' entries match your renamed ZIP filenames
Phase 4: GitHub Release
-
Create release with all required files:bash
gh release create vX.Y.Z \ dist/latest-mac.yml \ "dist/App-Name-X.Y.Z-arm64-mac.zip" \ "dist/App-Name-X.Y.Z-mac.zip" \ dist/app-name-X.Y.Z-arm64.dmg \ dist/app-name-X.Y.Z-x64.dmg \ --title "vX.Y.Z" \ --notes "$(cat <<'EOF' ## What's Changed - Feature 1 - Bug fix 2 EOF )" -
Verify release assets:bash
gh release view vX.Y.Z --json assets --jq '.assets[].name'
Required Files for Auto-Update
| File | Purpose | Missing = |
|---|---|---|
| Version + SHA512 hashes | "No updates available" |
| ARM64 update payload | Download fails on M1/M2/M3 |
| x64 update payload | Download fails on Intel |
| Manual download | No manual install option |
Common Mistakes
| Mistake | Symptom | Fix |
|---|---|---|
| DMG only, no ZIP | Auto-update silently fails | Upload all ZIP files |
Missing | "No updates available" | Upload |
| Wrong ZIP filename | Download error | Rename to match |
| No notarization env var | Gatekeeper blocks app | Set |
| Spaces in filename | 404 on download | Rename: spaces → hyphens |
Troubleshooting
"Download error" on auto-update
bash
# Check if filenames match
cat dist/latest-mac.yml | grep url:
gh release view vX.Y.Z --json assets --jq '.assets[].name'
# URLs in yml must exactly match asset names"No updates available"
bash
# Verify latest-mac.yml is uploaded
gh release view vX.Y.Z --json assets --jq '.assets[].name' | grep ymlGatekeeper blocks app
bash
# Rebuild with notarization
APPLE_KEYCHAIN_PROFILE=your-profile pnpm build:mac
# Check build log for "notarization successful"electron-builder.yml Reference
yaml
mac:
target:
- target: dmg
arch: [arm64, x64]
- target: zip
arch: [arm64, x64]
notarize: true
hardenedRuntime: true
publish:
provider: github
owner: your-org
repo: your-repoSuccess Criteria
- Build completes with "notarization successful"
- All 5 files uploaded to GitHub Release
- ZIP filenames match URLs exactly
latest-mac.yml - Test: older version detects update
- Test: download and install succeeds