Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
126 commits
Select commit Hold shift + click to select a range
74600ce
feat(objc): Add SentryObjC wrapper SDK and API stability tracking
philprime Mar 4, 2026
2df1ab3
docs(objc): Add comprehensive documentation to SentryObjC wrapper SDK
philprime Mar 10, 2026
bb4bcf2
docs(objc): Document additional SentryObjC data model classes
philprime Mar 10, 2026
50e07e7
docs(objc): Document stack traces and event metadata classes
philprime Mar 10, 2026
2ac98e0
docs(objc): Document session replay and sampling classes
philprime Mar 10, 2026
434212c
wip
philprime Mar 10, 2026
4074c02
ci: Remove file-existence check for sdk_objc_api.json
philprime Mar 10, 2026
59fa2dc
docs(samples): Restore problem description in ObjC-NoModules README
philprime Mar 10, 2026
0e7e483
Merge branch 'main' into philprime/objc-wrapper-sdk-6342
philprime Mar 10, 2026
7b315e6
ref(objc): Rewrite API extraction using clang AST and bash
philprime Mar 10, 2026
96cd092
ci: Add iOS-ObjectiveCpp-NoModules sample to build matrix
philprime Mar 10, 2026
16d4dea
update public API
philprime Mar 10, 2026
bf8a253
Merge branch 'main' into philprime/objc-wrapper-sdk-6342
philprime Mar 10, 2026
e5e4882
feat(objc): Add SentryObjC product to Swift 6.1 package manifest
philprime Mar 10, 2026
ba08e46
docs(objc): Add missing documentation to 9 SentryObjC headers
philprime Mar 10, 2026
33dd2c7
fix(objc): Add SentryCppHelper to Swift 6.1 compile-from-source targets
philprime Mar 10, 2026
e4b4486
feat(objc): Implement SentrySDK wrapper for no-modules context
philprime Mar 10, 2026
913cdfd
fix(objc): Keep SentryCppHelper in initial targets array
philprime Mar 10, 2026
e1eebdf
ref(objc): Rename SentrySDK to SentryObjCSDK to avoid naming conflicts
philprime Mar 10, 2026
97f6f13
WIP
philprime Mar 10, 2026
ab571ff
Merge remote-tracking branch 'origin/main' into philprime/objc-wrappe…
philprime Mar 10, 2026
7a81302
WIP
philprime Mar 10, 2026
56bdb7c
WIP
philprime Mar 10, 2026
5cc3e0d
fix(objc): Add explicit @objc name to SentryObjCBridge
philprime Mar 10, 2026
e2a7aa0
fix(objc): Fix thread safety, replay API, and package manifest issues
philprime Mar 10, 2026
6ee408f
WIP
philprime Mar 10, 2026
82bdd16
Merge remote-tracking branch 'origin/main' into philprime/objc-wrappe…
philprime Mar 11, 2026
cff540f
fix(objc): Fix SentryObjC package resolution and CI failures
philprime Mar 11, 2026
8e6c132
Merge branch 'main' into philprime/objc-wrapper-sdk-6342
philprime Mar 11, 2026
5c6380c
ref: Extract getAppStartMeasurement into SentryAppStartMeasurementPro…
philipphofmann Mar 11, 2026
f4293bc
revert: Remove thread safety changes extracted to PR #7672
philprime Mar 11, 2026
9e207fa
fix(objc): Address critical review bot feedback
philprime Mar 11, 2026
1b9dab0
Merge remote-tracking branch 'origin/main' into philprime/objc-wrappe…
philprime Mar 11, 2026
9ecf30b
update sdk json
philprime Mar 11, 2026
74f68ad
update submodule
philprime Mar 11, 2026
beb048f
wip
philprime Mar 11, 2026
2d3b0ce
Merge branch 'main' into philprime/objc-wrapper-sdk-6342
philprime Mar 12, 2026
34ccdb8
Merge remote-tracking branch 'origin/main' into philprime/objc-wrappe…
philprime Mar 17, 2026
91d834c
ref: rename SentryObjC core headers to match SDK naming
philprime Mar 18, 2026
4b6bc65
ref: rename SentryObjC user and context headers
philprime Mar 18, 2026
42bf54e
ref: rename SentryObjC exception and stack headers
philprime Mar 18, 2026
0d1d853
ref: rename SentryObjC tracing headers
philprime Mar 18, 2026
e5e8c71
ref: rename remaining SentryObjC headers
philprime Mar 18, 2026
3b6f320
ref: update umbrella header imports to new names
philprime Mar 18, 2026
e479465
ref: update cross-header imports to new names
philprime Mar 18, 2026
fc356b3
ref: rename SentryObjCSDK class to SentrySDK
philprime Mar 18, 2026
dad81ef
build: update add-sentryobjc-target.rb to include bridge and Sentry d…
philprime Mar 18, 2026
6336858
build: add SentryObjC variant to xcframework build script
philprime Mar 18, 2026
8d92c5e
ref: rename SentryObjC implementation files
philprime Mar 18, 2026
22824e5
ref: rename SentryObjC class and type names
philprime Mar 18, 2026
d44c00f
fix: disambiguate SentryAttributeContent in Swift bridge
philprime Mar 18, 2026
fc4682e
build: move SentryObjCBridge to Sentry target
philprime Mar 18, 2026
acd8515
WIP
philprime Mar 20, 2026
abcc681
build: standalone SentryObjC xcframework via swiftc
philprime Mar 20, 2026
16f9238
feat: add new public headers for Sentry logging and envelope handling
philprime Mar 20, 2026
143a0d6
build: update framework handling in xcframework build script
philprime Mar 20, 2026
6189f81
ci: add SentryObjC xcframework to CI pipeline
philprime Mar 20, 2026
37eade3
Merge remote-tracking branch 'origin/main' into philprime/objc-wrappe…
philprime Apr 22, 2026
9521b48
fix(build): skip SystemConfiguration on watchOS for SentryObjC xcfram…
philprime Apr 22, 2026
5043b1f
chore(api): regenerate sdk_api_objc.json after header renames
philprime Apr 22, 2026
31cd646
feat(objc): expose SentryOptions.experimental as a typed class
philprime Apr 22, 2026
bf8027a
fix(objc): register SentryExperimentalOptions.h as public header
philprime Apr 22, 2026
f4d732b
fix(objc): mark SentryObjC modulemap as framework module
philprime Apr 22, 2026
f7e40e5
ref(objc): drop manual SentryObjC modulemap and let Xcode generate it
philprime Apr 22, 2026
b37e7c5
feat(objc): ship SentryObjC as separate static and dynamic xcframeworks
philprime Apr 22, 2026
f05c5fe
fix(objc): alias public ObjC classes to Swift mangled names
philprime Apr 22, 2026
05ee02e
Merge remote-tracking branch 'origin/main' into philprime/objc-wrappe…
philprime Apr 23, 2026
e20405b
build(spm): match SentryObjC target layout in swift-6.2 manifest
philprime Apr 23, 2026
d8a3411
manual cleanup and fixed Objective-C sample
philprime Apr 24, 2026
3aeab3b
Merge branch 'main' into philprime/objc-wrapper-sdk-6342
philprime Apr 24, 2026
6bbc7b8
feat(objc): introduce SentryObjCTypes target
philprime Apr 24, 2026
bc0702c
fix(objc): use __has_include for SentryObjCTypes imports
philprime Apr 24, 2026
2091b12
chore(ci): remove duplicate Homebrew update
philprime Apr 24, 2026
e12d8c2
build(objc): wire SentryObjCTypes into xcframework release flow
philprime Apr 24, 2026
b2bae60
Merge remote-tracking branch 'origin/main' into philprime/objc-wrappe…
philprime Apr 27, 2026
996eebd
docs(changelog): structure SentryObjC entry under Features
philprime Apr 27, 2026
8dff640
build(spm): align SentryObjC deps with Xcode graph
philprime Apr 27, 2026
7862661
build(objc): disable DEFINES_MODULE on SentryObjCBridge
philprime Apr 27, 2026
82267fd
build(scripts): drop dead use_workspace option
philprime Apr 27, 2026
cf4d8d5
ref(SentryObjC): Drop @compatibility_alias
philprime Apr 28, 2026
085fb2f
ref(SentryObjCTypes): Conditional sibling imports
philprime Apr 28, 2026
c7413b7
ref(SentryObjC): Drop duplicate SentryGeo header
philprime Apr 28, 2026
cba25e6
ref(SentryObjC): Reuse main SDK pure-ObjC headers
philprime Apr 28, 2026
57f21f8
ref(SentryObjC): Route SDK control flow through bridge
philprime Apr 29, 2026
c78ece6
fix(scripts): include main SDK headers on extract-objc-api.sh -I path
philprime Apr 29, 2026
9bd6dc9
Merge remote-tracking branch 'origin/main' into philprime/objc-wrappe…
philprime Apr 29, 2026
eef8a98
cleanup changelog
philprime Apr 29, 2026
b75b8c3
fix(SentryObjC): Make re-exported headers standalone
philprime Apr 29, 2026
0bac2e7
feat(SentryObjC): Add missing API surface for Options, SDK, and Exper…
philprime Apr 29, 2026
13884da
fix(SentryObjC): Use ObjC deprecation attribute on crashedLastRun
philprime Apr 29, 2026
2959f85
fix(SentryObjC): Register new public headers in Xcode project
philprime Apr 29, 2026
fbf9630
Merge remote-tracking branch 'origin/main' into philprime/objc-wrappe…
philprime Apr 30, 2026
22bf30a
feat(SentryObjC): Add type-safe beforeSendMetric bridging and fix NoU…
philprime Apr 30, 2026
dbfa925
fix(SentryObjC): Guard sessionReplay property behind SENTRY_OBJC_REPL…
philprime Apr 30, 2026
60ee593
fix: Bridge beforeSendMetric mutations
philprime Apr 30, 2026
3f74206
remove codesigning for ObjC targets
philprime May 4, 2026
9576df3
fix: Exclude ObjC wrapper targets from distribution tests
philprime May 4, 2026
2b85a0a
ref: Move ObjC metric test to SentryObjCBridgeTests
philprime May 4, 2026
050a495
docs: Add SentryObjC guidance to AGENTS.md
philprime May 4, 2026
f79a2a6
Merge remote-tracking branch 'origin/main' into philprime/objc-wrappe…
philprime May 4, 2026
851fa82
fix: Only strip Package.swift for DistributionSample
philprime May 4, 2026
5c0b199
fix changelog
philprime May 4, 2026
d76d0f3
Merge branch 'main' into philprime/objc-wrapper-sdk-6342
philprime May 4, 2026
256afdf
fix: use Swift-native platform check for replay bridge
philprime May 4, 2026
19a990e
ci: remove SentryObjCTypes.framework byproduct from slices
philprime May 4, 2026
feb95e2
Merge branch 'main' into philprime/objc-wrapper-sdk-6342
philprime May 4, 2026
7750de9
fix: match SentrySDK replay conditional for bridge
philprime May 4, 2026
d59bdc8
fix: remove nonexistent SentryObjCTypesTests from test plan
philprime May 4, 2026
5091a7b
ref: add replay network detail methods to protocol
philprime May 5, 2026
f82fab2
Merge remote-tracking branch 'origin/main' into philprime/objc-wrappe…
philprime May 6, 2026
f4a6349
ref: use setup-xcode action and extract arrange script
philprime May 6, 2026
6d69018
fix: use env var to avoid script injection in workflow
philprime May 6, 2026
7d64c08
fix: use mktemp for unzip directory instead of /tmp
philprime May 6, 2026
71b37df
ref: rename SentrySDK to SentryObjcSDK in SentryObjC
philprime May 6, 2026
b4cb6b3
Merge remote-tracking branch 'origin/main' into philprime/objc-wrappe…
philprime May 6, 2026
10b742e
update sdk_api_objc.json
philprime May 6, 2026
1a5beca
ref: refactor standalone xcframework build script
philprime May 6, 2026
83f3adb
ref: rename SentryObjcSDK to SentryObjCSDK, add file filters
philprime May 6, 2026
c5ee059
added important note to changelog
philprime May 6, 2026
4762be5
fix: harden ObjC bridge and build script
philprime May 6, 2026
903c158
ci: pin actions to commit SHAs in SentryObjC workflow
philprime May 6, 2026
de97037
fix: use Sentry scheme for deployment target extraction
philprime May 6, 2026
162db30
fix: shell quoting in api-stability and revert sample dep
philprime May 6, 2026
5b8f571
fix: drop -sdk flag from deployment target extraction
philprime May 6, 2026
2939d41
fix: add missing Resources symlink in macOS framework layout
philprime May 6, 2026
ec2e43a
fix: read deployment targets from xcconfig instead of xcodebuild
philprime May 6, 2026
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
5 changes: 5 additions & 0 deletions .github/file-filters.yml
Original file line number Diff line number Diff line change
Expand Up @@ -77,11 +77,13 @@ run_api_stability_for_prs: &run_api_stability_for_prs
- "scripts/build-xcframework-slice.sh"
- "scripts/assemble-xcframework.sh"
- "scripts/update-api.sh"
- "scripts/extract-objc-api.sh"
- "scripts/ci-diagnostics.sh"

# API files
- "sdk_api.json"
- "sdk_api_sentryswiftui.json"
- "sdk_api_objc.json"

# Build configuration
- "Makefile"
Expand Down Expand Up @@ -271,6 +273,7 @@ run_release_for_prs: &run_release_for_prs
- ".github/workflows/release-comment-issues.yml"
- ".github/workflows/build-xcframework-variant-slices.yml"
- ".github/workflows/assemble-xcframework-variant.yml"
- ".github/workflows/assemble-xcframework-sentryobjc.yml"
- ".github/workflows/ui-tests-common.yml"
- ".github/workflows/fast-pr-checks.yml"
- ".github/file-filters.yml"
Expand All @@ -285,6 +288,8 @@ run_release_for_prs: &run_release_for_prs
- "scripts/build-xcframework-slice.sh"
- "scripts/build-xcframework-local.sh"
- "scripts/assemble-xcframework.sh"
- "scripts/build-xcframework-sentryobjc-standalone.sh"
- "scripts/ci-arrange-xcframework-slices.sh"
- "scripts/generate_release_matrix.sh"
- "scripts/xcframework-generated-run.sh"
- "scripts/prepare-package.sh"
Expand Down
17 changes: 15 additions & 2 deletions .github/workflows/api-stability.yml
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ jobs:
run: |
mv sdk_api.json sdk_api_base.json
mv sdk_api_sentryswiftui.json sdk_api_sentryswiftui_base.json
mv sdk_api_objc.json sdk_api_objc_base.json
./scripts/update-api.sh

- name: Diagnose breaking changes for Sentry
Expand All @@ -56,7 +57,7 @@ jobs:
if diff -q "sdk_api_base.json" "sdk_api.json" > /dev/null; then
echo "No Sentry API changes detected."
else
echo "❌ Sentry public API changes are detected. If they're intended run "make generate-public-api" and commit the changes."
echo "❌ Sentry public API changes are detected. If they're intended run 'make generate-public-api' and commit the changes."
diff "sdk_api_base.json" "sdk_api.json" || true
xcrun --sdk iphoneos swift-api-digester \
-diagnose-sdk \
Expand All @@ -75,7 +76,7 @@ jobs:
if diff -q "sdk_api_sentryswiftui_base.json" "sdk_api_sentryswiftui.json" > /dev/null; then
echo "No SentrySwiftUI API changes detected."
else
echo "❌ SentrySwiftUI public API changes are detected. If they're intended run "make generate-public-api" and commit the changes."
echo "❌ SentrySwiftUI public API changes are detected. If they're intended run 'make generate-public-api' and commit the changes."
diff "sdk_api_sentryswiftui_base.json" "sdk_api_sentryswiftui.json" || true
xcrun --sdk iphoneos swift-api-digester \
-diagnose-sdk \
Expand All @@ -87,6 +88,18 @@ jobs:
cat sentryswiftui_result.json
exit 1
fi

