Skip to content

[Swift 6 Migration] Create a Sendable wrapper for UserDefaults #27423

Open
@data-sync-user

Description

@data-sync-user

We have a few tickets where types using UserDefaults can’t be Sendable due to a UserDefaults property.

We could implement a general Sendable UserDefaults wrapper which we use in these places.

A few examples:

Hint from Claude.ai: https://claude.ai/share/108766af-ab13-4d3d-b0e7-7b6983ad46d4

actor UserDefaultsManager {
    private let userDefaults = UserDefaults.standard
    
    func getString(forKey key: String) -> String? {
        userDefaults.string(forKey: key)
    }
    
    func setString(_ value: String, forKey key: String) {
        userDefaults.set(value, forKey: key)
    }
    
    func getBool(forKey key: String) -> Bool {
        userDefaults.bool(forKey: key)
    }
    
    func setBool(_ value: Bool, forKey key: String) {
        userDefaults.set(value, forKey: key)
    }
}

// Usage
let settingsManager = UserDefaultsManager()
await settingsManager.setString("value", forKey: "key")
let value = await settingsManager.getString(forKey: "key")

┆Issue is synchronized with this Jira Task

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions