Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 28 additions & 0 deletions develop-docs/RELEASE.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,34 @@ This repo uses the following ways to release SDK updates:
- `Latest`: We continuously release major/minor/hotfix versions from the `main` branch. These releases go through all our internal quality gates and are very safe to use and intended to be the default for most teams.
- `Stable`: We promote releases from `Latest` when they have been used in the field for some time and in scale, considering time since release, adoption, and other quality and stability metrics. These releases will be indicated on the [releases page](https://github.com/getsentry/sentry-cocoa/releases/) with the `Stable` suffix.

## Distribution Channels

The SDK is distributed via **SPM**. CocoaPods and Carthage support were removed.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
The SDK is distributed via **SPM**. CocoaPods and Carthage support were removed.
The SDK is distributed via **SPM**. CocoaPods and Carthage support has been removed.


When a release is triggered, the [release workflow](../.github/workflows/release.yml) builds XCFrameworks and archives, then [Craft](../.craft.yml) publishes to:

| Target | Description |
| ---------------------------------------- | ----------------------------------------------------------------------------------------------------- |
| GitHub Release | Source + XCFramework zips on the [releases page](https://github.com/getsentry/sentry-cocoa/releases/) |
| `getsentry/sentry-apple-binaries` | Pre-built XCFrameworks with a `Package.swift` for SPM binary targets |
| `getsentry/sentry-apple-swift-log` | 3rd-party integration mirror |
| `getsentry/sentry-apple-cocoalumberjack` | 3rd-party integration mirror |
| `getsentry/sentry-apple-pulse` | 3rd-party integration mirror |
| `getsentry/sentry-apple-swiftybeaver` | 3rd-party integration mirror |
Comment on lines +17 to +22

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
| GitHub Release | Source + XCFramework zips on the [releases page](https://github.com/getsentry/sentry-cocoa/releases/) |
| `getsentry/sentry-apple-binaries` | Pre-built XCFrameworks with a `Package.swift` for SPM binary targets |
| `getsentry/sentry-apple-swift-log` | 3rd-party integration mirror |
| `getsentry/sentry-apple-cocoalumberjack` | 3rd-party integration mirror |
| `getsentry/sentry-apple-pulse` | 3rd-party integration mirror |
| `getsentry/sentry-apple-swiftybeaver` | 3rd-party integration mirror |
| GitHub Release | Source + XCFramework zips on the [releases page](https://github.com/getsentry/sentry-cocoa/releases/) |
| [`getsentry/sentry-apple-binaries`](https://github.com/getsentry/sentry-apple-binaries) | Pre-built XCFrameworks with a `Package.swift` for SPM binary targets |
| [`getsentry/sentry-apple-swift-log`](https://github.com/getsentry/sentry-apple-log) | 3rd-party integration mirror |
| [`getsentry/sentry-apple-cocoalumberjack`](https://github.com/getsentry/sentry-apple-cocoalumberjack) | 3rd-party integration mirror |
| [`getsentry/sentry-apple-pulse`](https://github.com/getsentry/sentry-apple-pulse) | 3rd-party integration mirror |
| [`getsentry/sentry-apple-swiftybeaver`](https://github.com/getsentry/sentry-apple-swiftybeaver] | 3rd-party integration mirror |

Just to make life easier for future me when I need/want to click these heh

| Sentry Release Registry | Updates the `cocoapods:sentry-cocoa` entry (historical name) |

The 3rd-party integration repos also receive continuous code sync on every push to `main`. See [MIRRORING.md](MIRRORING.md) for full details on both mechanisms.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Bug: The RELEASE.md file contains a broken link to MIRRORING.md, which does not exist in the repository.
Severity: LOW

Suggested Fix

Either create the missing MIRRORING.md file with the relevant documentation content or remove the broken link from develop-docs/RELEASE.md if the documentation is not available.

Prompt for AI Agent
Review the code at the location below. A potential bug has been identified by an AI
agent. Verify if this is a real issue. If it is, propose a fix; if not, explain why it's
not valid.

Location: develop-docs/RELEASE.md#L25

Potential issue: The documentation file `develop-docs/RELEASE.md` at line 25 contains a
relative link to `MIRRORING.md`. However, this file does not exist anywhere in the
repository. When a user clicks this link in the rendered Markdown, they will encounter a
404 error page instead of the intended documentation about code mirroring mechanisms.
This is a documentation integrity issue.

Did we get this right? 👍 / 👎 to inform future reviews.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is added in #8679


### Release Workflow Steps

1. **Build XCFramework slices** — matrix build across platforms and variants.
2. **Assemble XCFrameworks** — static, dynamic, and signed variants for Sentry and SentryObjC.
3. **Validate** — XCFramework validation, SPM static/dynamic, Swift build, visionOS SPM.
4. **Create archives** — `scripts/create-apple-binaries-archive.sh` (stamps version + checksums into `Package.swift`) and `scripts/create-3rd-party-integration-archive.sh --all`.
5. **Craft release** — pushes archives to downstream repos with version tags, creates GitHub release.

Craft runs `scripts/bump.sh` as its `preReleaseCommand`, which calls `bump-version.sh` and `update-package-sha.sh`.

## Promoting a beta release to a normal release

We frequently release a beta version of our SDK and dogfood it with internal apps to increase our SDK stability. We continue to merge PRs to the main branch, so we can't promote a beta release by publishing it from the main branch. Instead, we create a branch from the GH tag of the beta release and promote it from there. To do this, follow these steps:
Expand Down
Loading