- name: Diagnose breaking changes for SentryObjC
if: always()
run: |
if diff -q "sdk_api_objc_base.json" "sdk_api_objc.json" > /dev/null; then
echo "No SentryObjC API changes detected."
else
echo "❌ SentryObjC public API changes are detected. If they're intended run 'make generate-public-api' and commit the changes."
diff "sdk_api_objc_base.json" "sdk_api_objc.json" || true
exit 1
fi

- name: Run CI Diagnostics
uses: ./.github/actions/ci-diagnostics
if: failure()
Expand Down
136 changes: 136 additions & 0 deletions .github/workflows/assemble-xcframework-sentryobjc.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,136 @@
name: Assemble SentryObjC XCFramework

on:
workflow_call:
inputs:
sdks:
description: |-
Comma-separated list of SDK slices to assemble.
required: false
type: string
default: "iphoneos,iphonesimulator,macosx,maccatalyst,appletvos,appletvsimulator,watchos,watchsimulator,xros,xrsimulator"

signed:
description: |-
Whether or not the assembled XCFramework should be signed.
required: false
type: boolean
default: false

release-version:
description: |-
For release workflows, the version to inject into the SDK.
required: false
type: string

jobs:
assemble-xcframework-sentryobjc:
name: SentryObjC
runs-on: macos-15
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
- uses: ./.github/actions/setup-xcode
with:
version: "16.4"

