AppForce1: News and info for iOS app developers
Twitter Space on Storage options on iOS
This Twitter Space Stefan and I share some thoughts on what options you have in storing data on a device and in the cloud on/from iOS.
1. What is the goal of this space?
We won’t give you exact recommendations, storage is highly dependent on maaaany factors!
- Type of data to be stored (e.g. Booleans, Strings, Images, Large objects)
- Volume of data to be stored (e.g. settings options, notes app that saves users notes, offline backup for social network data)
- Needs to work offline?
- Sensitive data (encryption, data privacy, GDPR)
- Backed up?
2. What local options are there?
- UserDefaults
- Most basic option for small settings data (recommended use from Apple)
- Optimised for UIKit + SwiftUI
- Only locally available
- Simple local file (e.g. Text, JSON)
- More freedom to use a structure you want
- More risks because you have to handle all by yourself
- Local database (e.g. SQLite)
- provides more powerful options for querying, etc.
- there are wrappers around it / libraries for easier usage
- you have to know what you’re doing
- CoreData
- most powerful local option
- can have a steep learning curve
- gives you a lot of power and flexibility
3. What online options are there?
- CloudKit
- Apple’s cross-platform solution
- can but does not have to be used with CoreData
- Stefan: planning to use it for a side-project but haven’t used it before
- great to sync data between user’s devices: iOS/tvOS/iPadOS/macOS/watchOS
- limitation: only Apple ecosystem
- mixing reports: some people had syncing issues some didn’t
- Apple’s cross-platform solution
- Firebase / Realm / AWS Amplify / Azure probably has a solution as well
- necessary for apps with collaborative features (or maybe as a convenience for account-functionality)
- platform-agnostic
- share data between iOS/Android/Windows/Mac/Web
- be aware of something called “vendor lock-in”
- pricing is something to keep track of
- there are horrible stories of people having incredibly high bills because of loops/bugs they had in their code
- you give up control for convenience
- not a bad thing but important to keep in mind
- Self-hosted via AWS / Google Cloud / Azure / Supabase / Roll your own solution
4. Some recommendations
- Start small and work your way up
- There are a lot of options out there, so not easy to find the correct one, but what helps is:
- Think about the type of data you want to store
- When does it need to be available (online vs. offline)
- How secure does the data need to be stored?
Please rate me on Apple Podcasts.
Send me feedback on SpeakPipe
Or contact me through twitter
My book: Being a Lead Software Developer
Runway
Put your mobile releases on autopilot and keep the whole team in sync throughout.
Lead Software Developer
Learn best practices for being a great lead software developer.