Sometimes it's just better to use a 3rd-party framework instead of reinventing the wheel, but there are some important questions that you should ask first:
- do I really need a library?
- what should I use?
- is it going to be supported?
- what if it's buggy? 🐛
Adding a dependency to your project can also lead to a technical debt. Don't be lazy, learn the underlying technology first (or at least read about it or ask someone who actually knows about it) and if you're sure that the framework is a good choice, then give it a chance. In this list I've tried to collect future proof, trusted and well-known iOS libraries used by most of the developer community. ⭐️
- the framework has to be written in Swift
- the library should not be design specific (there is cocoacontrols for that)
- it should be a runtime framework not a toolkit (aka. import XY)
- should have some package manager support (Carthage, CocoaPods, SPM)
- it has to support the latest major version of Swift
- must have at least 1000 stars on github
🌎 Network related libraries
Alamofire is an HTTP networking library written in Swift.
Kingfisher is a powerful, pure-Swift library for downloading and caching images from the web. It provides you a chance to use a pure-Swift way to work with remote images in your next app.
Starscream is a conforming WebSocket (RFC 6455) client library in Swift.
📦 Server side Swift
Vapor is a web framework for Swift. It provides a beautifully expressive and easy to use foundation for your next website, API, or cloud project.
SwiftNIO is a cross-platform asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients.
🔨 Reactive Programming
Streams, observers, etc...
ReactiveSwift offers composable, declarative and flexible primitives that are built around the grand concept of streams of values over time. These primitives can be used to uniformly represent common Cocoa and generic programming patterns that are fundamentally an act of observation.
Rx is a generic abstraction of computation expressed through
Observable<Element> interface. This is a Swift version of Rx.
Hero is a library for building iOS view controller transitions. It provides a declarative layer on top of the UIKit's cumbersome transition APIs—making custom transitions an easy task for developers.
A library to simplify iOS animations in Swift.
📐 Auto layout helpers
SnapKit is a DSL to make Auto Layout easy on both iOS and OS X.
TinyConstraints is the syntactic sugar that makes Auto Layout sweeter for human use.
Quick is a behavior-driven development framework for Swift and Objective-C. Inspired by RSpec, Specta, and Ginkgo.
Use Nimble to express the expected outcomes of Swift or Objective-C expressions. Inspired by Cedar.
Did I miss something?
PromiseKit is a thoughtful and complete implementation of promises for any platform that has a
CryptoSwift is a growing collection of standard and secure cryptographic algorithms implemented in Swift.
SwiftDate is the definitive toolchain to manipulate and display dates and time zones on all Apple platform and even on Linux and Swift Server Side frameworks like Vapor or Kitura.
Convenient logging during development & release in Swift 2, 3 & 4
Swinject is a lightweight dependency injection framework for Swift.
SwiftyJSON makes it easy to deal with JSON data in Swift.
If you are looking for more Swift libraries you can always explore the most favorited Swift repositories on github, and please remember: always connect your dependencies through a package manager. 😉