> ## Documentation Index
> Fetch the complete documentation index at: https://docs.flashcat.cloud/llms.txt
> Use this file to discover all available pages before exploring further.

# Compatibility

> Learn about iOS RUM SDK supported platform versions, development tools, UI frameworks, and network library compatibility

<Info>
  This document describes the operating system versions, development platforms, UI frameworks, and third-party library compatibility supported by the iOS RUM SDK.
</Info>

## System Requirements

Flashduty RUM iOS SDK supports the following operating system versions:

| Platform                      | Support Status     | Min Version | Notes                                                   |
| ----------------------------- | ------------------ | ----------- | ------------------------------------------------------- |
| **iOS**                       | ✅ Fully supported  | 12.0+       | Recommended platform, all features fully supported      |
| **iPadOS**                    | ✅ Fully supported  | 12.0+       | All features fully supported                            |
| **tvOS**                      | ✅ Fully supported  | 12.0+       | All features fully supported                            |
| **macOS (Designed for iPad)** | ✅ Supported        | 11.0+       | iPad apps running on macOS                              |
| **macOS (Catalyst)**          | ⚠️ Partial support | 10.14+      | Build supported, some runtime features may be limited   |
| **macOS**                     | ⚠️ Partial support | 10.14+      | Unofficial support, some features may not work properly |
| **visionOS**                  | ⚠️ Partial support | 1.0+        | Unofficial support, some features may not work properly |
| **watchOS**                   | ❌ Not supported    | -           | watchOS platform not currently supported                |

## Development Toolchain

### Xcode

<Note>
  The SDK is built with the latest version of Xcode but is always backward compatible with the minimum supported Xcode version required for App Store submission.
</Note>

**Recommended Version:** Xcode 14.0 and above

### Dependency Management Tools

| Tool                      | Support Status    | Recommendation |
| ------------------------- | ----------------- | -------------- |
| **Swift Package Manager** | ✅ Fully supported | Recommended ⭐  |
| **CocoaPods**             | ✅ Fully supported | Supported      |
| Carthage                  | 🚧 Planned        | Coming soon    |

### Programming Languages

| Language        | Min Version | Support Status                  |
| --------------- | ----------- | ------------------------------- |
| **Swift**       | 5.0+        | ✅ Fully supported (recommended) |
| **Objective-C** | 2.0         | ✅ Fully supported               |

## Framework Compatibility

<AccordionGroup>
  <Accordion title="UI Frameworks">
    | Framework   | Auto Tracking | Manual Tracking | Notes                                                            |
    | ----------- | ------------- | --------------- | ---------------------------------------------------------------- |
    | **UIKit**   | ✅             | ✅               | Supports auto tracking of UIViewController and user interactions |
    | **SwiftUI** | ⚠️            | ✅               | Requires `.trackRUMView()` and `.trackRUMTapAction()` modifiers  |

    <Tip>
      UIKit apps can be fully auto-tracked, SwiftUI apps require adding modifiers.
    </Tip>
  </Accordion>

  <Accordion title="Network Frameworks">
    | Framework/Library  | Auto Tracking | Manual Tracking | Notes                                          |
    | ------------------ | ------------- | --------------- | ---------------------------------------------- |
    | **URLSession**     | ✅             | ✅               | Requires enabling `URLSessionInstrumentation`  |
    | **Alamofire**      | ❌             | ✅               | Can be manually tracked via custom interceptor |
    | **Apollo GraphQL** | ❌             | ✅               | Can be manually tracked via custom interceptor |
    | **AFNetworking**   | ❌             | ⚠️              | Deprecated, recommend migrating to URLSession  |

    <Note>
      URLSession is recommended for fully automatic network request tracking.
    </Note>
  </Accordion>

  <Accordion title="WebView Support">
    | Type          | Support Status    | Notes                                                 |
    | ------------- | ----------------- | ----------------------------------------------------- |
    | **WKWebView** | ✅ Fully supported | Requires integrating `FlashcatWebViewTracking` module |
    | **UIWebView** | ❌ Not supported   | Deprecated by Apple                                   |

    <Warning>
      UIWebView has been deprecated by Apple, please use WKWebView.
    </Warning>
  </Accordion>
</AccordionGroup>

## SDK Modules

