Post

Dependency Deep Dives: IMDb's 20 OSS Building Blocks

Kicking off a new series dissecting the third-party libraries inside everyday iOS apps, starting with IMDb's 20 open source dependencies.

Dependency Deep Dives: IMDb's 20 OSS Building Blocks

Introduction

Start a practical series: dissect real production apps by listing and contextualizing their third‑party dependencies. I am using IMDb daily for watchlists, reviews, and actor bios, analyze how its iOS app assembles performance, storage, networking, and reliability with 20 open source libraries. Use this as an architectural lens, not a marketing tour.

The Stack: IMDb’s 20 Libraries

  1. TMCache — parallel memory/disk object cache for expensive objects https://github.com/TumblrArchive/TMCache

  2. CocoaLumberjack — high‑performance, flexible logging across Apple platforms https://github.com/CocoaLumberjack/CocoaLumberjack

  3. Protocol Buffers — efficient binary serialization for structured data https://github.com/google/protobuf

  4. Bolts-ObjC — task/promise primitives and App Links protocol support https://github.com/BoltsFramework/Bolts-ObjC

  5. JUCE — cross‑platform C++ framework, strong in media/audio components https://github.com/juce-framework/JUCE

  6. JUCE (WeAreROLI) — older JUCE repo, historically used by many apps https://github.com/WeAreROLI/JUCE

  7. KSReachability — modern, thread‑safe network reachability with blocks/KVO https://github.com/kstenerud/KSReachability

  8. Mantle — lightweight model layer with JSON mapping for ObjC https://github.com/Mantle/Mantle

  9. Apollo iOS — strongly‑typed GraphQL client with caching and codegen https://github.com/apollographql/apollo-ios

  10. libextobjc — ObjC language extensions via macros and categories https://github.com/jspahrsummers/libextobjc

  11. NHBalancedFlowLayout — balanced Pinterest‑style UICollectionView layout https://github.com/njdehoog/NHBalancedFlowLayout

  12. RxSwift — composable async with Observables and operators https://github.com/ReactiveX/RxSwift

  13. SQLite.swift — type‑safe Swift wrapper over SQLite3 https://github.com/stephencelis/SQLite.swift

  14. UICKeyChainStore — minimal Keychain wrapper across Apple platforms https://github.com/kishikawakatsumi/UICKeyChainStore

  15. XMLCoder — Codable‑first XML encoder/decoder in Swift https://github.com/MaxDesiatov/XMLCoder

  16. PLCrashReporter — in‑process crash capture and symbolication https://github.com/microsoft/plcrashreporter

  17. FMDB — mature ObjC wrapper around SQLite with queueing APIs https://github.com/ccgus/fmdb

  18. GZIP — NSData gzip compression/decompression helpers https://github.com/nicklockwood/GZIP

  19. Branch iOS SDK — deep linking and attribution https://github.com/BranchMetrics/ios-branch-deep-linking-attribution

  20. XMLDictionary — NSDictionary/NSArray‑centric XML parsing/generation https://github.com/nicklockwood/XMLDictionary

Architecture Signals

  • Progressive migration: Swift (RxSwift, SQLite.swift, Apollo) alongside ObjC (FMDB, Mantle, libextobjc) allows feature work in Swift while stabilizing legacy layers
  • Data versatility: GraphQL via Apollo for typed queries, Protobuf for compact transport, dual SQLite stacks for old/new code paths
  • Performance posture: TMCache for read paths, GZIP for payload size, Protobuf for CPU/IO efficiency
  • Reliability posture: PLCrashReporter for crash fidelity, KSReachability for offline/poor‑network behavior, Keychain wrapper for secure tokens
  • UI composition: NHBalancedFlowLayout for media grids, CocoaLumberjack for debug/ops visibility

Practical Takeaways

  • Prefer typed networking: adopt GraphQL (Apollo) or Protobuf contracts to reduce runtime mapping bugs Apollo iOS docs: https://www.apollographql.com/docs/ios/get-started

  • Decouple cache tiers: pair in‑memory and disk caches to stabilize image/JSON fetch paths; PINCache is a modern alternative to TMCache

  • Stage storage migrations: run FMDB for legacy while introducing SQLite.swift in new modules to avoid big‑bang rewrites

  • Harden telemetry early: integrate logging and crash reporting before feature scale to keep regressions observable

Conclusion

This dependency map explains why IMDb feels fast, resilient, and consistent: efficient data formats, layered storage, typed APIs, and strong observability.

Full list of IMDb iOS open source dependencies: https://www.imdb.com/iphone_app/terms_thirdparty_ios?from_app=ios

☕ Support My Work

If you found this post helpful and want to support more content like this, you can buy me a coffee!

Your support helps me continue creating useful articles and tips for fellow developers. Thank you! 🙏

This post is licensed under CC BY 4.0 by the author.