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 arm64Build 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