- name: Setup Ruby
uses: ruby/setup-ruby@4eb9f110bac952a8b68ecf92e3b5c7a987594ba6 # v1.292.0
if: ${{ inputs.signed }}
with:
bundler-cache: true

- name: "Download Fastlane Certificate"
if: ${{ inputs.signed }}
run: bundle exec fastlane prepare_xcframework_signing
env:
FASTLANE_KEYCHAIN_PASSWORD: ${{ secrets.FASTLANE_KEYCHAIN_PASSWORD }}
MATCH_GIT_PRIVATE_KEY: ${{ secrets.MATCH_GIT_PRIVATE_KEY }}
MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }}
MATCH_USERNAME: ${{ secrets.MATCH_USERNAME }}

# Download all four sets of static library slices.
# Each artifact contains a {sdk}.xcarchive.zip for one platform.
- name: Download Sentry static slices
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8
with:
pattern: xcframework-sentry-static-slice-*
path: xcframework-slices/sentry-static

- name: Download SentryObjCTypes slices
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8
with:
pattern: xcframework-sentryobjc-types-slice-*
path: xcframework-slices/sentryobjc-types

- name: Download SentryObjCBridge slices
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8
with:
pattern: xcframework-sentryobjc-bridge-slice-*
path: xcframework-slices/sentryobjc-bridge

- name: Download SentryObjC slices
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8
with:
pattern: xcframework-sentryobjc-objc-slice-*
path: xcframework-slices/sentryobjc-objc

# Unzip slices into the directory layout expected by
# build-xcframework-sentryobjc-standalone.sh:
# XCFrameworkBuildPath/archive/Sentry/{sdk}.xcarchive/...
# XCFrameworkBuildPath/archive/SentryObjCTypes/{sdk}.xcarchive/...
# XCFrameworkBuildPath/archive/SentryObjCBridge/{sdk}.xcarchive/...
# XCFrameworkBuildPath/archive/SentryObjC/{sdk}.xcarchive/...
- name: Arrange slice archives
shell: bash
env:
SDKS: ${{ inputs.sdks }}
run: ./scripts/ci-arrange-xcframework-slices.sh --sdks "$SDKS"

- name: Link and assemble SentryObjC XCFrameworks
env:
SDKS: ${{ inputs.sdks }}
run: |
sdk_args=()
IFS=',' read -r -a sdk_list <<< "$SDKS"
for s in "${sdk_list[@]}"; do sdk_args+=(--sdk "$s"); done
./scripts/build-xcframework-sentryobjc-standalone.sh "${sdk_args[@]}"
shell: bash

- name: Validate XCFramework structure
run: |
./scripts/validate-xcframework-format.sh "SentryObjC-Static.xcframework"
./scripts/validate-xcframework-format.sh "SentryObjC-Dynamic.xcframework"
shell: bash

- name: Zip XCFrameworks
env:
SIGNED: ${{ inputs.signed }}
run: |
if [ "$SIGNED" = "true" ]; then
./scripts/compress-xcframework.sh --sign SentryObjC-Static
./scripts/compress-xcframework.sh --sign SentryObjC-Dynamic
else
./scripts/compress-xcframework.sh --not-signed SentryObjC-Static
./scripts/compress-xcframework.sh --not-signed SentryObjC-Dynamic
fi
shell: bash

