# Awesome Swift

A curated list of awesome Swift frameworks, libraries and software. Inspired by awesome-php.

- Awesome Swift
  - UI
  - Files
  - JSON/XML Manipulation
  - Databases
  - Testing
  - Documentation
  - Events
  - Queue
  - HTTP
  - Caching
  - Security
  - Logging
  - Command Line
  - Audio
  - Third Party APIs
  - Extensions
  - Misc
- Resources
  - Swift Books
  - Swift Videos
  - Swift Playgrounds
- Other Awesome Lists
- Contributing

## UI

- Sejima - User Interface Library components for iOS.
- Eureka - Elegant iOS Forms in pure Swift.
- XLActionController - Fully customizable and extensible action sheet controller written in Swift.
- FlourishUI - Framework for modals, color exensions and buttons.
- SwiftColors - HEX color handling as an extension for UIColor.
- FontAwesome.swift - Use FontAwesome in your Swift projects.
- SwiftOverlays - GUI library for displaying various popups and notifications.
- ios-charts - A powerful chart / graph framework, the iOS equivalent to MPAndroidChart.
- TagCellLayout - UICollectionView layout for Tags with Left, Center & Right alignments.
- TagListView - Simple but highly customizable iOS tag list view.
- SwiftyButton - Simple and customizable button in Swift
- Swiftstraints - Powerful auto-layout framework that lets you write constraints in one line of code.
- PagingMenuController - Paging view controller with customizable menu in Swift
- GaugeKit - Customizable gauges. Easy reproduce Apple’s style gauges.
- Hokusai - A library for a cool bouncy action sheet
- LNRSimpleNotifications - Simple Swift in-app notifications
- GoogleMaterialIconFont - Google Material Icon Font for Swift and ObjC.
- CozyLoadingActivity - Lightweight loading activity HUD
- VideoSplash - Video based UIViewController
- EZAlertController - Easy Swift UIAlertController
- EZSwipeController- :point_up_2: UIPageViewController like Snapchat/Tinder/iOS Main Pages
- ImagePicker - A nicely designed and super easy to use ImagePicker. :camera:
- Notie - In-app notification in Swift, with customizable buttons and input text field.
- Whisper - Break the silence of your UI, whispering, shouting or whistling at it
- HTYTextField - A UITextField with bouncy placeholder in Swift.
- SwiftPasscodeLock - An iOS passcode lock with TouchID authentication written in Swift.
- SlideMenuControllerSwift - iOS Slide Menu View based on Google+, iQON, Feedly, Ameba iOS app. It is written in pure swift.
- Hue - Hue is the all-in-one coloring utility that you’ll ever need.
- SAHistoryNavigationViewController - SAHistoryNavigationViewController realizes iOS task manager like UI in UINavigationContoller.
- WobbleView - Implementation of wobble effect for any view in app.
- SimpleAlert - Customizable simple Alert and simple ActionSheet for Swift
- Interactive Side Menu - Customizable iOS Interactive Side Menu written in Swift 3.0.
- NFDownloadButton - Revamped Download Button.
- EFQRCode - A better way to operate quick response code in Swift.
- SendIndicator - Yet another task indicator.
- SectionedSlider - Control Center Slider.
- Cupcake - An easy way to create and layout UI components for iOS.
- PinLayout - Extremely Fast views layouting without auto layout. No magic, pure code, full control and blazing fast. Concise syntax, intuitive, readable & chainable.
- Gemini - Gemini is rich scroll based animation framework for iOS, written in Swift.
- Hero - Hero is a library for building iOS view controller transitions.
- CrispyCalendar - CrispyCalendar is the calendar UI framework.
- Ribbon - 🎀 A simple cross-platform toolbar/custom input accessory view library for iOS & macOS.

## Files

- FileKit - Simple and expressive file management in Swift.

## JSON/XML Manipulation

- SwiftyJSON - The better way to deal with JSON data in Swift.
- json-swift - A basic library for working with JSON in Swift.
- Argo - JSON parsing library for Swift, inspired by Aeson.
- ObjectMapper - JSON Object mapping written in Swift.
- Alamofire-SwiftyJSON - Alamofire extension for serialize NSData to SwiftyJSON.
- SWXMLHash - Simple XML parsing in Swift.
- AEXML - Simple and lightweight XML parser for iOS written in Swift.
- Starscream - WebSockets Library
- JASON - JSON parsing with outstanding performances and convenient operators.
- Fuzi - A fast & lightweight XML/HTML parser with XPath & CSS support in Swift 2.
- Tailor - A super fast & convenient object mapper tailored for your needs.
- SwiftyJSONAccelerator - Generate Swift 5 model files from JSON with Codeable support.

## Databases

Databases implemented in Swift.

- Realm - A mobile database that runs directly inside phones, tablets or wearables.
- SQLite.swift - A pure Swift framework wrapping SQLite3. Small. Simple. Safe.
- SwiftData - A simple and effective wrapper around the SQLite3 C API written completely in Swift.
- Squeal - A Swift wrapper for SQLite databases.
- SQLiteDB - Basic SQLite wrapper for Swift.
- SwiftMongoDB - A Swift driver for MongoDB.
- ModelAssistant - Elegant library to manage the interactions between view and model in Swift.
- PostgresClientKit - A PostgreSQL client library for Swift. Does not require libpq.

## Testing

Libraries for testing codebases and generating test data.

- Quick - A behavior-driven development test framework for Swift and Objective-C.
- Sleipnir - A BDD-style framework for Swift.
- Nimble - A Matcher Framework for Swift.
- Fakery - Swift fake data generator.
- SwiftRandom - Generator for random data.
- MockFive - A mocking framework for Swift with runtime function stubbing.

## Documentation

Libraries for generating documentation files.

- jazzy - A soulful way to generate docs for Swift & Objective-C

## Events

Libraries for one-to-many communications.

- Caravel - A Swift event bus for UIWebView and JS
- EmitterKit - An elegant event framework built in Swift
- Swift-Custom-Events - A very simple way to implement Backbone.js style custom event listeners and triggering in Swift for iOS development.
- Kugel - A glorious Swift wrapper around NSNotificationCenter

## Queue

Libraries for working with event and task queues.

- TaskQueue - A Task Queue Class developed in Swift.
- Dispatcher - Queues, timers, and task groups in Swift
- GCDKit - Grand Central Dispatch simplified with Swift.

## HTTP

Swift libraries and wrappers for HTTP clients.

- Alamofire - an HTTP networking library written in Swift.
- ReactiveAPI - Write clean, concise and declarative network code relying on URLSession, with the power of RxSwift. Inspired by Retrofit.
- SwiftHTTP - Thin wrapper around NSURLSession in swift. Simplifies HTTP requests.
- Net - HttpRequest wrapper written in Swift.
- OAuthSwift - Swift based OAuth library for iOS
- Moya - Network abstraction layer written in Swift
- Just - HTTP for Humans (python-requests style HTTP library)
- SocketIO-Kit - Socket.io iOS/OSX Client compatible with v1.0 and later
- SwiftWebSocket - High performance WebSocket client library for Swift.
- AeroGear IOS Http - is a thin layer to take care of your http requests working with NSURLSession.
- Nuke - Advanced framework for loading and caching images
- Siesta - Ends state headaches by providing a resource-centric alternative to the familiar request-centric approach to HTTP.
- Taylor - a web server library in Swift.
- Perfect - a web framework tayin Swift.
- Swifter - an HTTP server engine in Swift.
- Kingfisher - A lightweight and pure Swift implemented library for downloading and caching image from the web.

## Caching

Libraries for caching.

- HanekeSwift - A lightweight generic cache for iOS written in Swift with extra love for images.
- Carlos - A simple but flexible cache for iOS and WatchOS 2 apps, written in Swift.

## Security

Libraries for generating secure random numbers, encrypting data and scanning for vulnerabilities.

- CryptoSwift - Crypto related functions and helpers for Swift implemented in Swift programming language.
- SHA256-Swift - Swift framework wrapping CommonCrypto’s SHA256 methods.
- SwiftSSL - An Elegant crypto toolkit in Swift.
- SwiftyRSA - RSA public/private key encryption in Swift

## Logging

Libraries for generating and working with log files.

- QorumLogs — Swift Logging Utility for Xcode & Google Docs.
- CleanroomLogger - A configurable and extensible pure Swift logging API that is simple, lightweight and performant.
- XCGLogger - A debug log framework for use in Swift projects.
- Swell - A logging utility for Swift and Objective C.
- Log - A logging tool with built-in themes, formatters, and a nice API to define your owns.
- NSLogger - A high perfomance logging utility which displays traces emitted by client applications running on Mac OS X, iOS and Android.

## Command Line

Libraries for creating command line applications. * CommandCougar - An elegant pure Swift library for building command line applications.

## Audio

- AudioKit - Audio synthesis, processing, and analysis platform
- MusicKit - Framework and DSL for creating, analyzing, and transforming music in Swift
- WebMIDIKit - Simplest MIDI Swift framework

## Third Party APIs

Libraries for accessing third party APIs.

- GooglePlacesAutocomplete - Simple Google Places address entry for iOS.
- Swifter - A Twitter framework for iOS & OS X written in Swift
- SwiftIB - An InteractiveBrokers API Library for OS X written in Swift. InteractiveBrokers is one of a few, if not the best, brokerage company provide Gateway+API solution for traders.

## Extensions

- Dollar.swift - A functional tool-belt for Swift Language similar to Lo-Dash or Underscore in Javascript.
- swiftz - A Swift library for functional programming.
- ExSwift - JavaScript (Lo-Dash, Underscore) & Ruby inspired set of Swift extensions for standard types and classes.
- Observable-Swift - Value Observing and Events for Swift.
- PromiseKit - A delightful Promises implementation for iOS.
- Promissum - Promise library with functional combinators like `map`, `flatMap`, `whenAll` & `whenAny`.
- Promise - Simple promises library in Swift.
- PureFutures - Futures and Promises library
- SwiftTask - Promise + progress + pause + cancel, using SwiftState (state machine).
- Pythonic.swift - Pythonic tool-belt for Swift – a Swift implementation of selected parts of Python standard library.
- SWRoute - A tiny Swift wrapper. Allows you to route (hook) quite any function/method with another function/method or even a closure.
- Euler - Swift Custom Operators for Mathematical Notation.
- swix - Swift Matrix and Machine Learning Library.
- Easy-Cal-Swift - Overload +-*/ operator for Swift, make it easier to use (and not so strict).
- AlecrimCoreData - A simple Core Data wrapper library written in Swift.
- Async - Syntactic sugar in Swift for asynchronous dispatches in Grand Central Dispatch.
- SwiftState - Elegant state machine for Swift.
- LlamaKit - Collection of must-have functional Swift tools.
- ReactKit - Swift Reactive Programming.
- Basis - A number of foundational functions, types, and typeclasses.
- CAAnimation + Closure - Add start / completion closures for CAAnimation instances
- SwiftyUserDefaults — a cleaner, swiftier API for NSUserDefaults
- Pluralize.swift - Great Swift String Pluralize Extension
- SwiftSequence - A μframework of extensions for SequenceType in Swift 2.0, inspired by Python’s itertools, Haskell’s standard library, and other things.
- BrightFutures - Write great asynchronous code in Swift using futures and promises.
- EZSwiftExtensions - :smirk: How Swift standard types and classes were supposed to work.
- BFKit-Swift - A collection of useful classes to develop Apps faster.
- Sugar - Something sweet that goes great with your Cocoa.
- ZamzamKit - A collection of micro utilities and extensions for Standard Library, Foundation and UIKit.
- Bow - Companion library for Typed Functional Programming in Swift.
- SwiftCoroutine - Swift coroutines for iOS and macOS.

## Misc

- acli - commandline tool to download curated libraries from github (very beta)
- Compass - Compass helps you setup a central navigation system for your application.
- R.swift - tool to get strong typed, autocompleted resources like images and segues in your Swift project
- SwiftKVC - Key-Value Coding (KVC) for native Swift classes and structs
- Tactile - A safer and more idiomatic way to respond to gestures and control events.
- Swift 4 Module Template - An opinionated starting point for awesome, reusable Swift 4 modules
- SwiftValidators - String validation for iOS developed in Swift. Inspired by validator.js
- Versions - Helping you find inner peace when comparing version numbers in Swift
- Swift 4 Module Template - An opinionated starting point for awesome, reusable Swift 4 modules

# Resources

Various resources, such as books, websites and articles, for improving your Swift development skills and knowledge.

## Swift Websites

- Official website - A home page of Swift programming language.
- Official blog - Official Swift Blog.
- Jameson Quave’s blog - Tips for everyday work with Swift.
- Swift Collection on Medium - Collection of blog posts about Swift on Medium.
- Swift Collection on raywenderlich.com - Collection of blog posts about Swift on raywenderlich.
- SwiftInFlux - An attempt to gather all that is in flux in Swift.
- We ❤ Swift - Tutorials and guides.
- Natasha The Robot - Nice blog about Swift by Natasha The Robot.
- LearnSwift.tips - A curated list of helpful resources to learn Swift. Tutorials, Code Samples, References.
- Hacking with Swift - a complete Swift training course that teaches you app development through 36 hands-on projects, for free.
- SwiftLang - a Swift Resource Center & Community.
- WWDC-Recap - A collection of session summaries in markdown format, from WWDC 19 & 17.
- Cocoacasts - Tutorials and videos about Swift and Cocoa development.

## Swift Books

- The Swift Programming Language
- Using Swift with Cocoa and Objective-C
- Swift Standard Library Reference
- Learn to Program iOS and OS X with Apple Swift

## Swift Videos

- TheSwiftLanguage youtube channel - Videos about the Swift programming language by Apple.
- Brian Advent youtube channel - High quality Swift tutorials.
- SkipCasts youtube channel - Skip Wilson’s casts on Swift.
- Developing iOS 8 Apps with Swift - Stanford course by Paul Hegarty.

## Swift Playgrounds

- Learn-swift playground - Learn Swift interactively through these playgrounds.
- Design-Patterns-In-Swift - Design Patterns implemented in Swift.
- SwiftStub - an online Swift playground and REPL.

# Other Awesome Lists

Other amazingly awesome lists can be found in the awesome-awesomeness list.

# Contributing

Your contributions are always welcome! Please submit a pull request or create an issue to add a new framework, library or software to the list. Do not submit a project, which hasn’t been updated in the past 6 months or is not awesome.