Every iOS app I've worked on in the last decade ended up with its own hand-rolled Keychain wrapper. Most of them had the same bugs: errSecDuplicateItem not handled, queries that didn't match the attributes used to save, background reads failing with errSecInteractionNotAllowed and logging the user out, and tokens quietly ending up in print statements.
So I packaged the patterns I keep rewriting into SecureStorageKit : a free, open-source Swift package for storing secrets on iOS, iPadOS and macOS. It's serverless, built only on Apple frameworks (Keychain, LocalAuthentication, CryptoKit and the Secure Enclave), and has no third-party dependencies .
What's inside
Area Features
Keychain Save, read, update and delete Strings, Data and Codable values.…