ios-oss
Kickstarter for iOS. Bring new ideas to life, anywhere.
The full open-source code for the official Kickstarter iPhone and iPad app, published as an educational resource showing how a real production crowdfunding app is built, tested, and structured using Swift and functional reactive programming.
This is the full source code for the official Kickstarter iPhone and iPad app, published publicly by Kickstarter. Kickstarter is a crowdfunding platform where creators launch projects and backers pledge money to bring them to life. The iOS app is what people use on their phones to browse campaigns, back projects, and manage their pledges. Kickstarter also open-sourced their Android app in the same spirit.
The README frames the repository as an educational resource rather than a project inviting feature contributions. Kickstarter's iOS team wanted to share how they build a real production app, including the good decisions and the mistakes. The primary audience is iOS developers who want to see how a mature, widely-used app is structured and tested.
One of the most notable things highlighted in the README is the testing approach. The project contains nearly 600 snapshot screenshots that capture how specific screens look across different languages, device sizes, and edge-case states. If a code change accidentally alters how the Japanese-language project page looks on an iPad, the automated test suite catches it by comparing against the stored screenshot. This kind of visual regression testing is not common in open-source iOS projects.
Architecturally, the app uses a functional reactive programming style through two libraries: ReactiveSwift and ReactiveCocoa. The view model layer, which sits between data and the visual interface, is written as pure functions that map input signals (user taps, network responses) to output signals (what the screen should show). This makes the logic straightforward to test without needing to simulate a real device.
Dependencies include Stripe for payment processing, Apollo for fetching data via GraphQL, Firebase for analytics and push notifications, and Kingfisher for loading images. The project builds with Xcode and Swift, and a mock data mode can be enabled so the app runs without needing a real Kickstarter account or API connection. The license is Apache 2.0.
Where it fits
- Study how Kickstarter structures a large production iOS app to improve your own app architecture
- Learn how to implement visual regression testing using nearly 600 snapshot screenshots across languages and device sizes
- See a real-world example of functional reactive programming with ReactiveSwift in a shipped production app
- Run the Kickstarter app locally in mock data mode without a real account to explore and learn from the codebase