Flashduty iOS SDK consists of the following modules:

| Dependency Name (SPM/CocoaPods) | Import Name              | Description                            | Required    |
| ------------------------------- | ------------------------ | -------------------------------------- | ----------- |
| **FlashcatCore**                | `DatadogCore`            | Core SDK, provides basic functionality | ✅ Required  |
| **FlashcatRUM**                 | `DatadogRUM`             | RUM data collection and reporting      | ✅ Required  |
| **FlashcatWebViewTracking**     | `DatadogWebViewTracking` | WebView integration support            | Optional    |
| **FlashcatCrashReporting**      | `DatadogCrashReporting`  | Crash reporting                        | Recommended |

<Tip>
  Selectively integrate modules based on your needs. Only `FlashcatCore` and `FlashcatRUM` are required.
</Tip>

## Third-party Dependencies

<Note>
  Flashduty iOS SDK depends on the following third-party libraries:
</Note>

| Library Name    | Version | Purpose                 |
| --------------- | ------- | ----------------------- |
| PLCrashReporter | 1.12.0  | Crash report collection |

## Known Limitations

<AccordionGroup>
  <Accordion title="SwiftUI Limitations">
    * SwiftUI views require manually adding `.trackRUMView()` modifier to be tracked
    * Using `.trackRUMTapAction()` inside `List` may affect default gesture behavior
    * For `List` elements, recommend using custom action API

    <Tip>
      SwiftUI apps are recommended to combine auto tracking and manual tracking for best monitoring results.
    </Tip>
  </Accordion>

  <Accordion title="macOS and visionOS Limitations">
    <Warning>
      **Unofficial Support Platforms:**

      * macOS and visionOS are not officially supported platforms
      * Some features that depend on UIKit may not work properly on these platforms
      * Future version compatibility is not guaranteed
    </Warning>
  </Accordion>

  <Accordion title="Catalyst Limitations">
    * Catalyst mode only supports building, some runtime features may be limited
    * Recommend thorough testing before actual use

    <Note>
      If your app primarily targets macOS Catalyst, recommend verifying all features in a test environment first.
    </Note>
  </Accordion>
</AccordionGroup>

## Minimum Deployment Requirements

<Check>
  **Requirements:**

  * Minimum OS version: iOS 12.0 / iPadOS 12.0 / tvOS 12.0
  * Minimum Xcode version: Xcode 14.0
  * Minimum Swift version: Swift 5.0
  * Network permission: App needs network access permission to report data
  * Storage space: SDK needs small amount of local storage for caching offline data
</Check>

## Performance Impact

Flashduty iOS SDK is designed to be lightweight with minimal impact on app performance:

| Metric                    | Impact                                     |
| ------------------------- | ------------------------------------------ |
| **CPU Usage**             | \< 1%                                      |
| **Memory Usage**          | \< 10 MB                                   |
| **Package Size Increase** | \~2-3 MB (depending on integrated modules) |
| **Startup Time Impact**   | \< 100ms                                   |

<Tip>
  The SDK uses asynchronous batch processing and does not block the main thread, with minimal impact on user experience.
</Tip>

## Version Update Strategy

The SDK follows Semantic Versioning:

| Update Type | Version Format | Compatibility       | Description                                             |
| ----------- | -------------- | ------------------- | ------------------------------------------------------- |
| **Major**   | v3.0.0         | May be incompatible | May contain breaking changes, code adjustments required |
| **Minor**   | v3.1.0         | Backward compatible | New features, maintains backward compatibility          |
| **Patch**   | v3.1.1         | Fully compatible    | Bug fixes, fully backward compatible                    |

<Tip>
  We recommend regularly updating the SDK to the latest stable version for best performance and security.
</Tip>

## Related Documentation

<CardGroup cols={3}>
  <Card title="SDK Integration" icon="rocket" href="/en/rum/sdk/ios/sdk-integration">
    Learn how to integrate the iOS SDK
  </Card>

  <Card title="Advanced Configuration" icon="sliders" href="/en/rum/sdk/ios/advanced-config">
    Configure advanced SDK features
  </Card>

  <Card title="Data Collection" icon="database" href="/en/rum/sdk/ios/data-collection">
    Learn about data types collected by the SDK
  </Card>
</CardGroup>
