Skip to content

Instantly share code, notes, and snippets.

@dgcoffman
Last active August 2, 2023 16:48
Show Gist options
  • Star 5 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save dgcoffman/620cd50ce94bdd03b78f67179e92de1a to your computer and use it in GitHub Desktop.
Save dgcoffman/620cd50ce94bdd03b78f67179e92de1a to your computer and use it in GitHub Desktop.
iOS and Swift Ecosystem

✅ = we use it in coinbase-ios

Layout

  • SnapKit Swift auto layout DSL. Simplifies defining UI constraints.
  • Cartography Another declarative auto layout DSL.
  • PureLayout Extends UIView/NSView, NSArray, and NSLayoutConstraint with more Auto Layout APIs.

Dependency Injection

  • Swinject A lightweight dependency injection framework for Swift.
  • Cleanse Square's DI framework, built by Uber engineers (like Needle). It is designed from the ground-up with developer experience in mind. It takes inspiration from both Dagger and Guice.
  • Needle Uber's Dagger
  • Weaver Declarative, easy-to-use and safe Dependency Injection framework for Swift
  • Typhoon Powerful dependency injection for Cocoa and CocoaTouch.

HTTP

  • Alamofire An HTTP networking library written in Swift.

Reactive Programming

Persistence

  • Core Data Save your application’s permanent data for offline use, cache temporary data, and add undo functionality to your app.
  • Realm Realm is a mobile database: a replacement for Core Data & SQLite
  • MagicalRecord ActiveRecord for Core Data.
  • HanekeSwift A lightweight generic cache for iOS and tvOS written in Swift 4.
  • Disk A powerful and simple file management library built with Apple's iOS Data Storage Guidelines in mind.
  • PINCache Pinterest's non-deadlocking parallel object cache.
  • Hyper Cache
  • Spotify PersistentCache An LRU cache which makes use of the file system to store files as well as inserting a cache header into each file.

Data Architecture

  • ReSwift Redux-like implementation of the unidirectional data flow architecture in Swift.

Navigation / Deep Linking / Routing

  • URLNavigator Navigate through view controllers by URLs.
  • DeepLinkKit
  • RxFlow Navigation framework for iOS applications based on a Reactive Flow Coordinator pattern.

Logging

  • os_log The unified logging system provides a single, efficient, performant API for capturing messaging across all levels of the system.
  • SwiftyBeaver Colorful, flexible, lightweight logging for Swift.
  • CocoaLumberjack

Information

Localization

Information

Animation

  • Lottie Natively render After Effects vector animations.

Meta-Programming

  • Sourcery A code generator for Swift language, built on top of Apple's own SourceKit. It extends the language abstractions to allow you to generate boilerplate code automatically.

Testing

  • XCTest Apple's own framework to write unit tests for your Xcode projects that integrate seamlessly with Xcode's testing workflow.
  • Quick A BDD framework for Swift and Objective-C. Inspired by RSpec, Specta, and Ginkgo.
  • xctool A drop-in replacement for xcodebuild test that adds a few extra features, like parallelism and output formatters.
  • iOS Snapshot Test Case Snaposhot testing.
  • Cuckoo Boilerplate-free mocking framework for Swift, DSL similar to Mockito.
  • Appium XCUITest

Code Formatting

Lint

  • SwiftLint A tool to enforce Swift style and conventions, loosely based on GitHub's Swift Style Guide.

Build Systems

  • xcodebuild Xcode's build system
  • XCBuild Facebook's Xcode-compatible build tool with the goal of providing faster builds and better documentation of the build process.
  • Buck A build system developed and used by Facebook.
  • Bazel A fast, scalable, multi-language and extensible build system
  • xcpretty A fast and flexible formatter for xcodebuild output

Information

Package Managers

  • CocoaPods A dependency manager for Swift and Objective-C Cocoa projects.
  • Carthage A decentralized dependency manager for Swift and Objective-C. It leverages CocoaTouch modules and is less invasive than CocoaPods.
  • Mint Manages Swift CLI packages (e.g. swiftformat)

Information

Static Analysis

  • SonarSwift Analyzes Swift code and find code smells, bugs and security vulnerabilities.

Continuous Integration

  • CircleCI
  • Danger Automate your team's conventions surrounding code review.

Deployment | Distribution

  • fastlane Build automation, beta deployment, app store deployment, code signing

Event Tracking & Analytics

Production Crash & Error Monitoring

Beta Services

Bug Reporting

  • Buglife Allows users to report bugs with relevant information.

Documentation

  • Jazzy Command-line utility that generates documentation for Swift from comments and the AST representation of your code.

Information

Hot Reloading


Essential Concepts


Architectural Patterns

  • MVC
  • MVP
  • MVVM
  • VIPER

Random


Philosophy

Things I think iOS engineers think


Other Resources

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment