- leverage the Swift compiler to prevent runtime errors associated with configuring network requests.
- provide a Swift-first API/abstraction for making network requests.
- provide an API that makes it easy to stub network requests.
- provide an API where common things are easy, and uncommon things are possible.
- provide basics of response decoding while exposing customization points for other libraries to help.
- provide (optional) reactive (RxSwift, ReactiveSwift, Combine) extensions to the API.
- avoid leaky abstractions by providing thoughtful and easy-to-use extension points for customizing behaviour.
- favour explicitly-defined behaviour over default implementations.
- cultivate an inclusive open source community through respectful discussion.
The original idea came from a discussion with Chris Eidhof about how to leverage the Swift compiler to encapsulate network requests to a Swift enum
, to provide a high level of compile-time confidence that a network request is properly configured.
Moya began as a part of Eidolon, which was being developed in 2014, the days of the Swift 1.0 betas, by Ash Furrow and Orta Therox, working for Artsy. The project was quickly moved to its own library on Ash's GitHub account, and eventually to its own GitHub organization. Moya is run by a community of contributors, and the code has always been released under the MIT license.