Kickstarter for iOS. Bring new ideas to life, anywhere.
Switch branches/tags
Fix_date_localization ab_test_creator_name_discovery alpha-dist apollo-graph-ql apollo-graphql-nino apple-swift-compat-suite argo-removal-branch argo_experiments backer-dash-header beta-dist beta_tools_ipad_bug category_by_id_query_fix circle-more-fixes comment-reply compressed-disclaimer currency-preferences-feature deprecate-ios9 discover_card_bug_fix drip-alpha-match empty_screen_backer_label environment_action_sheet export-data fabric-ios faster-circle fb-sdk-upgrade feature-payment-methods feature-settings-v2 fix-ios-11-uikit-bug fix-tests-swift4.1 fix_image fixing_facebook_login format_tests fun-data-source graph-mutations graph_user_spike graphql-experiment hack_day_api hackaton_random_project hd-quicklook iPhoneX_layout_fix ib-alpha-build ib-swiftlint io/emoji-logging ios-11 ios_test_test_tweak iphoneX-screenshots ksr-dev-support lenses_removal library_warnings_fix live-stream-info-color-fix live_stream_rewards live_stream_service_refactor master message-banner-vc-nib-fix misc-bugfixes move-find-friends-row move-tests new-strings-for-newsletter new-strings new_snapshots nino_post_refresh_sweep_snapshots operation-fix-snapshots oss_argo_removal oss_recommended_filter_bug_fix oss_updated_dependencies payment_methods_event_tracking pie_chart_feature_flag proj-of-the-day-label project-update-activity-indicator project_page_landscape_iphonex project_pamphlet_storyboard_conflicts project_pamplet_top_bar reactive-swift-2 recommended_projects_signed_up_users remove-crap remove-discover remove-shrugging-lady remove_creators_name_experiment settings-account-feature shake-settings specify-target-getvn survey-deep-link swiflint swift-compat-suite swift-talk-playgrounds swiftlint-fixes swiftlint_fixes thanks-fix thanks_page_webview_fix third_party_sharing_bug track-swipe-direction ui-testing uiwebview_deprecation update-reactiveextensions update-reactiveswift update-strings update_debug_push_notification update_max_pledge xcode_warnings
Nothing to show
Clone or download
cdolm92 Haptic feedback tweaks (#523)
* impact feedback generator added

* tweak and test

* swiftlint fix

* haptic feedback to projnavbar

* argument for impact feedback generator
Latest commit 817f5f3 Dec 12, 2018
Type Name Latest commit message Commit time
Failed to load latest commit information.
.circleci Swift 4.2 (#429) Sep 21, 2018
.fastlane Use team name instead of team ID for deliver (#519) Dec 7, 2018
.github Replace screenshots with wordmark (#497) Nov 27, 2018
Configs Add Fabric & Crashlytics framework path (#397) Aug 2, 2018
Design ksr-dark-grey-900 to soft-black (#520) Dec 10, 2018
Frameworks Silence warnings in Xcode 10 (#451) Oct 25, 2018
Kickstarter-iOS.playground ksr-dark-grey-900 to soft-black (#520) Dec 10, 2018
Kickstarter-iOS Haptic feedback tweaks (#523) Dec 12, 2018
Kickstarter.xcodeproj Message banner refactor (#506) Dec 6, 2018
KsApi Change password hidden (#512) Dec 7, 2018
Library Haptic feedback tweaks (#523) Dec 12, 2018
LiveStream Silence warnings in Xcode 10 (#451) Oct 25, 2018
Screenshots/_64 Project cards width fix (#513) Dec 10, 2018
bin Ensure make strings ordering is always the same (#459) Oct 29, 2018
hooks Alpha build (#361) Jun 1, 2018
.gitattributes No need to treat pbxproj as a binary. Jun 27, 2016
.gitignore Upgrade Stripe SDK (#431) Sep 21, 2018
.gitmodules Update iOSSnapshotTestCase (#301) Jan 23, 2018
.swiftlint.yml Swiftlint record mode rule (#353) May 10, 2018
Gemfile Swift 4.1 updates, CircleCI 2.0 migration (#331) Apr 19, 2018
Gemfile.lock Update fastlane gem (#518) Dec 7, 2018
LICENSE Update License (#394) Jul 31, 2018
Makefile Upgrade Stripe SDK (#431) Sep 21, 2018 Add licenses for more third-party dependencies (#237) Sep 12, 2017 Replace screenshots with wordmark (#497) Nov 27, 2018

Kickstarter for iOS

Circle CI

Welcome to Kickstarter’s open source iOS app! Come on in, take your shoes off, stay a while—explore how Kickstarter’s native squad has built and continues to build the app.

We’ve also open sourced our Android app, and read more about our journey to open source here.

Getting Started

  1. Download the Xcode 9 release.
  2. Clone this repository.
  3. Run make bootstrap to install tools and dependencies.
  4. Run make test-all to build and run tests on all platforms.

* To provide a mock version that serves up hard-coded data immediately, set KsApi.Secrets.isOSS = true.

Some fun things to explore

If you’re just looking for a quick glance at a few things we’re particularly proud of, look no further:

  • The Screenshots directory holds nearly 500 screenshots of various screens in every language, device and edge-case state that we like to make sure stays true. For example, a backer viewing a project in French here , or a creator looking at their dashboard in German and on an iPad here.

  • We use Swift Playgrounds for iterative development and styling. Most major screens in the app get a corresponding playground where we can see a wide variety of devices, languages and data in real time. Browse our collection of playgrounds here.

  • We use view models as a lightweight way to isolate side effects and embrace a functional core. We write these as a pure mapping of input signals to output signals, and test them heavily, including tests for localization, accessibility and event tracking.


While we’re at it, why not share our docs? Check out the native docs we have written so far for more documentation.


We make heavy use of the following projects, and so it can be helpful to be familiar with them:

1st party

  • Circle CI Prelude: Foundation of types and functions we feel are missing from the Swift standard library.

  • Circle CI ReactiveExtensions: A collection of operators we like to add to ReactiveCocoa.

3rd party

Notices for 3rd party libraries in this repository are contained in


We intend for this project to be an educational resource: we are excited to share our wins, mistakes, and methodology of iOS development as we work in the open. Our primary focus is to continue improving the app for our users in line with our roadmap.

The best way to submit feedback and report bugs is to open a GitHub issue. Please be sure to include your operating system, device, version number, and steps to reproduce reported bugs. Keep in mind that all participants will be expected to follow our code of conduct.

Code of Conduct

We aim to share our knowledge and findings as we work daily to improve our product, for our community, in a safe and open space. We work as we live, as kind and considerate human beings who learn and grow from giving and receiving positive, constructive feedback. We reserve the right to delete or ban any behavior violating this base foundation of respect.

Find this interesting?

We do too, and we’re hiring!


Copyright 2018 Kickstarter, PBC.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
See the License for the specific language governing permissions and
limitations under the License.