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.
AppForce1: News and info for iOS app developers