A Swift library for creating custom interactive UIViewController transitions with simple protocol-based APIs.
EasyTransitions is a Swift library that helps iOS and tvOS developers create custom, interactive transitions between view controllers. It simplifies the complex UIKit transition APIs by providing protocol-based animators and built-in gesture handling, enabling fluid navigation experiences with less code.
iOS and tvOS developers building apps that require custom navigation animations, such as onboarding flows, detail expansions, or interactive dismissals, particularly those who want to avoid the verbosity of native UIKit transition implementations.
Developers choose EasyTransitions because it dramatically reduces the boilerplate required for custom transitions, offers built-in interactive gesture support, and provides a clean, protocol-oriented API that is easier to maintain and extend than raw UIKit approaches.
A simple way to create custom interactive UIViewController transitions
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Defines animations through simple protocols like ModalTransitionAnimator, reducing UIKit boilerplate and aligning with Swift's type-safe patterns for easier maintenance.
Adds interactive pan gestures with a single line using the Pan enum, automatically handling velocity and completion logic for smooth dismissals and navigations.
Supports modal, navigation controller, and presentation controller transitions, covering common iOS animation scenarios with dedicated configurators.
Works on both iOS and tvOS, enabling consistent custom transition experiences across Apple's platforms without extra setup.
The library is openly a work in progress, so API changes and breaking updates are expected, which can disrupt production code and require frequent updates.
Auxiliary animations are noted as part of the protocol but subject to change, offering less predictability and configurability for complex animation chains.
Designed solely for UIKit, it doesn't integrate with SwiftUI's native transition system, making it unsuitable for modern apps adopting SwiftUI without bridging work.