- name: Upload SentryObjC-Static XCFramework
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
with:
overwrite: true
name: xcframework-${{github.sha}}-sentryobjc-static
if-no-files-found: error
path: SentryObjC-Static.xcframework.zip

- name: Upload SentryObjC-Dynamic XCFramework
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
with:
overwrite: true
name: xcframework-${{github.sha}}-sentryobjc-dynamic
if-no-files-found: error
path: SentryObjC-Dynamic.xcframework.zip

- name: Run CI Diagnostics
if: failure()
run: ./scripts/ci-diagnostics.sh
27 changes: 24 additions & 3 deletions .github/workflows/build-xcframework-variant-slices.yml
Original file line number Diff line number Diff line change
Expand Up @@ -101,16 +101,37 @@ jobs:
run: ./scripts/build-xcframework-slice.sh "$MATRIX_SDK" "$INPUT_NAME" "$INPUT_SUFFIX" "$INPUT_MACHO_TYPE" "$INPUT_CONFIG_SUFFIX"
shell: bash

# The SentrySwiftUI archive build also builds Sentry.framework as a byproduct of the dependency. We need to remove that to avoid downstream assembly tasks from tripping on these extra files. In the future we could investigate using this byproduct instead of running a separate task for Sentry.framework, or use the one already built by that other task instead of rebuilding it here.
- name: Remove Sentry.framework from SentrySwiftUI build
if: inputs.name == 'SentrySwiftUI'
# Targets that depend on Sentry also build Sentry.framework as a byproduct.
# Remove it to avoid downstream assembly tasks from tripping on extra files.
- name: Remove Sentry.framework byproduct
if: inputs.name == 'SentrySwiftUI' || inputs.name == 'SentryObjCBridge' || inputs.name == 'SentryObjC'
env:
GITHUB_WORKSPACE: ${{ github.workspace }}
run: |
find "$GITHUB_WORKSPACE/XCFrameworkBuildPath/archive" -name "Sentry.framework" -print0 | xargs -t0 rm -rf
find "$GITHUB_WORKSPACE/XCFrameworkBuildPath/archive" -name "Sentry.framework.dSYM" -print0 | xargs -t0 rm -rf
shell: bash

# SentryObjCBridge and SentryObjC depend on SentryObjCTypes, which gets built as a byproduct.
- name: Remove SentryObjCTypes.framework byproduct
if: inputs.name == 'SentryObjCBridge' || inputs.name == 'SentryObjC'
env:
GITHUB_WORKSPACE: ${{ github.workspace }}
run: |
find "$GITHUB_WORKSPACE/XCFrameworkBuildPath/archive" -name "SentryObjCTypes.framework" -print0 | xargs -t0 rm -rf
find "$GITHUB_WORKSPACE/XCFrameworkBuildPath/archive" -name "SentryObjCTypes.framework.dSYM" -print0 | xargs -t0 rm -rf
shell: bash

# SentryObjC depends on SentryObjCBridge, which gets built as a byproduct.
- name: Remove SentryObjCBridge.framework byproduct
if: inputs.name == 'SentryObjC'
env:
GITHUB_WORKSPACE: ${{ github.workspace }}
run: |
find "$GITHUB_WORKSPACE/XCFrameworkBuildPath/archive" -name "SentryObjCBridge.framework" -print0 | xargs -t0 rm -rf
find "$GITHUB_WORKSPACE/XCFrameworkBuildPath/archive" -name "SentryObjCBridge.framework.dSYM" -print0 | xargs -t0 rm -rf
shell: bash
Comment thread
cursor[bot] marked this conversation as resolved.

# the upload action broke symlinks in the mac sdk slice's xcarchive
- name: Zip xcarchive
env:
Expand Down
3 changes: 3 additions & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,8 @@ jobs:
config: Debug
- scheme: iOS-ObjectiveC
config: Debug
- scheme: iOS-ObjectiveCpp-NoModules
config: Debug
- scheme: SPM
config: Debug
- scheme: DistributionSample
Expand All @@ -122,6 +124,7 @@ jobs:
# sample projects don't use SPM for including Sentry. Only the DistributionSample uses local SPM.
# Therefore, we only keep the local DistributionSample reference in the Package.swift as a workaround.
- name: Only keep distribution lib and target in Package.swift
if: matrix.scheme == 'DistributionSample'
Comment thread
philprime marked this conversation as resolved.
run: ./scripts/prepare-package.sh --remove-binary-targets true

