Skip to content

feat(ios): Expose enableMemoryIntrospection option - #6674

Open
antonis wants to merge 4 commits into
mainfrom
feat/expose-ios-memory-introspection
Open

feat(ios): Expose enableMemoryIntrospection option#6674
antonis wants to merge 4 commits into
mainfrom
feat/expose-ios-memory-introspection

Conversation

@antonis

@antonis antonis commented Sep 4, 2026

Copy link
Copy Markdown
Contributor

📢 Type of change

  • New feature
  • Bugfix
  • Enhancement
  • Refactoring

📜 Description

Exposes the public sentry-cocoa enableMemoryIntrospection option (added in cocoa 9.24.0, PR getsentry/sentry-cocoa#8571) as a typed, documented iOS option on ReactNativeOptions.

When the SDK captures a native crash (e.g. EXC_BAD_ACCESS), SentryCrash reads memory near the crash site and embeds string-based stack contents in the event, which can expose sensitive information (user IDs, personal data) — sometimes even in the issue title. This option lets privacy-sensitive apps keep native crash reporting while omitting memory contents.

  • iOS-only (@platform ios), @default false (matches Cocoa's default since 9.24.0).
  • No ObjC bridging needed — iOS options pass straight through to Cocoa via optionsFromDictionary, so the plain SentryOptions.enableMemoryIntrospection boolean is set automatically.
  • The prior blocker (bundled Cocoa < 9.24.0) is resolved — the SDK now bundles Cocoa 9.27.0.

💡 Motivation and Context

Fixes #6547. Gives privacy-sensitive apps a supported toggle to omit crash-site memory contents from native iOS crash reports.

💚 How did you test it?

Added Swift native tests in RNSentryStartTests.swift:

  • testMemoryIntrospectionOption — passing enableMemoryIntrospection: true from the RN options dictionary reaches SentrySDK.internal.options.enableMemoryIntrospection.
  • testMemoryIntrospectionOptionDefault — the option defaults to false when omitted.

Also verified locally: yarn build:sdk, yarn api-report:check (up to date), yarn lint:lerna.

📝 Checklist

  • I added tests to verify changes.
  • No new PII added or SDK only sends newly added PII if sendDefaultPII is enabled.
  • I updated the docs if needed.
  • I updated the wizard if needed.
  • All tests passing.
  • Public API changes reviewed by another Mobile SDK team member or implemented according to the develop docs spec.
  • No breaking changes.

🔮 Next steps

Docs update: getsentry/sentry-docs#19276

🤖 Generated with Claude Code

Surfaces the public sentry-cocoa `enableMemoryIntrospection` option
(added in cocoa 9.24.0, default false) as a typed, documented iOS
option. Lets privacy-sensitive apps keep native crash reporting while
omitting memory contents that SentryCrash reads near the crash site.

The option passes straight through to Cocoa via optionsFromDictionary,
so no ObjC bridging is required.

Fixes #6547

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Sep 4, 2026

Copy link
Copy Markdown
Contributor

Semver Impact of This PR

None (no version bump detected)

📋 Changelog Preview

This is how your changes will appear in the changelog.
Entries from this PR are highlighted with a left border (blockquote style).


  • feat(ios): Expose enableMemoryIntrospection option by antonis in #6674
  • ref(ios): Remove deprecated private SDK API usage by philprime in #6647
  • chore(deps): update Cocoa SDK to v9.27.0 by github-actions in #6670
  • chore(deps): update Sentry Android Gradle Plugin to v6.21.0 by github-actions in #6671
  • chore(deps): Bump fast-uri to ^3.1.6 to resolve security alerts by antonis in #6662
  • chore(deps): Bump qs to ^6.16.0 to resolve security alerts by antonis in #6663
  • chore(deps): Bump @xmldom/xmldom pins to patched versions to resolve security alerts by antonis in #6664
  • docs: Revamp root and nested AGENTS.md by antonis in #6666

🤖 This preview updates automatically when you update the PR.

@antonis antonis added the ready-to-merge Triggers the full CI test suite label Sep 4, 2026
@github-actions

github-actions Bot commented Sep 4, 2026

Copy link
Copy Markdown
Contributor
Messages
📖 Do not forget to update Sentry-docs with your feature once the pull request gets approved.

Generated by 🚫 dangerJS against f228087

Comment thread CHANGELOG.md Outdated
@sentry

sentry Bot commented Sep 4, 2026

Copy link
Copy Markdown

📲 Install Builds

Android

🔗 App Name App ID Version Configuration
Sentry RN io.sentry.reactnative.sample 8.25.0 (105) Release

⚙️ sentry-react-native Build Distribution Settings

@github-actions

github-actions Bot commented Sep 4, 2026

Copy link
Copy Markdown
Contributor

Android (legacy) Performance metrics 🚀

  Plain With Sentry Diff
Startup time 426.90 ms 435.53 ms 8.63 ms
Size 50.56 MiB 56.46 MiB 5.90 MiB

Baseline results on branch: main

Startup times

Revision Plain With Sentry Diff
68672fc+dirty 425.02 ms 487.56 ms 62.54 ms
71abba0+dirty 496.54 ms 525.16 ms 28.63 ms
7ff4d0f+dirty 413.81 ms 450.64 ms 36.83 ms
9ad4522+dirty 420.73 ms 444.18 ms 23.45 ms
0a147b2+dirty 464.71 ms 538.81 ms 74.09 ms
d2eadf8+dirty 414.64 ms 454.56 ms 39.92 ms
57e0069+dirty 413.82 ms 453.47 ms 39.65 ms
26843eb+dirty 532.15 ms 624.13 ms 91.98 ms
9210ae6+dirty 475.41 ms 525.24 ms 49.84 ms
1e5d96d+dirty 519.43 ms 543.62 ms 24.19 ms

App size

Revision Plain With Sentry Diff
68672fc+dirty 48.30 MiB 53.61 MiB 5.31 MiB
71abba0+dirty 48.30 MiB 53.49 MiB 5.19 MiB
7ff4d0f+dirty 48.30 MiB 53.60 MiB 5.30 MiB
9ad4522+dirty 49.74 MiB 55.38 MiB 5.63 MiB
0a147b2+dirty 49.74 MiB 55.08 MiB 5.34 MiB
d2eadf8+dirty 48.30 MiB 53.48 MiB 5.18 MiB
57e0069+dirty 49.74 MiB 54.85 MiB 5.11 MiB
26843eb+dirty 49.74 MiB 55.26 MiB 5.52 MiB
9210ae6+dirty 48.30 MiB 53.54 MiB 5.23 MiB
1e5d96d+dirty 49.74 MiB 54.81 MiB 5.07 MiB

Previous results on branch: feat/expose-ios-memory-introspection

Startup times

Revision Plain With Sentry Diff
2f5fe5c+dirty 426.20 ms 456.62 ms 30.42 ms

App size

Revision Plain With Sentry Diff
2f5fe5c+dirty 50.56 MiB 56.46 MiB 5.90 MiB

@antonis
antonis marked this pull request as ready for review September 4, 2026 09:08
@github-actions

github-actions Bot commented Sep 4, 2026

Copy link
Copy Markdown
Contributor

iOS (legacy) Performance metrics 🚀

  Plain With Sentry Diff
Startup time 3853.29 ms 1227.77 ms -2625.52 ms
Size 5.15 MiB 6.88 MiB 1.73 MiB

Baseline results on branch: main

Startup times

Revision Plain With Sentry Diff
ecf47a2+dirty 3835.20 ms 1222.43 ms -2612.77 ms
3817909+dirty 1183.90 ms 1187.50 ms 3.60 ms
5ee78d6+dirty 3847.52 ms 1224.27 ms -2623.25 ms
890d145+dirty 1223.59 ms 1231.37 ms 7.78 ms
e763471+dirty 3841.16 ms 1218.06 ms -2623.09 ms
3d31fcf+dirty 3838.09 ms 1223.46 ms -2614.63 ms
9210ae6+dirty 3815.93 ms 1214.14 ms -2601.79 ms
26843eb+dirty 3861.60 ms 1238.77 ms -2622.82 ms
7a89652+dirty 3861.46 ms 1229.61 ms -2631.85 ms
9ad4522+dirty 3850.40 ms 1222.40 ms -2628.00 ms

App size

Revision Plain With Sentry Diff
ecf47a2+dirty 4.98 MiB 6.46 MiB 1.49 MiB
3817909+dirty 3.38 MiB 4.73 MiB 1.35 MiB
5ee78d6+dirty 5.15 MiB 6.69 MiB 1.53 MiB
890d145+dirty 3.38 MiB 4.77 MiB 1.38 MiB
e763471+dirty 4.98 MiB 6.51 MiB 1.53 MiB
3d31fcf+dirty 4.98 MiB 6.56 MiB 1.58 MiB
9210ae6+dirty 5.15 MiB 6.68 MiB 1.53 MiB
26843eb+dirty 4.98 MiB 6.53 MiB 1.55 MiB
7a89652+dirty 5.15 MiB 6.70 MiB 1.55 MiB
9ad4522+dirty 4.98 MiB 6.56 MiB 1.58 MiB

Previous results on branch: feat/expose-ios-memory-introspection

Startup times

Revision Plain With Sentry Diff
2f5fe5c+dirty 3861.06 ms 1229.91 ms -2631.15 ms

App size

Revision Plain With Sentry Diff
2f5fe5c+dirty 5.15 MiB 6.88 MiB 1.73 MiB

@github-actions

github-actions Bot commented Sep 4, 2026

Copy link
Copy Markdown
Contributor

iOS (new) Performance metrics 🚀

  Plain With Sentry Diff
Startup time 3866.72 ms 1229.02 ms -2637.70 ms
Size 5.15 MiB 6.88 MiB 1.73 MiB

Baseline results on branch: main

Startup times

Revision Plain With Sentry Diff
71abba0+dirty 3852.70 ms 1224.53 ms -2628.16 ms
bc0d8cf+dirty 3834.64 ms 1223.91 ms -2610.73 ms
68ae91b+dirty 3836.36 ms 1222.04 ms -2614.32 ms
267d3ed+dirty 3860.14 ms 1223.39 ms -2636.76 ms
f170ec3+dirty 3844.74 ms 1222.67 ms -2622.07 ms
b9bebee+dirty 3858.02 ms 1231.92 ms -2626.11 ms
d038a14+dirty 3831.11 ms 1216.30 ms -2614.81 ms
853723c+dirty 3849.33 ms 1221.07 ms -2628.26 ms
e763471+dirty 3826.10 ms 1221.52 ms -2604.58 ms
3d31fcf+dirty 3857.46 ms 1237.17 ms -2620.29 ms

App size

Revision Plain With Sentry Diff
71abba0+dirty 5.15 MiB 6.67 MiB 1.52 MiB
bc0d8cf+dirty 5.15 MiB 6.67 MiB 1.51 MiB
68ae91b+dirty 4.98 MiB 6.46 MiB 1.48 MiB
267d3ed+dirty 5.15 MiB 6.69 MiB 1.54 MiB
f170ec3+dirty 5.15 MiB 6.69 MiB 1.53 MiB
b9bebee+dirty 5.15 MiB 6.68 MiB 1.53 MiB
d038a14+dirty 5.15 MiB 6.67 MiB 1.51 MiB
853723c+dirty 5.15 MiB 6.69 MiB 1.53 MiB
e763471+dirty 4.98 MiB 6.51 MiB 1.53 MiB
3d31fcf+dirty 4.98 MiB 6.56 MiB 1.58 MiB

@github-actions

github-actions Bot commented Sep 4, 2026

Copy link
Copy Markdown
Contributor

Android (new) Performance metrics 🚀

  Plain With Sentry Diff
Startup time 531.53 ms 579.60 ms 48.07 ms
Size 50.56 MiB 56.46 MiB 5.90 MiB

Baseline results on branch: main

Startup times

Revision Plain With Sentry Diff
eb93136+dirty 500.37 ms 532.58 ms 32.21 ms
9210ae6+dirty 444.14 ms 459.80 ms 15.66 ms
94af3bd+dirty 413.04 ms 451.76 ms 38.71 ms
7d6fd3a+dirty 435.06 ms 458.78 ms 23.72 ms
15d4514+dirty 413.63 ms 449.62 ms 35.99 ms
9ad4522+dirty 432.43 ms 450.91 ms 18.49 ms
0a147b2+dirty 442.80 ms 522.24 ms 79.44 ms
7887847+dirty 420.47 ms 460.55 ms 40.08 ms
a3265b6+dirty 410.96 ms 444.76 ms 33.80 ms
57e0069+dirty 442.25 ms 486.64 ms 44.39 ms

App size

Revision Plain With Sentry Diff
eb93136+dirty 48.30 MiB 53.58 MiB 5.28 MiB
9210ae6+dirty 48.30 MiB 53.54 MiB 5.23 MiB
94af3bd+dirty 48.30 MiB 53.57 MiB 5.26 MiB
7d6fd3a+dirty 43.94 MiB 49.00 MiB 5.06 MiB
15d4514+dirty 48.30 MiB 53.60 MiB 5.30 MiB
9ad4522+dirty 49.74 MiB 55.38 MiB 5.63 MiB
0a147b2+dirty 49.74 MiB 55.08 MiB 5.34 MiB
7887847+dirty 49.74 MiB 54.81 MiB 5.07 MiB
a3265b6+dirty 48.30 MiB 53.58 MiB 5.28 MiB
57e0069+dirty 49.74 MiB 54.85 MiB 5.11 MiB

Previous results on branch: feat/expose-ios-memory-introspection

Startup times

Revision Plain With Sentry Diff
2f5fe5c+dirty 421.81 ms 437.12 ms 15.30 ms

App size

Revision Plain With Sentry Diff
2f5fe5c+dirty 50.56 MiB 56.46 MiB 5.90 MiB

Comment thread packages/core/src/js/options.ts
Add wrapper.test.ts coverage mirroring the enableMetricKit tests, so the
bridge passthrough is validated at the boundary and future refactors
can't silently drop the option.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

@lucas-zimerman lucas-zimerman left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

LGTM!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ready-to-merge Triggers the full CI test suite

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Expose iOS enableMemoryIntrospection option

2 participants