DEV Community

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

Newsletter, sign up!

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.

Support the show (https://pod.fan/appforce1)

Episode source