- name: Setup Xcode
Expand Down
14 changes: 14 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,19 @@ jobs:
matrix:
variant: ${{ fromJson(needs.setup-matrix.outputs.variants) }}

assemble-sentryobjc:
needs: [files-changed, build-xcframework-variant-slices, setup-matrix]
# Run the job only for PRs with related changes or non-PR events.
if: github.event_name != 'pull_request' || needs.files-changed.outputs.run_release_for_prs == 'true'
name: Assemble SentryObjC XCFramework
uses: ./.github/workflows/assemble-xcframework-sentryobjc.yml
secrets: inherit
with:
# Only sign the XCFramework on releases
signed: ${{ github.event_name != 'pull_request' }}
release-version: ${{ github.event.inputs.version }}
sdks: ${{ needs.setup-matrix.outputs.sdk-list-string }}

validate-xcframework:
name: Validate XCFramework
runs-on: macos-15
Expand Down Expand Up @@ -451,6 +464,7 @@ jobs:
files-changed,
build-xcframework-variant-slices,
assemble-xcframework-variant,
assemble-sentryobjc,
validate-xcframework,
validate-spm,
validate-spm-dynamic,
Expand Down
7 changes: 1 addition & 6 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -105,12 +105,7 @@ Samples/watchOS-Swift/watchOS-Swift.xcodeproj
TestSamples/SwiftUICrashTest/SwiftUICrashTest.xcodeproj
TestSamples/SwiftUITestSample/SwiftUITestSample.xcodeproj

Sentry.xcframework*
Sentry-Dynamic.xcframework*
Sentry-Dynamic-WithARM64e.xcframework*
SentrySwiftUI.xcframework*
Sentry-WithoutUIKitOrAppKit.xcframework*
Sentry-WithoutUIKitOrAppKit-WithARM64e.xcframework*
*.xcframework*

current_package_diff.patch

Expand Down
5 changes: 5 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,11 @@ SentrySDK (public entry point)
| `SentryCrash/` | C/C++ crash reporting (KSCrash fork) |
| `SentryCppHelper/` | C++ helpers (backtrace, sampling profiler, thread handle) |
| `SentrySwiftUI/` | SwiftUI tracing (`TracedView`) |
| `SentryObjC/` | Pure ObjC facade β€” behavior classes consumers invoke |
| `SentryObjCBridge/` | Swift bridge β€” maps `SentryObjCTypes` ⇄ internal Swift types |
| `SentryObjCTypes/` | Frozen public ObjC ABI β€” pure data carriers, Foundation-only |

> **Before touching `SentryObjC*` targets** (headers, types, bridge, build config), read [`develop-docs/SENTRY-OBJC.md`](develop-docs/SENTRY-OBJC.md). It defines the four-tier architecture, type placement rules, naming conventions, and stability contract. Violations (e.g., leaking SDK types into `SentryObjCTypes`) cause linker failures or ABI breaks.

## Skills & MCP (dotagents)

Expand Down
10 changes: 8 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,19 @@

## Unreleased

> [!IMPORTANT]
> The new SentryObjC SDK introduced in this release should be considered experimental and may be subject to breaking changes.

### Features

- Add SentryObjC wrapper SDK to provide pure Objective-C compatibility layer that wraps the main Sentry SDK with stable, documented Objective-C interfaces. (#7598)
This SDK is designed for projects that require strict Objective-C compatibility without Swift dependencies. It ships as two xcframework variants β€” `SentryObjC-Static.xcframework.zip` and `SentryObjC-Dynamic.xcframework.zip` β€” and as a compile-from-source SPM library under the `SentryObjC` product.

### Fixes

- Prevent memory strings in stack overflow crash reports (#7841)
- Report crashed thread for null function calls (#7866)

### Fixes

## 9.12.0

> [!WARNING]
Expand Down
Loading
Loading