The Swift Package Index logo.Swift Package Index

Build Information

Failed to build SessionReplaySDK, reference main (08ac65), with Swift 6.1 for macOS (SPM) on 27 Sep 2026 05:32:22 UTC.

Build Command

env DEVELOPER_DIR=/Applications/Xcode-16.3.0.app xcrun swift build --arch arm64

Build Log

========================================
RunAll
========================================
Builder version: 5.1.0
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/AlmoutasemNabil/SessionReplaySDK.git
Reference: main
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/.git/
From https://github.com/AlmoutasemNabil/SessionReplaySDK
 * branch            main       -> FETCH_HEAD
 * [new branch]      main       -> origin/main
HEAD is now at 08ac650 Add Related section for SDK and PipeKit
Cloned https://github.com/AlmoutasemNabil/SessionReplaySDK.git
Revision (git rev-parse @):
08ac650b42ba52f2466b6248c0c5d9b0d215c1f0
SUCCESS checkout https://github.com/AlmoutasemNabil/SessionReplaySDK.git at main
========================================
Build
========================================
Selected platform:         macosSpm
Swift version:             6.1
Building package at path:  $PWD
https://github.com/AlmoutasemNabil/SessionReplaySDK.git
https://github.com/AlmoutasemNabil/SessionReplaySDK.git
{
  "dependencies" : [
  ],
  "manifest_display_name" : "SessionReplaySDK",
  "name" : "SessionReplaySDK",
  "path" : "/Users/admin/builder/spi-builder-workspace",
  "platforms" : [
    {
      "name" : "ios",
      "version" : "15.0"
    },
    {
      "name" : "macos",
      "version" : "12.0"
    }
  ],
  "products" : [
    {
      "name" : "SessionReplaySDK",
      "targets" : [
        "SessionReplaySDK"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    }
  ],
  "targets" : [
    {
      "c99name" : "SessionReplaySDKTests",
      "module_type" : "SwiftTarget",
      "name" : "SessionReplaySDKTests",
      "path" : "Tests/SessionReplaySDKTests",
      "sources" : [
        "CaptureGatingTests.swift",
        "MaskingTests.swift",
        "SessionRotationTests.swift",
        "VideoWriterTests.swift"
      ],
      "target_dependencies" : [
        "SessionReplaySDK"
      ],
      "type" : "test"
    },
    {
      "c99name" : "SessionReplaySDK",
      "module_type" : "SwiftTarget",
      "name" : "SessionReplaySDK",
      "path" : "Sources/SessionReplaySDK",
      "product_memberships" : [
        "SessionReplaySDK"
      ],
      "sources" : [
        "Core/Models.swift",
        "Core/SessionReplayManager.swift",
        "Integration/SwiftUIIntegration.swift",
        "Integration/UIKitIntegration.swift",
        "Logging/NetworkInterceptor.swift",
        "Logging/SessionLogger.swift",
        "SessionReplaySDK.swift",
        "Upload/SessionUploader.swift",
        "Video/VideoWriter.swift"
      ],
      "type" : "library"
    }
  ],
  "tools_version" : "5.9"
}
Running build ...
env DEVELOPER_DIR=/Applications/Xcode-16.3.0.app xcrun swift build --arch arm64 -Xswiftc -Xfrontend -Xswiftc -stats-output-dir -Xswiftc -Xfrontend -Xswiftc .stats -Xswiftc -strict-concurrency=complete -Xswiftc -enable-upcoming-feature -Xswiftc StrictConcurrency -Xswiftc -enable-upcoming-feature -Xswiftc DisableOutwardActorInference -Xswiftc -enable-upcoming-feature -Xswiftc GlobalActorIsolatedTypesUsability -Xswiftc -enable-upcoming-feature -Xswiftc InferSendableFromCaptures
Building for debugging...
[0/2] Write sources
[1/2] Write swift-version-2F0A5646E1D333AE.txt
[3/12] Compiling SessionReplaySDK SessionUploader.swift
/Users/admin/builder/spi-builder-workspace/Sources/SessionReplaySDK/Upload/SessionUploader.swift:152:23: warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'SessionUploader' may have shared mutable state; this is an error in the Swift 6 language mode
148 |
149 | /// Main class for uploading session recordings to a backend
150 | public final class SessionUploader {
    |                    `- note: class 'SessionUploader' does not conform to the 'Sendable' protocol
151 |
152 |     public static let shared = SessionUploader()
    |                       |- warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'SessionUploader' may have shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: add '@MainActor' to make static property 'shared' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
153 |
154 |     // MARK: - Properties
/Users/admin/builder/spi-builder-workspace/Sources/SessionReplaySDK/Upload/SessionUploader.swift:194:19: warning: value 'config' was defined but never used; consider replacing with boolean test
192 |         completion: @escaping (Result<SessionUploadResponse, Error>) -> Void
193 |     ) {
194 |         guard let config = config else {
    |                   `- warning: value 'config' was defined but never used; consider replacing with boolean test
195 |             completion(.failure(SessionUploadError.notConfigured))
196 |             return
/Users/admin/builder/spi-builder-workspace/Sources/SessionReplaySDK/Upload/SessionUploader.swift:280:13: warning: capture of 'self' with non-sendable type 'SessionUploader?' in a '@Sendable' closure
148 |
149 | /// Main class for uploading session recordings to a backend
150 | public final class SessionUploader {
    |                    `- note: class 'SessionUploader' does not conform to the 'Sendable' protocol
151 |
152 |     public static let shared = SessionUploader()
    :
278 |
279 |         uploadQueue.async { [weak self] in
280 |             self?.performUpload(
    |             `- warning: capture of 'self' with non-sendable type 'SessionUploader?' in a '@Sendable' closure
281 |                 sessionId: sessionId,
282 |                 videoURL: videoURL,
/Users/admin/builder/spi-builder-workspace/Sources/SessionReplaySDK/Upload/SessionUploader.swift:284:25: warning: capture of 'config' with non-sendable type 'SessionUploadConfig' in a '@Sendable' closure
 21 |
 22 | /// Configuration for session uploads
 23 | public struct SessionUploadConfig {
    |               `- note: consider making struct 'SessionUploadConfig' conform to the 'Sendable' protocol
 24 |     /// Base URL for the upload endpoint
 25 |     public var baseURL: URL
    :
282 |                 videoURL: videoURL,
283 |                 jsonURL: jsonURL,
284 |                 config: config,
    |                         `- warning: capture of 'config' with non-sendable type 'SessionUploadConfig' in a '@Sendable' closure
285 |                 completion: completion
286 |             )
/Users/admin/builder/spi-builder-workspace/Sources/SessionReplaySDK/Upload/SessionUploader.swift:285:29: warning: capture of 'completion' with non-sendable type '(Result<SessionUploadResponse, any Error>) -> Void' in a '@Sendable' closure
283 |                 jsonURL: jsonURL,
284 |                 config: config,
285 |                 completion: completion
    |                             |- warning: capture of 'completion' with non-sendable type '(Result<SessionUploadResponse, any Error>) -> Void' in a '@Sendable' closure
    |                             `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
286 |             )
287 |         }
/Users/admin/builder/spi-builder-workspace/Sources/SessionReplaySDK/Upload/SessionUploader.swift:293:27: warning: capture of 'self' with non-sendable type 'SessionUploader?' in a '@Sendable' closure
148 |
149 | /// Main class for uploading session recordings to a backend
150 | public final class SessionUploader {
    |                    `- note: class 'SessionUploader' does not conform to the 'Sendable' protocol
151 |
152 |     public static let shared = SessionUploader()
    :
291 |     public func cancelUpload(sessionId: String) {
292 |         uploadQueue.async { [weak self] in
293 |             if let task = self?.activeTasks[sessionId] {
    |                           `- warning: capture of 'self' with non-sendable type 'SessionUploader?' in a '@Sendable' closure
294 |                 task.cancel()
295 |                 self?.activeTasks.removeValue(forKey: sessionId)
/Users/admin/builder/spi-builder-workspace/Sources/SessionReplaySDK/Upload/SessionUploader.swift:445:13: warning: capture of 'self' with non-sendable type 'SessionUploader?' in a '@Sendable' closure
148 |
149 | /// Main class for uploading session recordings to a backend
150 | public final class SessionUploader {
    |                    `- note: class 'SessionUploader' does not conform to the 'Sendable' protocol
151 |
152 |     public static let shared = SessionUploader()
    :
443 |         // Create upload task
444 |         let task = urlSession.dataTask(with: request) { [weak self] data, response, error in
445 |             self?.activeTasks.removeValue(forKey: sessionId)
    |             `- warning: capture of 'self' with non-sendable type 'SessionUploader?' in a '@Sendable' closure
446 |
447 |             if let error = error {
/Users/admin/builder/spi-builder-workspace/Sources/SessionReplaySDK/Upload/SessionUploader.swift:452:25: warning: capture of 'completion' with non-sendable type '(Result<SessionUploadResponse, any Error>) -> Void' in a '@Sendable' closure
450 |                     self?.uploadStatuses[sessionId] = .cancelled
451 |                     DispatchQueue.main.async {
452 |                         completion(.failure(SessionUploadError.uploadCancelled))
    |                         |- warning: capture of 'completion' with non-sendable type '(Result<SessionUploadResponse, any Error>) -> Void' in a '@Sendable' closure
    |                         `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
453 |                     }
454 |                     return
/Users/admin/builder/spi-builder-workspace/Sources/SessionReplaySDK/Upload/SessionUploader.swift:458:33: warning: capture of 'config' with non-sendable type 'SessionUploadConfig' in a '@Sendable' closure
 21 |
 22 | /// Configuration for session uploads
 23 | public struct SessionUploadConfig {
    |               `- note: consider making struct 'SessionUploadConfig' conform to the 'Sendable' protocol
 24 |     /// Base URL for the upload endpoint
 25 |     public var baseURL: URL
    :
456 |
457 |                 // Retry logic
458 |                 if retryCount < config.maxRetries {
    |                                 `- warning: capture of 'config' with non-sendable type 'SessionUploadConfig' in a '@Sendable' closure
459 |                     self?.performUpload(
460 |                         sessionId: sessionId,
/Users/admin/builder/spi-builder-workspace/Sources/SessionReplaySDK/Upload/SessionUploader.swift:317:13: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
315 |     ) {
316 |         DispatchQueue.main.async { [weak self] in
317 |             self?.delegate?.uploadDidStart(sessionId: sessionId)
    |             |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
    |             `- note: task-isolated 'self' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
318 |         }
319 |
/Users/admin/builder/spi-builder-workspace/Sources/SessionReplaySDK/Upload/SessionUploader.swift:519:17: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
516 |             }
517 |
518 |             DispatchQueue.main.async { [weak self] in
    |                                      `- note: access can happen concurrently
519 |                 self?.delegate?.uploadDidComplete(sessionId: sessionId, response: uploadResponse)
    |                 |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
    |                 `- note: 'self' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
520 |                 completion(.success(uploadResponse))
521 |             }
[4/12] Compiling SessionReplaySDK SessionReplaySDK.swift
[5/12] Compiling SessionReplaySDK SessionLogger.swift
/Users/admin/builder/spi-builder-workspace/Sources/SessionReplaySDK/Logging/SessionLogger.swift:22:23: warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'SessionLogger' may have shared mutable state; this is an error in the Swift 6 language mode
 18 |
 19 | /// Main class for capturing console logs and network requests during a session.
 20 | public final class SessionLogger {
    |                    `- note: class 'SessionLogger' does not conform to the 'Sendable' protocol
 21 |
 22 |     public static let shared = SessionLogger()
    |                       |- warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'SessionLogger' may have shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: add '@MainActor' to make static property 'shared' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 23 |
 24 |     // MARK: - Properties
/Users/admin/builder/spi-builder-workspace/Sources/SessionReplaySDK/Logging/SessionLogger.swift:163:30: warning: capture of 'self' with non-sendable type 'SessionLogger?' in a '@Sendable' closure
 18 |
 19 | /// Main class for capturing console logs and network requests during a session.
 20 | public final class SessionLogger {
    |                    `- note: class 'SessionLogger' does not conform to the 'Sendable' protocol
 21 |
 22 |     public static let shared = SessionLogger()
    :
161 |     internal func addLogEntry(message: String, level: LogLevel, source: String) {
162 |         logQueue.async { [weak self] in
163 |             guard let self = self, self.isCapturing else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'SessionLogger?' in a '@Sendable' closure
164 |             guard let startTime = self.sessionStartTime else { return }
165 |
/Users/admin/builder/spi-builder-workspace/Sources/SessionReplaySDK/Logging/SessionLogger.swift:180:24: warning: capture of 'level' with non-sendable type 'LogLevel' in a '@Sendable' closure
178 |                 timestamp: now.timeIntervalSince(startTime) * 1000,
179 |                 absoluteTime: now,
180 |                 level: level,
    |                        `- warning: capture of 'level' with non-sendable type 'LogLevel' in a '@Sendable' closure
181 |                 message: sanitizedMessage,
182 |                 source: source,
/Users/admin/builder/spi-builder-workspace/Sources/SessionReplaySDK/Core/Models.swift:213:13: note: consider making enum 'LogLevel' conform to the 'Sendable' protocol
211 |
212 | /// Severity level for captured logs
213 | public enum LogLevel: String, Codable, Comparable {
    |             `- note: consider making enum 'LogLevel' conform to the 'Sendable' protocol
214 |     case debug = "debug"
215 |     case info = "info"
/Users/admin/builder/spi-builder-workspace/Sources/SessionReplaySDK/Logging/SessionLogger.swift:196:30: warning: capture of 'self' with non-sendable type 'SessionLogger?' in a '@Sendable' closure
 18 |
 19 | /// Main class for capturing console logs and network requests during a session.
 20 | public final class SessionLogger {
    |                    `- note: class 'SessionLogger' does not conform to the 'Sendable' protocol
 21 |
 22 |     public static let shared = SessionLogger()
    :
194 |     internal func addNetworkEntry(_ entry: NetworkEntry) {
195 |         logQueue.async { [weak self] in
196 |             guard let self = self, self.isCapturing else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'SessionLogger?' in a '@Sendable' closure
197 |
198 |             self.networkEntries.append(entry)
/Users/admin/builder/spi-builder-workspace/Sources/SessionReplaySDK/Logging/SessionLogger.swift:198:40: warning: capture of 'entry' with non-sendable type 'NetworkEntry' in a '@Sendable' closure
196 |             guard let self = self, self.isCapturing else { return }
197 |
198 |             self.networkEntries.append(entry)
    |                                        `- warning: capture of 'entry' with non-sendable type 'NetworkEntry' in a '@Sendable' closure
199 |
200 |             if self.networkEntries.count > self.maxNetworkEntries {
/Users/admin/builder/spi-builder-workspace/Sources/SessionReplaySDK/Core/Models.swift:260:15: note: consider making struct 'NetworkEntry' conform to the 'Sendable' protocol
258 |
259 | /// A captured network request with response
260 | public struct NetworkEntry: Codable {
    |               `- note: consider making struct 'NetworkEntry' conform to the 'Sendable' protocol
261 |     public let id: String
262 |     public let timestamp: TimeInterval
/Users/admin/builder/spi-builder-workspace/Sources/SessionReplaySDK/Logging/SessionLogger.swift:309:30: warning: capture of 'self' with non-sendable type 'ConsoleCapture?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
281 |
282 | /// Captures stdout/stderr using Unix pipe redirection
283 | private final class ConsoleCapture {
    |                     `- note: class 'ConsoleCapture' does not conform to the 'Sendable' protocol
284 |     private let inputPipe = Pipe()
285 |     private let originalFD: Int32
    :
307 |
308 |         inputPipe.fileHandleForReading.readabilityHandler = { [weak self] handle in
309 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'ConsoleCapture?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
310 |
311 |             let data = handle.availableData
[6/12] Compiling SessionReplaySDK VideoWriter.swift
[7/12] Compiling SessionReplaySDK NetworkInterceptor.swift
/Users/admin/builder/spi-builder-workspace/Sources/SessionReplaySDK/Logging/NetworkInterceptor.swift:27:13: warning: var 'taskIdKey' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 25 | // MARK: - Associated Object Keys
 26 |
 27 | private var taskIdKey: UInt8 = 0
    |             |- warning: var 'taskIdKey' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |             |- note: convert 'taskIdKey' to a 'let' constant to make 'Sendable' shared state immutable
    |             |- note: add '@MainActor' to make var 'taskIdKey' part of global actor 'MainActor'
    |             `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 28 | private var taskStartTimeKey: UInt8 = 1
 29 | private var taskRequestKey: UInt8 = 2
/Users/admin/builder/spi-builder-workspace/Sources/SessionReplaySDK/Logging/NetworkInterceptor.swift:28:13: warning: var 'taskStartTimeKey' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 26 |
 27 | private var taskIdKey: UInt8 = 0
 28 | private var taskStartTimeKey: UInt8 = 1
    |             |- warning: var 'taskStartTimeKey' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |             |- note: convert 'taskStartTimeKey' to a 'let' constant to make 'Sendable' shared state immutable
    |             |- note: add '@MainActor' to make var 'taskStartTimeKey' part of global actor 'MainActor'
    |             `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 29 | private var taskRequestKey: UInt8 = 2
 30 | private var taskResponseDataKey: UInt8 = 3
/Users/admin/builder/spi-builder-workspace/Sources/SessionReplaySDK/Logging/NetworkInterceptor.swift:29:13: warning: var 'taskRequestKey' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 27 | private var taskIdKey: UInt8 = 0
 28 | private var taskStartTimeKey: UInt8 = 1
 29 | private var taskRequestKey: UInt8 = 2
    |             |- warning: var 'taskRequestKey' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |             |- note: convert 'taskRequestKey' to a 'let' constant to make 'Sendable' shared state immutable
    |             |- note: add '@MainActor' to make var 'taskRequestKey' part of global actor 'MainActor'
    |             `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 30 | private var taskResponseDataKey: UInt8 = 3
 31 | private var originalDelegateKey: UInt8 = 4
/Users/admin/builder/spi-builder-workspace/Sources/SessionReplaySDK/Logging/NetworkInterceptor.swift:30:13: warning: var 'taskResponseDataKey' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 28 | private var taskStartTimeKey: UInt8 = 1
 29 | private var taskRequestKey: UInt8 = 2
 30 | private var taskResponseDataKey: UInt8 = 3
    |             |- warning: var 'taskResponseDataKey' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |             |- note: convert 'taskResponseDataKey' to a 'let' constant to make 'Sendable' shared state immutable
    |             |- note: add '@MainActor' to make var 'taskResponseDataKey' part of global actor 'MainActor'
    |             `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 31 | private var originalDelegateKey: UInt8 = 4
 32 | private var hasInjectedDelegateKey: UInt8 = 5
/Users/admin/builder/spi-builder-workspace/Sources/SessionReplaySDK/Logging/NetworkInterceptor.swift:31:13: warning: var 'originalDelegateKey' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 29 | private var taskRequestKey: UInt8 = 2
 30 | private var taskResponseDataKey: UInt8 = 3
 31 | private var originalDelegateKey: UInt8 = 4
    |             |- warning: var 'originalDelegateKey' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |             |- note: convert 'originalDelegateKey' to a 'let' constant to make 'Sendable' shared state immutable
    |             |- note: add '@MainActor' to make var 'originalDelegateKey' part of global actor 'MainActor'
    |             `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 32 | private var hasInjectedDelegateKey: UInt8 = 5
 33 | private var taskObserverKey: UInt8 = 6
/Users/admin/builder/spi-builder-workspace/Sources/SessionReplaySDK/Logging/NetworkInterceptor.swift:32:13: warning: var 'hasInjectedDelegateKey' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 30 | private var taskResponseDataKey: UInt8 = 3
 31 | private var originalDelegateKey: UInt8 = 4
 32 | private var hasInjectedDelegateKey: UInt8 = 5
    |             |- warning: var 'hasInjectedDelegateKey' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |             |- note: convert 'hasInjectedDelegateKey' to a 'let' constant to make 'Sendable' shared state immutable
    |             |- note: add '@MainActor' to make var 'hasInjectedDelegateKey' part of global actor 'MainActor'
    |             `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 33 | private var taskObserverKey: UInt8 = 6
 34 | private var taskCompletedKey: UInt8 = 7
/Users/admin/builder/spi-builder-workspace/Sources/SessionReplaySDK/Logging/NetworkInterceptor.swift:33:13: warning: var 'taskObserverKey' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 31 | private var originalDelegateKey: UInt8 = 4
 32 | private var hasInjectedDelegateKey: UInt8 = 5
 33 | private var taskObserverKey: UInt8 = 6
    |             |- warning: var 'taskObserverKey' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |             |- note: convert 'taskObserverKey' to a 'let' constant to make 'Sendable' shared state immutable
    |             |- note: add '@MainActor' to make var 'taskObserverKey' part of global actor 'MainActor'
    |             `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 34 | private var taskCompletedKey: UInt8 = 7
 35 |
/Users/admin/builder/spi-builder-workspace/Sources/SessionReplaySDK/Logging/NetworkInterceptor.swift:34:13: warning: var 'taskCompletedKey' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 32 | private var hasInjectedDelegateKey: UInt8 = 5
 33 | private var taskObserverKey: UInt8 = 6
 34 | private var taskCompletedKey: UInt8 = 7
    |             |- warning: var 'taskCompletedKey' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |             |- note: convert 'taskCompletedKey' to a 'let' constant to make 'Sendable' shared state immutable
    |             |- note: add '@MainActor' to make var 'taskCompletedKey' part of global actor 'MainActor'
    |             `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 35 |
 36 | // MARK: - Network Interceptor
/Users/admin/builder/spi-builder-workspace/Sources/SessionReplaySDK/Logging/NetworkInterceptor.swift:42:23: warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'NetworkInterceptor' may have shared mutable state; this is an error in the Swift 6 language mode
 38 | /// Intercepts all network requests using URLSession method swizzling.
 39 | /// Works with ALL URLSession configurations including custom sessions with SSL pinning.
 40 | public final class NetworkInterceptor {
    |                    `- note: class 'NetworkInterceptor' does not conform to the 'Sendable' protocol
 41 |
 42 |     public static let shared = NetworkInterceptor()
    |                       |- warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'NetworkInterceptor' may have shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: add '@MainActor' to make static property 'shared' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 43 |
 44 |     private weak var logger: SessionLogger?
/Users/admin/builder/spi-builder-workspace/Sources/SessionReplaySDK/Logging/NetworkInterceptor.swift:316:13: warning: var 'accumulatedDataKey' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
314 | // MARK: - URLSessionTask Extension for Data Accumulation
315 |
316 | private var accumulatedDataKey: UInt8 = 10
    |             |- warning: var 'accumulatedDataKey' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |             |- note: convert 'accumulatedDataKey' to a 'let' constant to make 'Sendable' shared state immutable
    |             |- note: add '@MainActor' to make var 'accumulatedDataKey' part of global actor 'MainActor'
    |             `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
317 |
318 | extension URLSessionTask {
/Users/admin/builder/spi-builder-workspace/Sources/SessionReplaySDK/Logging/NetworkInterceptor.swift:345:24: warning: static property 'hasSwizzled' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
343 | final class URLSessionSwizzler {
344 |
345 |     private static var hasSwizzled = false
    |                        |- warning: static property 'hasSwizzled' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                        |- note: convert 'hasSwizzled' to a 'let' constant to make 'Sendable' shared state immutable
    |                        |- note: add '@MainActor' to make static property 'hasSwizzled' part of global actor 'MainActor'
    |                        `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
346 |     private static let swizzleLock = NSLock()
347 |
/Users/admin/builder/spi-builder-workspace/Sources/SessionReplaySDK/Logging/NetworkInterceptor.swift:349:24: warning: static property 'originalResumeIMP' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
347 |
348 |     // Store original implementations
349 |     private static var originalResumeIMP: IMP?
    |                        |- warning: static property 'originalResumeIMP' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                        |- note: convert 'originalResumeIMP' to a 'let' constant to make 'Sendable' shared state immutable
    |                        |- note: add '@MainActor' to make static property 'originalResumeIMP' part of global actor 'MainActor'
    |                        `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
350 |     private static var originalDataTaskRequestCompletionIMP: IMP?
351 |     private static var originalDataTaskURLCompletionIMP: IMP?
/Users/admin/builder/spi-builder-workspace/Sources/SessionReplaySDK/Logging/NetworkInterceptor.swift:350:24: warning: static property 'originalDataTaskRequestCompletionIMP' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
348 |     // Store original implementations
349 |     private static var originalResumeIMP: IMP?
350 |     private static var originalDataTaskRequestCompletionIMP: IMP?
    |                        |- warning: static property 'originalDataTaskRequestCompletionIMP' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                        |- note: convert 'originalDataTaskRequestCompletionIMP' to a 'let' constant to make 'Sendable' shared state immutable
    |                        |- note: add '@MainActor' to make static property 'originalDataTaskRequestCompletionIMP' part of global actor 'MainActor'
    |                        `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
351 |     private static var originalDataTaskURLCompletionIMP: IMP?
352 |     private static var originalUploadTaskDataCompletionIMP: IMP?
/Users/admin/builder/spi-builder-workspace/Sources/SessionReplaySDK/Logging/NetworkInterceptor.swift:351:24: warning: static property 'originalDataTaskURLCompletionIMP' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
349 |     private static var originalResumeIMP: IMP?
350 |     private static var originalDataTaskRequestCompletionIMP: IMP?
351 |     private static var originalDataTaskURLCompletionIMP: IMP?
    |                        |- warning: static property 'originalDataTaskURLCompletionIMP' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                        |- note: convert 'originalDataTaskURLCompletionIMP' to a 'let' constant to make 'Sendable' shared state immutable
    |                        |- note: add '@MainActor' to make static property 'originalDataTaskURLCompletionIMP' part of global actor 'MainActor'
    |                        `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
352 |     private static var originalUploadTaskDataCompletionIMP: IMP?
353 |     private static var originalUploadTaskFileCompletionIMP: IMP?
/Users/admin/builder/spi-builder-workspace/Sources/SessionReplaySDK/Logging/NetworkInterceptor.swift:352:24: warning: static property 'originalUploadTaskDataCompletionIMP' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
350 |     private static var originalDataTaskRequestCompletionIMP: IMP?
351 |     private static var originalDataTaskURLCompletionIMP: IMP?
352 |     private static var originalUploadTaskDataCompletionIMP: IMP?
    |                        |- warning: static property 'originalUploadTaskDataCompletionIMP' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                        |- note: convert 'originalUploadTaskDataCompletionIMP' to a 'let' constant to make 'Sendable' shared state immutable
    |                        |- note: add '@MainActor' to make static property 'originalUploadTaskDataCompletionIMP' part of global actor 'MainActor'
    |                        `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
353 |     private static var originalUploadTaskFileCompletionIMP: IMP?
354 |     private static var originalSessionInitIMP: IMP?
/Users/admin/builder/spi-builder-workspace/Sources/SessionReplaySDK/Logging/NetworkInterceptor.swift:353:24: warning: static property 'originalUploadTaskFileCompletionIMP' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
351 |     private static var originalDataTaskURLCompletionIMP: IMP?
352 |     private static var originalUploadTaskDataCompletionIMP: IMP?
353 |     private static var originalUploadTaskFileCompletionIMP: IMP?
    |                        |- warning: static property 'originalUploadTaskFileCompletionIMP' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                        |- note: convert 'originalUploadTaskFileCompletionIMP' to a 'let' constant to make 'Sendable' shared state immutable
    |                        |- note: add '@MainActor' to make static property 'originalUploadTaskFileCompletionIMP' part of global actor 'MainActor'
    |                        `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
354 |     private static var originalSessionInitIMP: IMP?
355 |
/Users/admin/builder/spi-builder-workspace/Sources/SessionReplaySDK/Logging/NetworkInterceptor.swift:354:24: warning: static property 'originalSessionInitIMP' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
352 |     private static var originalUploadTaskDataCompletionIMP: IMP?
353 |     private static var originalUploadTaskFileCompletionIMP: IMP?
354 |     private static var originalSessionInitIMP: IMP?
    |                        |- warning: static property 'originalSessionInitIMP' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                        |- note: convert 'originalSessionInitIMP' to a 'let' constant to make 'Sendable' shared state immutable
    |                        |- note: add '@MainActor' to make static property 'originalSessionInitIMP' part of global actor 'MainActor'
    |                        `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
355 |
356 |     /// Swizzle URLSession methods once. Safe to call multiple times.
/Users/admin/builder/spi-builder-workspace/Sources/SessionReplaySDK/Logging/NetworkInterceptor.swift:291:30: warning: capture of 'self' with non-sendable type 'TaskStateObserver?' in a '@Sendable' closure
277 | /// Observes URLSessionTask state changes using KVO to capture completion
278 | /// for delegate-based tasks that don't use completion handlers.
279 | private class TaskStateObserver: NSObject {
    |               `- note: class 'TaskStateObserver' does not conform to the 'Sendable' protocol
280 |     private weak var task: URLSessionTask?
281 |     private weak var interceptor: NetworkInterceptor?
    :
289 |         // Observe task state changes
290 |         observation = task.observe(\.state, options: [.new]) { [weak self] task, change in
291 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'TaskStateObserver?' in a '@Sendable' closure
292 |
293 |             if task.state == .completed {
/Users/admin/builder/spi-builder-workspace/Sources/SessionReplaySDK/Logging/NetworkInterceptor.swift:428:45: warning: converting non-sendable function value to '@Sendable (Data?, URLResponse?, (any Error)?) -> Void' may introduce data races
426 |
427 |     private static func swizzleDataTaskWithRequestAndCompletion() {
428 |         let selector = #selector(URLSession.dataTask(with:completionHandler:) as (URLSession) -> (URLRequest, @escaping (Data?, URLResponse?, Error?) -> Void) -> URLSessionDataTask)
    |                                             `- warning: converting non-sendable function value to '@Sendable (Data?, URLResponse?, (any Error)?) -> Void' may introduce data races
429 |
430 |         guard let originalMethod = class_getInstanceMethod(URLSession.self, selector) else {
/Users/admin/builder/spi-builder-workspace/Sources/SessionReplaySDK/Logging/NetworkInterceptor.swift:465:45: warning: converting non-sendable function value to '@Sendable (Data?, URLResponse?, (any Error)?) -> Void' may introduce data races
463 |
464 |     private static func swizzleDataTaskWithURLAndCompletion() {
465 |         let selector = #selector(URLSession.dataTask(with:completionHandler:) as (URLSession) -> (URL, @escaping (Data?, URLResponse?, Error?) -> Void) -> URLSessionDataTask)
    |                                             `- warning: converting non-sendable function value to '@Sendable (Data?, URLResponse?, (any Error)?) -> Void' may introduce data races
466 |
467 |         guard let originalMethod = class_getInstanceMethod(URLSession.self, selector) else {
/Users/admin/builder/spi-builder-workspace/Sources/SessionReplaySDK/Logging/NetworkInterceptor.swift:497:45: warning: converting non-sendable function value to '@Sendable (Data?, URLResponse?, (any Error)?) -> Void' may introduce data races
495 |
496 |     private static func swizzleUploadTaskWithDataAndCompletion() {
497 |         let selector = #selector(URLSession.uploadTask(with:from:completionHandler:) as (URLSession) -> (URLRequest, Data?, @escaping (Data?, URLResponse?, Error?) -> Void) -> URLSessionUploadTask)
    |                                             `- warning: converting non-sendable function value to '@Sendable (Data?, URLResponse?, (any Error)?) -> Void' may introduce data races
498 |
499 |         guard let originalMethod = class_getInstanceMethod(URLSession.self, selector) else {
/Users/admin/builder/spi-builder-workspace/Sources/SessionReplaySDK/Logging/NetworkInterceptor.swift:529:45: warning: converting non-sendable function value to '@Sendable (Data?, URLResponse?, (any Error)?) -> Void' may introduce data races
527 |
528 |     private static func swizzleUploadTaskWithFileAndCompletion() {
529 |         let selector = #selector(URLSession.uploadTask(with:fromFile:completionHandler:) as (URLSession) -> (URLRequest, URL, @escaping (Data?, URLResponse?, Error?) -> Void) -> URLSessionUploadTask)
    |                                             `- warning: converting non-sendable function value to '@Sendable (Data?, URLResponse?, (any Error)?) -> Void' may introduce data races
530 |
531 |         guard let originalMethod = class_getInstanceMethod(URLSession.self, selector) else {
error: emit-module command failed with exit code 1 (use -v to see invocation)
[8/12] Compiling SessionReplaySDK UIKitIntegration.swift
[9/12] Compiling SessionReplaySDK SwiftUIIntegration.swift
[10/12] Compiling SessionReplaySDK SessionReplayManager.swift
[11/12] Emitting module SessionReplaySDK
/Users/admin/builder/spi-builder-workspace/Sources/SessionReplaySDK/Core/Models.swift:55:40: error: cannot find type 'UIColor' in scope
 53 |
 54 |     /// Color used to mask sensitive content
 55 |     public var sensitiveViewMaskColor: UIColor = .gray
    |                                        `- error: cannot find type 'UIColor' in scope
 56 |
 57 |     /// Whether to automatically mask text input fields
/Users/admin/builder/spi-builder-workspace/Sources/SessionReplaySDK/Logging/NetworkInterceptor.swift:27:13: warning: var 'taskIdKey' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 25 | // MARK: - Associated Object Keys
 26 |
 27 | private var taskIdKey: UInt8 = 0
    |             |- warning: var 'taskIdKey' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |             |- note: convert 'taskIdKey' to a 'let' constant to make 'Sendable' shared state immutable
    |             |- note: add '@MainActor' to make var 'taskIdKey' part of global actor 'MainActor'
    |             `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 28 | private var taskStartTimeKey: UInt8 = 1
 29 | private var taskRequestKey: UInt8 = 2
/Users/admin/builder/spi-builder-workspace/Sources/SessionReplaySDK/Logging/NetworkInterceptor.swift:28:13: warning: var 'taskStartTimeKey' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 26 |
 27 | private var taskIdKey: UInt8 = 0
 28 | private var taskStartTimeKey: UInt8 = 1
    |             |- warning: var 'taskStartTimeKey' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |             |- note: convert 'taskStartTimeKey' to a 'let' constant to make 'Sendable' shared state immutable
    |             |- note: add '@MainActor' to make var 'taskStartTimeKey' part of global actor 'MainActor'
    |             `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 29 | private var taskRequestKey: UInt8 = 2
 30 | private var taskResponseDataKey: UInt8 = 3
/Users/admin/builder/spi-builder-workspace/Sources/SessionReplaySDK/Logging/NetworkInterceptor.swift:29:13: warning: var 'taskRequestKey' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 27 | private var taskIdKey: UInt8 = 0
 28 | private var taskStartTimeKey: UInt8 = 1
 29 | private var taskRequestKey: UInt8 = 2
    |             |- warning: var 'taskRequestKey' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |             |- note: convert 'taskRequestKey' to a 'let' constant to make 'Sendable' shared state immutable
    |             |- note: add '@MainActor' to make var 'taskRequestKey' part of global actor 'MainActor'
    |             `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 30 | private var taskResponseDataKey: UInt8 = 3
 31 | private var originalDelegateKey: UInt8 = 4
/Users/admin/builder/spi-builder-workspace/Sources/SessionReplaySDK/Logging/NetworkInterceptor.swift:30:13: warning: var 'taskResponseDataKey' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 28 | private var taskStartTimeKey: UInt8 = 1
 29 | private var taskRequestKey: UInt8 = 2
 30 | private var taskResponseDataKey: UInt8 = 3
    |             |- warning: var 'taskResponseDataKey' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |             |- note: convert 'taskResponseDataKey' to a 'let' constant to make 'Sendable' shared state immutable
    |             |- note: add '@MainActor' to make var 'taskResponseDataKey' part of global actor 'MainActor'
    |             `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 31 | private var originalDelegateKey: UInt8 = 4
 32 | private var hasInjectedDelegateKey: UInt8 = 5
/Users/admin/builder/spi-builder-workspace/Sources/SessionReplaySDK/Logging/NetworkInterceptor.swift:31:13: warning: var 'originalDelegateKey' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 29 | private var taskRequestKey: UInt8 = 2
 30 | private var taskResponseDataKey: UInt8 = 3
 31 | private var originalDelegateKey: UInt8 = 4
    |             |- warning: var 'originalDelegateKey' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |             |- note: convert 'originalDelegateKey' to a 'let' constant to make 'Sendable' shared state immutable
    |             |- note: add '@MainActor' to make var 'originalDelegateKey' part of global actor 'MainActor'
    |             `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 32 | private var hasInjectedDelegateKey: UInt8 = 5
 33 | private var taskObserverKey: UInt8 = 6
/Users/admin/builder/spi-builder-workspace/Sources/SessionReplaySDK/Logging/NetworkInterceptor.swift:32:13: warning: var 'hasInjectedDelegateKey' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 30 | private var taskResponseDataKey: UInt8 = 3
 31 | private var originalDelegateKey: UInt8 = 4
 32 | private var hasInjectedDelegateKey: UInt8 = 5
    |             |- warning: var 'hasInjectedDelegateKey' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |             |- note: convert 'hasInjectedDelegateKey' to a 'let' constant to make 'Sendable' shared state immutable
    |             |- note: add '@MainActor' to make var 'hasInjectedDelegateKey' part of global actor 'MainActor'
    |             `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 33 | private var taskObserverKey: UInt8 = 6
 34 | private var taskCompletedKey: UInt8 = 7
/Users/admin/builder/spi-builder-workspace/Sources/SessionReplaySDK/Logging/NetworkInterceptor.swift:33:13: warning: var 'taskObserverKey' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 31 | private var originalDelegateKey: UInt8 = 4
 32 | private var hasInjectedDelegateKey: UInt8 = 5
 33 | private var taskObserverKey: UInt8 = 6
    |             |- warning: var 'taskObserverKey' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |             |- note: convert 'taskObserverKey' to a 'let' constant to make 'Sendable' shared state immutable
    |             |- note: add '@MainActor' to make var 'taskObserverKey' part of global actor 'MainActor'
    |             `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 34 | private var taskCompletedKey: UInt8 = 7
 35 |
/Users/admin/builder/spi-builder-workspace/Sources/SessionReplaySDK/Logging/NetworkInterceptor.swift:34:13: warning: var 'taskCompletedKey' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 32 | private var hasInjectedDelegateKey: UInt8 = 5
 33 | private var taskObserverKey: UInt8 = 6
 34 | private var taskCompletedKey: UInt8 = 7
    |             |- warning: var 'taskCompletedKey' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |             |- note: convert 'taskCompletedKey' to a 'let' constant to make 'Sendable' shared state immutable
    |             |- note: add '@MainActor' to make var 'taskCompletedKey' part of global actor 'MainActor'
    |             `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 35 |
 36 | // MARK: - Network Interceptor
/Users/admin/builder/spi-builder-workspace/Sources/SessionReplaySDK/Logging/NetworkInterceptor.swift:42:23: warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'NetworkInterceptor' may have shared mutable state; this is an error in the Swift 6 language mode
 38 | /// Intercepts all network requests using URLSession method swizzling.
 39 | /// Works with ALL URLSession configurations including custom sessions with SSL pinning.
 40 | public final class NetworkInterceptor {
    |                    `- note: class 'NetworkInterceptor' does not conform to the 'Sendable' protocol
 41 |
 42 |     public static let shared = NetworkInterceptor()
    |                       |- warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'NetworkInterceptor' may have shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: add '@MainActor' to make static property 'shared' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 43 |
 44 |     private weak var logger: SessionLogger?
/Users/admin/builder/spi-builder-workspace/Sources/SessionReplaySDK/Logging/NetworkInterceptor.swift:316:13: warning: var 'accumulatedDataKey' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
314 | // MARK: - URLSessionTask Extension for Data Accumulation
315 |
316 | private var accumulatedDataKey: UInt8 = 10
    |             |- warning: var 'accumulatedDataKey' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |             |- note: convert 'accumulatedDataKey' to a 'let' constant to make 'Sendable' shared state immutable
    |             |- note: add '@MainActor' to make var 'accumulatedDataKey' part of global actor 'MainActor'
    |             `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
317 |
318 | extension URLSessionTask {
/Users/admin/builder/spi-builder-workspace/Sources/SessionReplaySDK/Logging/NetworkInterceptor.swift:345:24: warning: static property 'hasSwizzled' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
343 | final class URLSessionSwizzler {
344 |
345 |     private static var hasSwizzled = false
    |                        |- warning: static property 'hasSwizzled' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                        |- note: convert 'hasSwizzled' to a 'let' constant to make 'Sendable' shared state immutable
    |                        |- note: add '@MainActor' to make static property 'hasSwizzled' part of global actor 'MainActor'
    |                        `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
346 |     private static let swizzleLock = NSLock()
347 |
/Users/admin/builder/spi-builder-workspace/Sources/SessionReplaySDK/Logging/NetworkInterceptor.swift:349:24: warning: static property 'originalResumeIMP' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
347 |
348 |     // Store original implementations
349 |     private static var originalResumeIMP: IMP?
    |                        |- warning: static property 'originalResumeIMP' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                        |- note: convert 'originalResumeIMP' to a 'let' constant to make 'Sendable' shared state immutable
    |                        |- note: add '@MainActor' to make static property 'originalResumeIMP' part of global actor 'MainActor'
    |                        `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
350 |     private static var originalDataTaskRequestCompletionIMP: IMP?
351 |     private static var originalDataTaskURLCompletionIMP: IMP?
/Users/admin/builder/spi-builder-workspace/Sources/SessionReplaySDK/Logging/NetworkInterceptor.swift:350:24: warning: static property 'originalDataTaskRequestCompletionIMP' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
348 |     // Store original implementations
349 |     private static var originalResumeIMP: IMP?
350 |     private static var originalDataTaskRequestCompletionIMP: IMP?
    |                        |- warning: static property 'originalDataTaskRequestCompletionIMP' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                        |- note: convert 'originalDataTaskRequestCompletionIMP' to a 'let' constant to make 'Sendable' shared state immutable
    |                        |- note: add '@MainActor' to make static property 'originalDataTaskRequestCompletionIMP' part of global actor 'MainActor'
    |                        `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
351 |     private static var originalDataTaskURLCompletionIMP: IMP?
352 |     private static var originalUploadTaskDataCompletionIMP: IMP?
/Users/admin/builder/spi-builder-workspace/Sources/SessionReplaySDK/Logging/NetworkInterceptor.swift:351:24: warning: static property 'originalDataTaskURLCompletionIMP' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
349 |     private static var originalResumeIMP: IMP?
350 |     private static var originalDataTaskRequestCompletionIMP: IMP?
351 |     private static var originalDataTaskURLCompletionIMP: IMP?
    |                        |- warning: static property 'originalDataTaskURLCompletionIMP' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                        |- note: convert 'originalDataTaskURLCompletionIMP' to a 'let' constant to make 'Sendable' shared state immutable
    |                        |- note: add '@MainActor' to make static property 'originalDataTaskURLCompletionIMP' part of global actor 'MainActor'
    |                        `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
352 |     private static var originalUploadTaskDataCompletionIMP: IMP?
353 |     private static var originalUploadTaskFileCompletionIMP: IMP?
/Users/admin/builder/spi-builder-workspace/Sources/SessionReplaySDK/Logging/NetworkInterceptor.swift:352:24: warning: static property 'originalUploadTaskDataCompletionIMP' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
350 |     private static var originalDataTaskRequestCompletionIMP: IMP?
351 |     private static var originalDataTaskURLCompletionIMP: IMP?
352 |     private static var originalUploadTaskDataCompletionIMP: IMP?
    |                        |- warning: static property 'originalUploadTaskDataCompletionIMP' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                        |- note: convert 'originalUploadTaskDataCompletionIMP' to a 'let' constant to make 'Sendable' shared state immutable
    |                        |- note: add '@MainActor' to make static property 'originalUploadTaskDataCompletionIMP' part of global actor 'MainActor'
    |                        `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
353 |     private static var originalUploadTaskFileCompletionIMP: IMP?
354 |     private static var originalSessionInitIMP: IMP?
/Users/admin/builder/spi-builder-workspace/Sources/SessionReplaySDK/Logging/NetworkInterceptor.swift:353:24: warning: static property 'originalUploadTaskFileCompletionIMP' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
351 |     private static var originalDataTaskURLCompletionIMP: IMP?
352 |     private static var originalUploadTaskDataCompletionIMP: IMP?
353 |     private static var originalUploadTaskFileCompletionIMP: IMP?
    |                        |- warning: static property 'originalUploadTaskFileCompletionIMP' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                        |- note: convert 'originalUploadTaskFileCompletionIMP' to a 'let' constant to make 'Sendable' shared state immutable
    |                        |- note: add '@MainActor' to make static property 'originalUploadTaskFileCompletionIMP' part of global actor 'MainActor'
    |                        `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
354 |     private static var originalSessionInitIMP: IMP?
355 |
/Users/admin/builder/spi-builder-workspace/Sources/SessionReplaySDK/Logging/NetworkInterceptor.swift:354:24: warning: static property 'originalSessionInitIMP' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
352 |     private static var originalUploadTaskDataCompletionIMP: IMP?
353 |     private static var originalUploadTaskFileCompletionIMP: IMP?
354 |     private static var originalSessionInitIMP: IMP?
    |                        |- warning: static property 'originalSessionInitIMP' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                        |- note: convert 'originalSessionInitIMP' to a 'let' constant to make 'Sendable' shared state immutable
    |                        |- note: add '@MainActor' to make static property 'originalSessionInitIMP' part of global actor 'MainActor'
    |                        `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
355 |
356 |     /// Swizzle URLSession methods once. Safe to call multiple times.
/Users/admin/builder/spi-builder-workspace/Sources/SessionReplaySDK/Logging/NetworkInterceptor.swift:428:45: warning: converting non-sendable function value to '@Sendable (Data?, URLResponse?, (any Error)?) -> Void' may introduce data races
426 |
427 |     private static func swizzleDataTaskWithRequestAndCompletion() {
428 |         let selector = #selector(URLSession.dataTask(with:completionHandler:) as (URLSession) -> (URLRequest, @escaping (Data?, URLResponse?, Error?) -> Void) -> URLSessionDataTask)
    |                                             `- warning: converting non-sendable function value to '@Sendable (Data?, URLResponse?, (any Error)?) -> Void' may introduce data races
429 |
430 |         guard let originalMethod = class_getInstanceMethod(URLSession.self, selector) else {
/Users/admin/builder/spi-builder-workspace/Sources/SessionReplaySDK/Logging/NetworkInterceptor.swift:465:45: warning: converting non-sendable function value to '@Sendable (Data?, URLResponse?, (any Error)?) -> Void' may introduce data races
463 |
464 |     private static func swizzleDataTaskWithURLAndCompletion() {
465 |         let selector = #selector(URLSession.dataTask(with:completionHandler:) as (URLSession) -> (URL, @escaping (Data?, URLResponse?, Error?) -> Void) -> URLSessionDataTask)
    |                                             `- warning: converting non-sendable function value to '@Sendable (Data?, URLResponse?, (any Error)?) -> Void' may introduce data races
466 |
467 |         guard let originalMethod = class_getInstanceMethod(URLSession.self, selector) else {
/Users/admin/builder/spi-builder-workspace/Sources/SessionReplaySDK/Logging/NetworkInterceptor.swift:497:45: warning: converting non-sendable function value to '@Sendable (Data?, URLResponse?, (any Error)?) -> Void' may introduce data races
495 |
496 |     private static func swizzleUploadTaskWithDataAndCompletion() {
497 |         let selector = #selector(URLSession.uploadTask(with:from:completionHandler:) as (URLSession) -> (URLRequest, Data?, @escaping (Data?, URLResponse?, Error?) -> Void) -> URLSessionUploadTask)
    |                                             `- warning: converting non-sendable function value to '@Sendable (Data?, URLResponse?, (any Error)?) -> Void' may introduce data races
498 |
499 |         guard let originalMethod = class_getInstanceMethod(URLSession.self, selector) else {
/Users/admin/builder/spi-builder-workspace/Sources/SessionReplaySDK/Logging/NetworkInterceptor.swift:529:45: warning: converting non-sendable function value to '@Sendable (Data?, URLResponse?, (any Error)?) -> Void' may introduce data races
527 |
528 |     private static func swizzleUploadTaskWithFileAndCompletion() {
529 |         let selector = #selector(URLSession.uploadTask(with:fromFile:completionHandler:) as (URLSession) -> (URLRequest, URL, @escaping (Data?, URLResponse?, Error?) -> Void) -> URLSessionUploadTask)
    |                                             `- warning: converting non-sendable function value to '@Sendable (Data?, URLResponse?, (any Error)?) -> Void' may introduce data races
530 |
531 |         guard let originalMethod = class_getInstanceMethod(URLSession.self, selector) else {
/Users/admin/builder/spi-builder-workspace/Sources/SessionReplaySDK/Logging/SessionLogger.swift:22:23: warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'SessionLogger' may have shared mutable state; this is an error in the Swift 6 language mode
 18 |
 19 | /// Main class for capturing console logs and network requests during a session.
 20 | public final class SessionLogger {
    |                    `- note: class 'SessionLogger' does not conform to the 'Sendable' protocol
 21 |
 22 |     public static let shared = SessionLogger()
    |                       |- warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'SessionLogger' may have shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: add '@MainActor' to make static property 'shared' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 23 |
 24 |     // MARK: - Properties
/Users/admin/builder/spi-builder-workspace/Sources/SessionReplaySDK/Upload/SessionUploader.swift:152:23: warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'SessionUploader' may have shared mutable state; this is an error in the Swift 6 language mode
148 |
149 | /// Main class for uploading session recordings to a backend
150 | public final class SessionUploader {
    |                    `- note: class 'SessionUploader' does not conform to the 'Sendable' protocol
151 |
152 |     public static let shared = SessionUploader()
    |                       |- warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'SessionUploader' may have shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: add '@MainActor' to make static property 'shared' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
153 |
154 |     // MARK: - Properties
[12/12] Compiling SessionReplaySDK Models.swift
/Users/admin/builder/spi-builder-workspace/Sources/SessionReplaySDK/Core/Models.swift:55:40: error: cannot find type 'UIColor' in scope
 53 |
 54 |     /// Color used to mask sensitive content
 55 |     public var sensitiveViewMaskColor: UIColor = .gray
    |                                        `- error: cannot find type 'UIColor' in scope
 56 |
 57 |     /// Whether to automatically mask text input fields
Running build ...
env DEVELOPER_DIR=/Applications/Xcode-16.3.0.app xcrun swift build --arch arm64
[0/1] Planning build
Building for debugging...
[0/1] Write swift-version-2F0A5646E1D333AE.txt
[2/11] Compiling SessionReplaySDK Models.swift
/Users/admin/builder/spi-builder-workspace/Sources/SessionReplaySDK/Core/Models.swift:55:40: error: cannot find type 'UIColor' in scope
 53 |
 54 |     /// Color used to mask sensitive content
 55 |     public var sensitiveViewMaskColor: UIColor = .gray
    |                                        `- error: cannot find type 'UIColor' in scope
 56 |
 57 |     /// Whether to automatically mask text input fields
[3/11] Compiling SessionReplaySDK VideoWriter.swift
[4/11] Compiling SessionReplaySDK SessionReplaySDK.swift
[5/11] Compiling SessionReplaySDK UIKitIntegration.swift
[6/11] Compiling SessionReplaySDK NetworkInterceptor.swift
[7/11] Compiling SessionReplaySDK SwiftUIIntegration.swift
error: emit-module command failed with exit code 1 (use -v to see invocation)
[8/11] Compiling SessionReplaySDK SessionReplayManager.swift
[9/11] Compiling SessionReplaySDK SessionLogger.swift
[10/11] Compiling SessionReplaySDK SessionUploader.swift
/Users/admin/builder/spi-builder-workspace/Sources/SessionReplaySDK/Upload/SessionUploader.swift:194:19: warning: value 'config' was defined but never used; consider replacing with boolean test
192 |         completion: @escaping (Result<SessionUploadResponse, Error>) -> Void
193 |     ) {
194 |         guard let config = config else {
    |                   `- warning: value 'config' was defined but never used; consider replacing with boolean test
195 |             completion(.failure(SessionUploadError.notConfigured))
196 |             return
[11/11] Emitting module SessionReplaySDK
/Users/admin/builder/spi-builder-workspace/Sources/SessionReplaySDK/Core/Models.swift:55:40: error: cannot find type 'UIColor' in scope
 53 |
 54 |     /// Color used to mask sensitive content
 55 |     public var sensitiveViewMaskColor: UIColor = .gray
    |                                        `- error: cannot find type 'UIColor' in scope
 56 |
 57 |     /// Whether to automatically mask text input fields
BUILD FAILURE 6.1 macosSpm