diff --git a/docs/platforms/apple/common/features/experimental-features.mdx b/docs/platforms/apple/common/features/experimental-features.mdx
deleted file mode 100644
index 8c2102ee602541..00000000000000
--- a/docs/platforms/apple/common/features/experimental-features.mdx
+++ /dev/null
@@ -1,55 +0,0 @@
----
-title: Experimental Features
-sidebar_order: 6500
-sidebar_section: features
-description: "Learn about the experimental features available for Sentry's Apple SDK."
----
-
-
- Experimental features are still a work-in-progress and may have bugs. We
- recognize the irony.
-
-
-Experimental features are features that are still being developed and tested. They may have bugs, incomplete functionality, or may change in future releases. Use them at your own risk and provide feedback to help us improve them.
-
-For stable features, see the Features page.
-
-## Profiling Features
-
-Profiling features are only available on iOS and macOS.
-
-### App Launch Profiling
-
-Enable App Launch Profiling to get detailed profiles for your app launches.
-
-### Continuous Profiling
-
-Enable Continuous Profiling to get full coverage of your app's execution.
-
-## Performance Features
-
-### Standalone App Start Tracing
-
-Enable `enableStandaloneAppStartTracing` to send app start data as a dedicated transaction instead of attaching it to the first UIViewController transaction. You can use a custom `tracesSampler` to set a dedicated sample rate for app start transactions by checking for the `app.start` operation.
-
-## Crash & Error Handling
-
-### Persisting Traces When Crashing
-
-Enable the `enablePersistingTracesWhenCrashing` option to link ongoing transactions to a crash event when your app crashes.
-
-### Unhandled C++ Exceptions V2
-
-Enable the `enableUnhandledCPPExceptionsV2` option to capture fatal C++ exceptions using a more reliable mechanism that hooks into all `__cxa_throw` calls.
-
-```swift
-options.experimental.enableUnhandledCPPExceptionsV2 = true
-```
-
-```objc {tabTitle:Objective-C}
-options.experimental.enableUnhandledCPPExceptionsV2 = YES;
-```
-
-This provides more comprehensive and consistent exception handling across your app's runtime, regardless of the number of C++ modules or how they're linked, and helps in obtaining accurate stack traces.
-
-**Note:** The mechanism of hooking into `__cxa_throw` could cause issues with symbolication on iOS due to caching of symbol references.
diff --git a/docs/platforms/apple/common/features/index.mdx b/docs/platforms/apple/common/features/index.mdx
index 10ee1bb6f8af73..662a539aed8a8f 100644
--- a/docs/platforms/apple/common/features/index.mdx
+++ b/docs/platforms/apple/common/features/index.mdx
@@ -83,10 +83,6 @@ All features listed below are **enabled by default** unless otherwise noted. Som
- Offline caching when a device is unable to connect; we send a report once we receive another event
- Event persistence: crash reports persist to disk and are sent upon application start if not sent immediately after a crash
-## Experimental Features
-
-For information about experimental features, see the Experimental Features page.
-
## Platform-Specific Documentation
For platform-specific feature details and limitations, see:
diff --git a/docs/platforms/apple/guides/macos/features/index.mdx b/docs/platforms/apple/guides/macos/features/index.mdx
index 6466a3cc30522e..5bc879143d0355 100644
--- a/docs/platforms/apple/guides/macos/features/index.mdx
+++ b/docs/platforms/apple/guides/macos/features/index.mdx
@@ -90,10 +90,6 @@ For macOS apps using UIKit (Mac Catalyst), the following features are also avail
- Logs capturing available (requires `enableLogs` option)
- Offline caching when a device is unable to connect; we send a report once we receive another event
-## Experimental Features
-
-For information about experimental features available on macOS, see the Experimental Features page.
-
## macOS Limitations
macOS has some limitations compared to iOS:
diff --git a/docs/platforms/apple/guides/visionos/features/index.mdx b/docs/platforms/apple/guides/visionos/features/index.mdx
index b839288e2e61f6..b44fad39e693e7 100644
--- a/docs/platforms/apple/guides/visionos/features/index.mdx
+++ b/docs/platforms/apple/guides/visionos/features/index.mdx
@@ -69,8 +69,4 @@ visionOS supports comprehensive error detection:
- Logs capturing available (requires `enableLogs` option)
- User Feedback via programmatic API (no UI available)
-## Experimental Features
-
-For information about experimental features that may be available on visionOS, see the Experimental Features page.
-
For configuration options and detailed documentation, see the Configuration section.
diff --git a/public/_platforms/apple/ios.json b/public/_platforms/apple/ios.json
index b9a6272aa59aa8..16eac423f1ff23 100644
--- a/public/_platforms/apple/ios.json
+++ b/public/_platforms/apple/ios.json
@@ -1 +1 @@
-{"key":"apple.ios","type":"language","doc_link":"https://docs.sentry.io/platforms/apple/","name":"iOS","aliases":[],"categories":["mobile"],"body":"Install
\nWe recommend installing the SDK with Swift Package Manager (SPM), but we also support alternate installation methods. To integrate Sentry into your Xcode
projectRepresents your service in Sentry and allows you to scope events to a distinct application.
using SPM, open your App in Xcode and open File > Add Packages. Then add the SDK by entering the Git repo url in the top right search field:\nhttps://github.com/getsentry/sentry-cocoa.git
\nAlternatively, when your project uses a Package.swift file to manage dependencies, you can specify the target with:
\n.package(url: \"https://github.com/getsentry/sentry-cocoa\", from: \"8.19.0\"),
\n\nMake sure you initialize the SDK as soon as possible in your application lifecycle e.g. in your AppDelegate application:didFinishLaunchingWithOptions method:
\nimport Sentry\n\n// ....\n\nfunc application(_ application: UIApplication,\n didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {\n\n SentrySDK.start { options in\n options.dsn = \"___PUBLIC_DSN___\"\n options.debug = true // Enabled debug when first installing is always helpful\n\n // Set tracesSampleRate to 1.0 to capture 100% of transactions for performance monitoring.\n // We recommend adjusting this value in production.\n options.tracesSampleRate = 1.0\n }\n\n return true\n}
\nWhen using SwiftUI and your app doesn't implement an app delegate, initialize the SDK within the App conformer's initializer:
\nimport Sentry\n\n@main\nstruct SwiftUIApp: App {\n init() {\n SentrySDK.start { options in\n options.dsn = \"___PUBLIC_DSN___\"\n options.debug = true // Enabled debug when first installing is always helpful\n\n // Set tracesSampleRate to 1.0 to capture 100% of transactions for performance monitoring.\n // We recommend adjusting this value in production.\n options.tracesSampleRate = 1.0\n }\n }\n}
\nVerify
\nThis snippet contains an intentional error you can use to test that errors are uploaded to Sentry correctly. You can add it to your main ViewController.
\nlet button = UIButton(type: .roundedRect)\nbutton.frame = CGRect(x: 20, y: 50, width: 100, height: 30)\nbutton.setTitle(\"Break the world\", for: [])\nbutton.addTarget(self, action: #selector(self.breakTheWorld(_:)), for: .touchUpInside)\nview.addSubview(button)\n\n@IBAction func breakTheWorld(_ sender: AnyObject) {\n fatalError(\"Break the world\")\n}
\nExperimental Features
\n\nWant to play with some new features? Try out our experimental features for View Hierarchy, Time to Full Display (TTFD), MetricKit, Prewarmed App Start Tracing, and Swift Async Stacktraces. Experimental features are still a work-in-progress and may have bugs. We recognize the irony.
\nLet us know if you have feedback through GitHub issues.
\n
\nimport Sentry\n\nSentrySDK.start { options in\n // ...\n\n // Enable all experimental features\n options.attachViewHierarchy = true\n options.enablePreWarmedAppStartTracing = true\n options.enableMetricKit = true\n options.enableTimeToFullDisplayTracing = true\n options.swiftAsyncStacktraces = true\n}
\n
\nNext Steps
\n"}
+{"key":"apple.ios","type":"language","doc_link":"https://docs.sentry.io/platforms/apple/","name":"iOS","aliases":[],"categories":["mobile"],"body":"Install
\nWe recommend installing the SDK with Swift Package Manager (SPM), but we also support alternate installation methods. To integrate Sentry into your Xcode
projectRepresents your service in Sentry and allows you to scope events to a distinct application.
using SPM, open your App in Xcode and open File > Add Packages. Then add the SDK by entering the Git repo url in the top right search field:\nhttps://github.com/getsentry/sentry-cocoa.git
\nAlternatively, when your project uses a Package.swift file to manage dependencies, you can specify the target with:
\n.package(url: \"https://github.com/getsentry/sentry-cocoa\", from: \"8.19.0\"),
\n\nMake sure you initialize the SDK as soon as possible in your application lifecycle e.g. in your AppDelegate application:didFinishLaunchingWithOptions method:
\nimport Sentry\n\n// ....\n\nfunc application(_ application: UIApplication,\n didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {\n\n SentrySDK.start { options in\n options.dsn = \"___PUBLIC_DSN___\"\n options.debug = true // Enabled debug when first installing is always helpful\n\n // Set tracesSampleRate to 1.0 to capture 100% of transactions for performance monitoring.\n // We recommend adjusting this value in production.\n options.tracesSampleRate = 1.0\n }\n\n return true\n}
\nWhen using SwiftUI and your app doesn't implement an app delegate, initialize the SDK within the App conformer's initializer:
\nimport Sentry\n\n@main\nstruct SwiftUIApp: App {\n init() {\n SentrySDK.start { options in\n options.dsn = \"___PUBLIC_DSN___\"\n options.debug = true // Enabled debug when first installing is always helpful\n\n // Set tracesSampleRate to 1.0 to capture 100% of transactions for performance monitoring.\n // We recommend adjusting this value in production.\n options.tracesSampleRate = 1.0\n }\n }\n}
\nVerify
\nThis snippet contains an intentional error you can use to test that errors are uploaded to Sentry correctly. You can add it to your main ViewController.
\nlet button = UIButton(type: .roundedRect)\nbutton.frame = CGRect(x: 20, y: 50, width: 100, height: 30)\nbutton.setTitle(\"Break the world\", for: [])\nbutton.addTarget(self, action: #selector(self.breakTheWorld(_:)), for: .touchUpInside)\nview.addSubview(button)\n\n@IBAction func breakTheWorld(_ sender: AnyObject) {\n fatalError(\"Break the world\")\n}
\nNext Steps
\n"}