Kickstarter for iOS. Bring new ideas to life, anywhere.

Overview

Kickstarter for iOS

Circle CI codecov

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. Install Xcode.
  2. Clone this repository.
  3. Run make bootstrap to install tools and dependencies.

* 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 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.

Testing the project

  • Run all tests from the command line by running make test-all.
  • Run an individual scheme's tests by selecting that scheme in Xcode and hitting CMD+U.

Documentation

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

Dependencies

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 NOTICE.md.

Contributing

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!

License

Copyright 2021 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

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Comments
  • Instructions for Using Playgrounds in Project

    Instructions for Using Playgrounds in Project

    It's very exciting to take a look through this project; thanks for open-sourcing it!

    Maybe this is a dumb question, but for whatever reason I haven't seen much of the playground-embedded-in-project-with-required-modules style, and I'm having some trouble using the many playgrounds in the project. I feel like I should be able to figure this out, but I haven't.

    Maybe some brief instructions could be included describing how to get playgrounds within the project running?

    (Basically, I get "No such module 'Module Name'" in the playgrounds that import an included module)

    opened by timarnold 14
  • Proj of the day label

    Proj of the day label

    What

    Removing heart icon form the Project of the day label.

    Why

    Quotation trello card: "When we add hearts to project cards, we'll have two hearts on a single discovery card. After discussing with Maggie, we'll just remove the heart from the PotD label for iOS."

    How

    Set iconImage property while initializing PostcardMetadataData to nil for the PostcardMetadataDataType.potd After the change realized that we don't have tests for DiscoveryPostCard for featured and potD projects. Implemented DiscoveryPageViewControllerTests.testView_Card_Project_TodaySpecial test. Generated reference images for featured and potD post cards

    See 👀

    Trello

    opened by bormind 10
  • [Unticketed] Update Readme With Testing Steps

    [Unticketed] Update Readme With Testing Steps

    📲 What

    Small PR to update README.md on front page of project with testing steps that took me a few tries to figure out.

    🤔 Why

    Helps anyone that is starting work on the project to be able to test the project with less confusion.

    🛠 How

    👀 See

    ♿️ Accessibility

    🏎 Performance

    ✅ Acceptance criteria

    ⏰ TODO

    n/a

    opened by msadoon 8
  • Backer currency display

    Backer currency display

    What

    Addresses a bug @eoji found where backed currency amounts weren't using the new currency preferences display rules.

    How

    Just needed to add the new currency symbol logic to String amounts and update the currency formatting function used when displaying backed amounts.

    See 👀

    test_usproject_ususer_nonuslocation_backer_projectlocation_us_usercurrency_us_userlocation_ca 2x ![simulator screen shot - iphone 8 - 2018-11-15 at 13 37 25](https://user-images.githubusercontent.com/3156796/48578534-e1e87f00-e8e7-11e8-85ef-9006a5b92500.png)

    simulator screen shot - clone 1 of iphone 8 - 2018-11-15 at 13 49 02

    bug needs review 
    opened by ifbarrera 8
  • Account email verified/undeliverable alert icon

    Account email verified/undeliverable alert icon

    What

    Show a little alert icon in the account screen if a user's email is unverified or undeliverable.

    Also in this PR:

    • removed the SettingsAccountStoryboard and instead moved the scene to the Settings storyboard
    • removed a request for the User object that wasn't being used
    • added error-handling for when the request for the user account fields fails; now we show an error message banner
    • added tests for the SettingsAccountDataSource file that were missing

    Why

    So they know to correct the issue in the "Change Email" screen.

    See 👀

    testaccountview_whenuseremailisunverified_device_phone4inch 2x

    gxwbtglnji

    needs review 
    opened by ifbarrera 8
  • Question: How does Playground work on the project?

    Question: How does Playground work on the project?

    I'm trying to see the playground pages.

    But I'm getting errors like

    error: Couldn't lookup symbols:
      __T0So6BundleC21Kickstarter_FrameworkE9frameworkABfgZ
      __T021Kickstarter_Framework23LoginToutViewControllerCMa
      __T017PlaygroundSupport0A4PageC7currentACfau
      __T021Kickstarter_Framework10StoryboardO11instantiatexxm_So6BundleC02inE0tSo16UIViewControllerCRbzlF
      __T0So16UIViewControllerC17PlaygroundSupport0C12LiveViewableACWP
      __T017PlaygroundSupport0A4PageC8liveViewAA0A12LiveViewable_pSgfs
      __T017PlaygroundSupport0A4PageCMa
      __T021Kickstarter_Framework10StoryboardO11instantiatexxm_So6BundleC02inE0tSo16UIViewControllerCRbzlFfA0_
    
    

    I don't really know how it does work. So, sorry if it is a silly question. But I could not get it working. I was expecting to see the view controller.

    Thanks in advance 😄

    opened by amadeu01 8
  • build

    build "no such module 'Argo'" on fresh setup

    Hello Kickstarters,

    I just attempted a build from a fresh clone and make bootstrap, and the compiler threw an error No such module 'Argo' . I next tried a carthage update, and saw some output which seemed to download dependencies, but still seeing the error. Finally I edited the Framework Search Paths to contain ${PROJECT_DIR}/Carthage/Contents and tried again, but same error.

    I'm probably doing something stupid but I'm more of an Android hack than ios.

    Anyhow ... any suggestions ? I hope I followed your install directions properly plus trying some of my own stuffs.

    Screen Shot 2020-03-08 at 9 35 47 PM
    opened by SeanFelipe 7
  • 💲[Native Checkout] Rewards - Basic

    💲[Native Checkout] Rewards - Basic

    📲 What

    New reward cell implementation for the most basic state: non-backer viewing a live project.

    This PR includes:

    • displaying included items list
    • displaying reward minimum in the project's currency
    • displaying a conversion label based on the user's currency preferences
    • tapping the card or the "Pledge" button should take you to the pledge screen
    • scrolling on long rewards should cause the Pledge button to float
    • works with dynamic type

    This PR does not include:

    • handling for backed rewards, non-live projects
    • proper visual handling for limited rewards
    • proper visual handling for unavailable rewards
    • proper visual handling for time-based rewards
    • reward ordering/sorting
    • not optimized for voice over yet

    🤔 Why

    So a user can examine rewards to select their reward and pledge to a project.

    🛠 How

    • pre-pended Deprecated to several classes
    • took most of the logic directly out of the existing DeprecatedRewardCellViewModel
    • cleaned up some of the tests so it's more obvious what they're doing
    • generated new screenshots for RewardsCollectionViewControllerTests
    • updated strings

    👀 See

    | iPad | iPhone 8 | iPhone X | iPhone 5 | | --- | --- | --- | --- | | Simulator Screen Shot - iPad Pro (12 9-inch) - 2019-06-06 at 18 08 01|Simulator Screen Shot - iPhone 8 - 2019-06-07 at 15 43 43|Simulator Screen Shot - iPhone X - 2019-06-06 at 18 13 43|Simulator Screen Shot - iPhone 5s - 2019-06-06 at 17 52 05|

    ♿️ Accessibility

    • [x] Tap targets use minimum of 44x44 pts dimensions
    • [ ] Works with VoiceOver
    • [x] Supports Dynamic Type

    🏎 Performance

    • [x] Optimized Blended Layers (screenshots)

    ✅ Acceptance criteria

    • [ ] Login on staging with an admin account. Background the app. Open the app again, and navigate to any project. Tap "Back this project" - You should see all rewards.
    needs review 
    opened by ifbarrera 7
  • [Native Checkout]

    [Native Checkout] "Back this project" button

    📲 What

    Adds the "Back this project" button to the project page when the ios_native_checkout flag is enabled.

    This work does not include state-handling based on project states.

    🤔 Why

    So users can navigate to the reward selection screen.

    🛠 How

    Adds the "Back this project" button to the ProjectPamphletViewController if the ios_native_checkout flag is enabled. Otherwise, the "Back this project" button is not added.

    👀 See

    Tested on: iPhone X (12.1) iPhone 7 (11.4) iPhone 5s (10.3.1)

    | Before 🐛 | After 🦋 | | --- | --- | |3aJCj59iTC|OdCLej5Miq|

    | iPhone 5 (10.3.1) | iPhone 7 (11.4) | iPhone X (12.1) | | --- | --- | --- | |ggVDhPRX3n|OdCLej5Miq|CQNtfeJPHX|

    Landscape Mode

    Simulator Screen Shot - iPhone 5s - 2019-04-11 at 17 10 25

    ♿️ Accessibility

    • [x] Tap targets use minimum of 44x44 pts dimensions
    • [x] Works with VoiceOver
    • [x] Supports Dynamic Type

    ✅ Acceptance criteria

    • [x] Feature flag on Login as an admin on staging. Close the app. Relaunch app. Navigate to Project page. You should see the "Back this project" button
    • [x] Feature flag off Log out from staging. Close the app. Relaunch the app. Navigate to Project page. You should not see the "Back this project" button.

    ⏰ TODO

    • [x] Confirm default flagging behaviour
    needs review 
    opened by ifbarrera 7
  • Kickstarter-iOS requires a provisioning profile

    Kickstarter-iOS requires a provisioning profile

    I get the following error when I try to run: ('Automatically signing project' is unchecked) screen shot 2017-01-17 at 7 49 09 pm

    and I get Your account does not have sufficient permissions to modify containers. and No profiles for 'com.MYDOMAINNAME.kickstarter.alpha' were found when I checkmark 'Automatically signing project'

    Please help!

    opened by iitjee 7
  • [WEB-700] FB Auth Deprecation | SetYourPassword UI

    [WEB-700] FB Auth Deprecation | SetYourPassword UI

    📲 What

    UI for a new SetYourPassword screen.

    🤔 Why

    As we start to deprecate signing in with facebook, we need to make sure that specific users create a password. These users have connected via facebook but never needed to create one and so before we remove facebook auth altogether we need to make sure they can still access their accounts.

    🛠 How

    I created a new SetYourPasswordViewController & SetYourPasswordViewModel based on these designs

    👀 See

    ✅ Acceptance criteria

    • [ ] This screen isn't hooked up yet, I just wanted some feedback on building the UI first. I've been adding the following code to LoginToutViewController/pushSignupViewController() to present this screeen
    fileprivate func pushSignupViewController() {
        let vc = SetYourPasswordViewController.configuredWith(userEmail: "abc*****@***.com")
        self.navigationController?.pushViewController(vc, animated: true)
        self.navigationItem.backBarButtonItem = UIBarButtonItem.back(nil, selector: nil)
      }
    
    • [ ] Verify that the screen matches the designs and works in landscape
    • [ ] Verify that the save button is enabled/disabled appropriately when both passwords match and are at least 5 characters long

    ⏰ TODO

    • [ ] Will add tests. I just need to better understand how we do that here first
    ready to merge 
    opened by scottkicks 6
  • [WEB-861] Consent Management feature flag

    [WEB-861] Consent Management feature flag

    📲 What

    This PR makes the necessary code changes to add a new 'Consent Management' feature flag.

    🤔 Why

    With iOS 14.5+, iPadOS 14.5+, we need to receive member's permission through the Apple's AppTrackingTransparency framework in order to track them or access their device’s advertising identifier.

    This flag will gate the work that will be done to implement this.

    More details around this initiative can be found here

    🛠 How

    Boilerplate code that adds a new case to the OptimizelyFeature enum and then a helper function that checks user defaults before returning the value from the Optimizely SDK. Finally a case for the new consentManagementEnabled feature case in OptimizelyFeatureFlagTools

    👀 See

    Optimizely Feature Flag menu in our Beta Tools

    | After 🦋 |

    | |

    ✅ Acceptance criteria

    • [x] Make sure the new 'Consent Management` flag shows in "Optimizely Feature Flags" in our Beta tools screen
    • [x] New feature flag created in optimizely

    ⏰ TODO

    • [ ] Update snapshot tests on intel macbook
    needs review 
    opened by scottkicks 1
  • [Unticketed] Fix Screenshot Tests Between Intel Recordings and M1 Verifications

    [Unticketed] Fix Screenshot Tests Between Intel Recordings and M1 Verifications

    📲 What

    Existing snapshot test verifications failing on M1. These snapshots were recorded on Intel machines and as we port over our build processes to M1, we hadn't checked if the test cases were passing locally.

    Turns out there are issues and the best future proof solution is to individually re-record them on M1 machines, but given the number of screenshots its not a practical solution for now. We can re-record as we go, so this is a holdover to ensure both M1 and Intel machines can still use our base of screenshots and have tests pass locally.

    🤔 Why

    These articles go into detail regarding the idea of perceptual precision and how this issue is a community wide problem at the moment.

    1. Original FBSnapshotTestCase M1/Intel issue.
    2. M1/Intel fix with SnapshotTesting PR
    3. Context PR for subpixel precision.
    4. Explainer of perceptual precision.

    Perceptual Precision Value | Description -- | -- 100% | Must be exactly equal ≥ 99% | Allows differences not perceptible by human eyes ≥ 98% | Allows differences possibly perceptible through close observation ≥ 90% | Allows differences perceptible at a glance ≥ 50% | Allows differences when more similar than opposite ≥ 0% | Allows any differences

    🛠 How

    From the reading I did on the above links it seems like replacing iOSSnapshotTestCase framework with SnapshotTesting (the fix is here) and using perceptualPrecision in our tests is the right way to go.

    Wrote a new assetExistingSnapshot and verifyExistingSnapshot function based on the versions written in SnapshotTesting and hardcoded the screenshots directory. The file names are still dynamic based on the test names.

    The idea is just a hold-over until we eventually completely remove iOSSnapshotTestCase from the project.

    🏎 Performance

    • [ ] SnapshotTesting should be faster due to some internal reworkings on CoreImage, but test this locally on the entire suite once all existing snapshots use the new assert function.

    ✅ Acceptance criteria

    • [ ] Pre-recorded screenshots need no new re-recordings and pass with no less than 98% perceptual precision on M1 machines.

    ⏰ TODO

    • [ ] Ensure existing test cases are not re-recorded, but use the new assert function with at least 98% perceptual precision.
    • [ ] Record tests for SetYourPasswordViewController and ResetYourFacebookPasswordViewController as they are missing.
    enhancement WIP 
    opened by msadoon 0
  • [Prototype] Replace Backer Dashboard Backed/Saved Tabs With SwiftUI Version

    [Prototype] Replace Backer Dashboard Backed/Saved Tabs With SwiftUI Version

    📲 What

    As we consider integrating SwiftUI into our iOS app, I'd like to get a feel for how this would work myself in an effort to provide more useful feedback and understand the pros/cons.

    There's an existing prototype PR for replacing an entire screen here, so for this PR I wanted to work through a slightly different context...

    1. How does a piecemeal approach look?
    2. How can we replace a UIKit view that exists inside of a storyboard with a SwiftUI view.

    🤔 Why

    Check out this doc for more info on why SwiftUI could benefit KS.

    🛠 How

    There are a couple of ways to approach this.

    1. We could embed a UIHostingViewController directly into the storyboard via AutoLayout and a IBASegueAction.
    2. To do so programmatically.
      • I chose to this approach so that it would be easier to manage injecting the right properties into this new SwiftUI View
    • Replaces the "backed" and "saved" tabs within BackerDasboardViewController with a new BackerDashboardTabBarView (SwiftUI code)
    • This new SwiftUI view is embedded in a UIHostingViewController and added programmatically to this ViewController
    • The UIKit tabs and selectedTabIndicator are removed from the storyboard and swift code.

    👀 See

    UIKit 🐛

    https://user-images.githubusercontent.com/110618242/199745647-f1e37fe1-3283-44e7-8d1c-ef5dc698e286.mp4

    SwiftUI 🦋

    https://user-images.githubusercontent.com/110618242/199749402-a69cca28-b84f-4068-af84-87e03aa8ee59.mp4

    ✅ Acceptance criteria

    • [ ] Replaces the "backed" and "saved" tabs within BackerDasboardViewController with a new SwiftUI BackerDashboardTabBarView

    ⏰ TODO

    • [ ] Add divider line between tabs and projects view (Or not? IMO it looks better without 🤷‍♂️ )
    • [ ] Refactor ReactiveSwift code for showing backed/saved projects, or empty states, based on selected tab using Combine
    • [ ] Add accessibility labels
    • [ ] Update snapshot tests
    enhancement WIP 
    opened by scottkicks 0
  • [Prototype] Change Email View in SwiftUI

    [Prototype] Change Email View in SwiftUI

    📲 What

    As part of a personal goal to integrate SwiftUI into the main iOS Kickstarter repo, here is the prototype PR to change this view over to SwiftUI and possibly Combine

    🤔 Why

    Confluence document on the progress of this update and drawbacks/benefits of the process.

    🛠 How

    As you can see all the new code is in ChangeEmailView and represents most of the displayed UI within this page. It's also launching inside a UIHostingViewController.

    👀 See

    UIKit 🐛

    https://user-images.githubusercontent.com/4282741/197639685-a63d5c5d-de8d-4041-b6a4-9edfa5d239fb.mp4

    SwiftUI 🦋

    https://user-images.githubusercontent.com/4282741/201432575-a985681a-a8b6-4b4c-aae1-b94c66291916.mp4

    ✅ Acceptance criteria

    • [ ] ChangeEmailView replaces ChangeEmailViewController for iOS 15.0+

    ⏰ TODO

    • [x] Ensure cell separator is consistently displaying one pixel height, not cutoff by separator views.
    • [x] Add field styles to email, new email, password from view controller styles as guide
    • [x] Get return key going to next field and Done button disabled when no text on password field.
    • [x] Apply styles for messageLabelView, resendVerificationEmailButton, resendVerificationEmailView scrollView, unverifiedEmailLabel, warningMessageLabel from view controller.
    • [ ] Hook up the vm, try to use ReactiveSwift instead of Combine.
    • [ ] Setup IBActions, target actions, custom modifier funcitons and delegate methods.
    • [ ] Test accessibility labels once all styling and vm is working on device.
    • [ ] Figure out snapshot testing, only view should require re-writing tests, unless we update the vm to Combine.
    enhancement WIP 
    opened by msadoon 1
Releases(5.6.0)
  • 5.6.0(Dec 13, 2022)

    • Main into Release 5.6.0 (#1762) (fdaf39e)

    • trigger new beta and distribution (7de5317)

    • trigger new beta and distribution (b3a76a4)

    • Main to release-5.6.0 (#1756) (d2360b0)

    • updated version number to 5.6.0 (d3eb050)

    • [PAY-2040] Payment Sheet Displayed On Unrelated Context (#1752) (e61111e)

    • NTV-612: Move Minimum Version Up To iOS 14 (#1751) (d954d24)

    • WEB-750: Remove Carthage Support (#1749) (0d52877)

    • [WEB-749] ReactiveExtensions and ReactiveSwift to SPM (#1745) (bb76488)

    • [PAY-2021] Error Backing Payment Card Being Unselected (#1748)

    • removed conditional logic to unselect newly added payment sheet card if it is an errored backing.

    • corrected existing tests for errored backing logic

    • added corrections to test for l (63e5d5e)

    • [PAY-1980] Update Backing Errored Pledge Flow (#1747)

    • removed logic for gating errored pledge flow.

    • corrected a syntax issue with signals being incorrectly parsed. (d382b78)

    • [PAY-1979] Update Backing Mutation To Use Setup Intent (#1744)

    • update graph schema from staging and added setupIntentClientSecret to updateBackingInput

    • added logic to filter out all contexts except .fixpaymentmethod from allowing payment sheet appe (3dfa5c7)

    • [WEB-741] Appboy SDK to Braze SDK in SPM (#1742) (f2f731d)

    Source code(tar.gz)
    Source code(zip)
  • 5.5.0(Oct 4, 2022)

    • Merge branch 'main' into release-5.5.0 (a5244b8)

    • [PAY-1990] Fix Crash On Apple Pay Pledge Page (#1741) (c7e235e)

    • Merge branch 'main' into release-5.5.0 (1e8bd5c)

    • added PROVISIONING_PROFILE_SPECIFIER to be match AppStore within pbxproj file because fastlane does check it during its mapping of bundle ids to provisioning profile names. (8af41af)

    • Merge branch 'main' into release-5.5.0 (3dd44aa)

    • revert fastfile version update because it doesnt sync up on the remote machine. (0141c4a)

    • revert fastfile version update because it doesnt sync up on the remote machine. (023219a)

    • Merge branch 'main' into release-5.5.0 (79448ac)

    • updated to latest version of fastlane and re-trying itunes-dist build. (7d869e2)

    • updating fastlane version and re-retrying itunes-dist build. (d41404a)

    • Merge branch 'main' into release-5.5.0 (21317f6)

    • beta still crashing, added perimeterx to ksapi, library and main kickstarter-ios target (07d6926)

    • Merge branch 'main' into release-5.5.0 (156a2b9)

    • [Unticketed] Release 5.5.0 to Main (#1739) (67dd42b)

    • Merge branch 'release-5.5.0' of https://github.com/kickstarter/ios-oss into release-5.5.0 (5f1764c)

    • Merge branch 'main' into release-5.5.0 (b9a166d)

    • Merge branch 'main' into release-5.5.0 (ce5d152)

    • [Unticketed] PerimeterX Beta Build 5.4.0 (16642229) Crash (#1740) (30e2c6f)

    • updated marketing version to 5.5.0 (86be218)

    • trying to fix a ci build issue by adding a larger than 3 second timeout. (de3b027)

    • [PAY-1954] Loading User Settings And Cancelling Payment Sheet (#1738)

    • payment methods view cancellation of payment sheet presentation.

    • wrapped up on-device loading and cancellation states.

    • ensure no loading wheel is shown when feature flag is (d100e91)

    • removed automatic signing on pbx file to test beta build failure on ios-private. (ce821ad)

    • [WEB-742] Migrates PerimeterX to SPM (#1734)

    • migrates PerimeterX to SPM

    • Removes PerimeterX from main target because it is only used/needed in KsApi target (27d436a)

    • [PAY-1900] [PAY-1898] Create Payment Source From Payment Sheet (#1733)

    • successfully updating payment methods with new stripe payment sheet card.

    • added tests to everything except the view model

    • added tests for new card addition via payment shee (e3cb02a)

    • [WEB-740] Refactored AppBoySegment to SPM (#1735)

    • refactored segment-app-boy to spm, without code changes.

    • added configuration code for Analytics.

    • corrected threading issue related to setting up Analytics for Segment. (514fde9)

    • Migrates AppCenterDistribute to SPM (#1730) (6c367db)

    • [NTV-1896] Present Payment Sheet With Feature Flag Enabled. (#1731)

    • added boilerplate for showing sheet without create_setup_intent

    • updates to gql schema that support the create_setup_intent with no project id

    • payment sheet presented on paymen (ea32c18)

    • [NTV-616] Moves FBSnapshotTestCase to iOSSnapshotTestCase Swift Package (#1728)

    • Migrates FBSnapshotTestCase Carthage package to iOSSnapshotTestCase SPM

    • Migrates FBSnapshotTestCase Carthage package to iOSSnapshotTestCase SPM

    • noticed we were in (28d69e7)

    • added firebase spm changes, after rebasing with facebook spm changes. (#1729) (b70ed49)

    • [NTV-615] Facebook-ObjC-SDK Carthage -> SPM (#1726)

    • Migrates FBSDKLoginKit and FBSDKCoreKit to SPM via facebook-ios-sdk

    • Updates broken tests

    • Fixes Cartfile merge conflict

    • Update FBSDK imports where needed/not needed (e06eda7)

    • [NTV-611] Optimizely Carthage Package -> SPM (#1724)

    • Migrates Optimizely to SPM

    • Updates minimum version of SwiftSoup and Kinfisher to match their Carthage counter points

    • Updates 'OptimizelyResultTypeTests/testIsSuccess_ReturnsFalse' assertion (d5ce4d2)

    • [NTV-566] Kickstarter Framework Folder Reorganization (#1721)

    • commit to start drafting PR.

    • moved all comments related files to a Comments folder.

    • moved activites related files into its own folder.

    • backer dashboard projects and backer dash (f54d4a8)

    • Migrates SwiftSoup to SPM (#1723) (edd69a7)

    • [NTV-606] KingFisher Carthage -> SPM (#1722)

    • Migrates KingFisher Carthage package to SPM

    • Remove KingFisher package from Kickstarter-iOS target (38e286c)

    • [NTV-605] Alamofire/AlamofireImage Carthage -> SPM (#1717)

    • WIP: Build failing with AlamofireImage Undefined Symbols

    • Add new 'AlamofireImage' SPM package to 'Library' target so that the 'Kickstarter-Framework-iOS' target can reference it

    • Remove (7c9bd4c)

    • updated stripe to version 22.7.1 fixing a layout issue on smaller iphone sizes. (#1718) (14d51d0)

    • [PAY-1894] Updated Optimizely Feature Flag For Payment Sheet in Settings (#1716) (5304313)

    • [WEB-697] Adds new Facebook Login Deprecation feature flag (#1715)

    • Adds new Facebook Login Deprecation feature flag

    • Updates snapshot reference image for tests (31562b1)

    • [WEB-700] FB Auth Deprecation | SetYourPassword UI (#1714)

    • Creates new SetYourPasswordViewController & SetYourPasswordViewModel

    • PR feedback: Tightens up UI styling and removes unused code

    • formatting

    • Updates copy

    • Adds ViewModel & View (faa5d78)

    • [PAY-1816] Payment Sheet Loading States (#1713) (423abaa)

    • [PAY-1790] Create Backing With Setup Intent Client Secret (#1712)

    • setup happy path for create backing. Not working for some reason with just setup intent client secret, needs investigation.

    • minor updates to GQL schema

    • fixed an issue wrt to con (8ccf0b4)

    • [PAY-1829] Card Selection With Newly Created Payment Sheet Cards (#1711) (86a89f2)

    • [Unticketed] Fix With Device Framework Link (#1710)

    • removed stripe import as a direct import into Kickstarter-Framework

    • removed auto managing certificates on project file. (0049919)

    • [Beta Build] Merging Feature/Payment-Sheet into Main (#1709) (4b95bda)

    Source code(tar.gz)
    Source code(zip)
  • 5.4.0(Aug 2, 2022)

  • 5.3.0(Jun 24, 2022)

    • udpated marketing version to 5.3.0 (76fc91f)

    • [QA Passed] Local Pickup Rewards (#1699)

    • NTV-1435 - Migrate Shipping V1 to GQL (#1691)

    • [NTV-1446] Reward and Addon Cards Display Shipping Location (#1693)

    • [NTV-1522] Pledge Screen Local Reward Pickup UI (#1695)

    • [NTV-1690] Reward Card Ship (1942a04)

    Source code(tar.gz)
    Source code(zip)
  • 5.2.1(Jun 2, 2022)

    • Merge branch 'main' into release-5.2.1 (5a00774)
    • Bumping version to 5.2.1 (#1694) (1915e6f)
    • updated version number to 5.2.1 (ea52f27)
    • Merge branch 'main' of https://github.com/kickstarter/ios-oss into ntv-541/campaign-tab-backing-flow-crash (57f2ebd)
    • [NTV-541] Crash Fix After Backing From Campaign Tab (#1692) (be1172d)
    • fixed issue with prefetched images updating a data source after tab is not campaign. Caused production crash. (733f254)
    Source code(tar.gz)
    Source code(zip)
  • 5.2.0(May 12, 2022)

  • 5.1.0(Dec 22, 2021)

    Source code(tar.gz)
    Source code(zip)
  • 5.0.0(Dec 9, 2021)

  • 4.15.0(Oct 29, 2021)

    • [NTV-259] Enable change of payment method to Apple Pay when variant is active (#1626) (3e31e13)
    • reverted back version to 4.15.0 from 4.15.1 to support runway an (d080f72)
    • bumped version to 4.15.1 from 4.15.0 (d8b5ac2)
    • NTV-251 More Performance Enhancements (#1623) (e5e82cd)
    • [NTV-243] Optimize Project Page Loading Time (#1622) (b838e63)
    • trigger tests (5289b4c)
    • [Unticketed] Fetching Project Query Optimization (#1618) (718dd42)
    • [NTV-158] No longer presenting risk messaging modal when updating pledge (#1617) (a05f222)
    • [Unticketed] No Rewards Reward Added To Rewards Selection Screen (#1616) (9999f0b)
    • Bumping version to 4.15.0 (73f57ca)
    • [NTV-233] Sending commentableId based on value of updateProperty in CommentRepliesViewModel (#1614) (dfdd167)
    • [NTV-153] Presenting risk messaging during checkout (#1613) (69545c3)
    • [Unticketed] Put Back Add Ons Selection To Checkout (#1611) (e247e52)
    • Project Model to GQL (#1608) (8bbd59e)
    Source code(tar.gz)
    Source code(zip)
  • 4.14.0(Sep 7, 2021)

    • Bumping version to 4.14.0 on Kickstarter-iOS target (1c9b83e)
    • Bumping version to 4.14.0 (879a3ae)
    • [NT-2061] Apollo GraphQL Service and ViewModel integration (#1599) (bab154d)
    • [NTV-13] Supporting deep links to a specific reply. (#1597) (bce59c6)
    • Update links in README (#1598) (ba79368)
    • NE-33 Deeplink, PN, In-App Message Categories and Subcategories by ID (#1596) (8235897)
    • [NTV-12] Support deeplinks/push notifications to a specific comment thread (#1594) (2668cd0)
    • [NTV-34] Deeplink to Subcategories By Name (#1593) (cc57633)
    Source code(tar.gz)
    Source code(zip)
  • 4.13.3(Aug 25, 2021)

  • 4.13.2(Aug 20, 2021)

  • 4.13.1(Aug 4, 2021)

    Source code(tar.gz)
    Source code(zip)
  • 4.13.0(Jul 15, 2021)

    This reverts commit 9a727ae730ab9fbf97a52f93caec1bac90a93e26. (6f95d51)

    Source code(tar.gz)
    Source code(zip)
  • 4.12.0(Jun 30, 2021)

    Source code(tar.gz)
    Source code(zip)
  • 4.11.0(Jun 1, 2021)

    Source code(tar.gz)
    Source code(zip)
  • 4.10.5(May 17, 2021)

    • Update Fastlane, add App Store Connect Auth (#1466) (14e5f61)

    • Bump version to 4.10.5 (4d5aa92)

    • Updated translations and snapshots (#1464) (e620c43)

    • [NT-1888] Improve Redundant Identify Handling (#1463)

    • Ensure equality based on user ID, clear persisted data at logout

    • Add additional nil check

    • Fix test (c2d04b0)

    • Send user ID as String in user properties (#1462) (ae6a718)

    • [NT-1870] Enable Notification Setting From In-App Message (#1461)

    • Add new route to Navigation

    • Handle deeplink and enable notification option (10e9bc7)

    • [NT-1869] Feature-Flag Braze In-App Messages (#1458)

    • Feature-flag Braze in-app messages

    • Add test (43fb688)

    • [NT-1873] Implement BrazeDebounceMiddleware (#1457)

    • Implement BrazeDebounceMiddleware

    • Exclude middleware from codecov (43ce7d7)

    • Add sound notification type when registering for push notifications. (#1455) (52e813f)

    • Changing Estimated Delivery to format like a section title. (#1454)

    • Changing Estimated Delivery to format like a section title.

    • Recording snapshots.

    • Renaming output on RewardCardViewModel (94cbab5)

    • [EP-330] Page Viewed (log_in) (#1451)

    • Add a page viewed event tracking method for login page.

    Add a test for the login page viewed tracking method.

    • Add test for log in context page property with other context location properties (45be52b)

    • Prevent duplicate identity calls and only send deltas (#1452) (55a3c1d)

    • [NT-1842, NT-1861] Add Marketing Update Notification (#1445)

    • Add new notification option

    • Update strings

    • Record snapshots

    • Update newsletter snapshots

    • Fix datasource tests (28f9d1b)

    • [EP-491] QA CTA Clicked Search (#1450) (ec3565f)

    • [EP-450] context_page = other (#1449)

    • remove page field from track function

    • default page in contextProperties() to other

    • Fix Test failing for page_context in RootViewModelTest

    • Fix merge conflict

    • rename for parameters from location to page (aa501b2)

    • [EP-282] CTA Clicked (sign_up_submit) (#1446)

    • Convert Signup Submit Button Clicked Event to CTA Clicked event

    Supply a type context based on newsletter subscription to the the CTA event.

    Add a test for the analytics event that tracks signup submit button clicked.

    • Some code cleanup and variable/parameter renaming. (df1fc99)

    • Adding Page Viewed event for SignUpViewModel. (#1448) (7c51c6e)

    • [EP-238] CTA Clicked (discover_filter) (#1447)

    • update conversion rates for usd_goal and usd_pledged_amount to use usd_exchange_rate

    • Tried to fix floating point issue with rounded

    • remove .icloud file

    • remove String format for float rounding

    • Update rounding functions to use NSDecimalNumber

    • remove String format for float rounding

    • Update comments for totalAmountPledgedUsdCurrency and goalUsdCurrency

    • Remove goalUsdCurrency and totalAmountPledgedUsdCurrency from Lenses

    • remove automatic signing

    • remove tracking enabled

    • Reset signing and capability to same as master

    • Reset signing and capability to same as master

    • update usdExchangeRate template to use 1.21374984 value

    • remove unused file

    • remove unused file

    • updating signing certificate to Native Team

    • send event property discovery_category_name when user clicks on all of a selected category filter

    • use analyticsName for discovery_category_name

    Co-authored-by: Justin Swart [email protected] (ec633fa)

    • Convert data lake event to segment, Log In Submit Button Clicked (#1443)

    Add test for the tracking method. (7a7d0a6)

    • [NT-1864] Set All Codesigning To Manual (#1444)

    • Set development to manual

    • Update pbxproj (21c02d9)

    • [EP-501] Update conversion rates (#1442)

    • update conversion rates for usd_goal and usd_pledged_amount to use usd_exchange_rate

    • Tried to fix floating point issue with rounded

    • remove .icloud file

    • remove String format for float rounding

    • Update rounding functions to use NSDecimalNumber

    • remove String format for float rounding

    • Update comments for totalAmountPledgedUsdCurrency and goalUsdCurrency

    • Remove goalUsdCurrency and totalAmountPledgedUsdCurrency from Lenses

    • remove automatic signing

    • remove tracking enabled

    • Reset signing and capability to same as master

    • update usdExchangeRate template to use 1.21374984 value

    • remove unused file

    • updating signing certificate to Native Team

    Co-authored-by: Justin Swart [email protected] (2d2598d)

    • Add subscriptions to identify call (#1441) (a1c586a)

    • [NT-1858] Remove PerimeterXWrapper workaround (#1438)

    • Remove wrapper type, fix target memberships

    • Add test (cc7db4b)

    • [NT-1851] Enable/Disable Segment By Feature Flag (#1440)

    • Move Segment behind feature flag

    • Tidy up protocols

    • Fix secrets template, use ternary operator (7c02930)

    • [EP-434] CTA Clicked (project) (#1439)

    • change event properties sent to segment when a project is clicked from ThanksViewModel

    • remove unused property in ThanksViewModel

    • remove tracking mode from scheme (37094c6)

    • [EP-435] CTA Clicked (project) (#1437)

    • Add an initializer to create TypeContext from DiscoveryParams

    Use the initializer in test method for project card clicked for discover page

    Fix failing tests.

    • Default TypeContext initializer to .results and some code clean up (ba3ee83)

    • [EP-427] CTA-Clicked (project) (#1435)

    • update event properties for project clicked on searched results

    • disable tracking in scheme

    • Update trackProjectCardClicked method to be reusable for all project clicked events

    • update documentation for typeContext in trackProjectCardClicked (a94be5d)

    • [NT-1850] Retain Debug Feature Flag Values For Non-Release Builds (#1436)

    • Retain debug feature flag values for non-release builds

    • Add test (6b8d6b4)

    • [NT-1836, NT-1841] Add Braze SDK and Feature Flag (#1431)

    • Add Braze SDK and feature flag

    • Test

    • Revert

    • Run brew doctor

    • brew config

    • Remove brew config

    • Specify GitHub package registry for brew upgrade

    • Move environment variable to comment

    • Add back mirror specficiation

    • Add related CI issue URL

    • Register push tokens with Braze (#1434)

    Co-authored-by: Yatrik Solanki [email protected] (9608e09)

    • Disable refreshing dSYMs (#1432) (cc3834b)

    • Fix visibility (#1433) (995a6f8)

    • [EP-432] QA Phase 1 feedback - analyticsName (#1430)

    • Updating Project.Category to support analytics_name.

    • Adding spanish category template and testing it.

    • Updating graphql query to include analyticsName.

    • Updating view controller tests.

    • Running formatter.

    • Recording new screenshots. (70b21f8)

    • [NT-1834] PerimeterX Refactor/Test Coverage Improvements (#1427)

    • Move things around

    • Tidy up

    • Improve tests

    • Link framework to targets

    • Update secrets template

    • Improve guard

    • Nope, improve guard again.

    • Work around Swift bug

    • Fix tests (f249797)

    • [EP-491] QA: CTA Clicked Search (#1428)

    • Add context_page to search clicked from global_nav

    • add page context to body of contextProperties()

    • format with bin/format.sh

    • Add documentation to trackSearchBarItemClicked

    • Add documentation to trackSearchBarItemClicked

    • Add prevSelectedIndex to RootViewModel Output

    • Remove prevSelectedIndex from RootViewModel output

    • Update trackTabBarClicked and trackSearchTabBarClicked comments

    • Add segmentClient test for trackSearchTabBarClicked

    • add test for prevSelectedTabBarItem

    • remove the function to test for previouslySelectedTabBarItem, this is been handled elsewhere (6b2114d)

    • Bump codecov orb version (#1429)

    Co-authored-by: Hari Singh [email protected] (a3aae79)

    • [EP-460] Page Viewed (search) Search Terms (#1426)

    • Track search terms and search results when search is made on search screen

      • Remove Search Results Loaded old DataLake event
    • Track search results and search terms whether there are results for the query or not

    Fix failing tests as a result of removing old data lake search results event method

    • Rename signal for search results

    Add more discover_search_results_count assertions

    • Rename search results counts variables for viewWillAppear and when search is performed

    Add some inline comments for clarity (2811754)

    • [NT-419] Facebook Interstitial copy polish (#1389)

    • feat: change login and signup button copy, also add a disclaimer button below signup button for facebook interstitial screen.

    • generate new reference snapshots for facebook interstitial screen

      • Add newly localized strings
      • Change confirm message copy
    • Generate new reference images the confirmation screen

      • Run format on source code
    • Revert "* Add newly localized strings"

    This reverts commit d8daf59d8d2c37d0364b4e48afa2b808e96ed601.

      • Add localization changes for facebook interstitial authorization copy
      • Generate new reference images for CategorySelectionViewController, FacebookConfirmationViewController, ManagePledgeViewController, PledgeViewController, SelectCurrencyViewController.
    • Change the copy used in loginWithEmailButtonStyle

    • Taking snapshots on XCode 12.2 and an iPhone 8 running 14.2

      • Replace disclaimer button with a label with legal copy
    • Generate new screenshots for the confirmation screen

      • Generate new screenshots with Xcode 12.2 iPhone 8 iOS 14.2 simulator
      • Remove extra padding beneath disclaimer label and generate new screenshots
      • Replace disclaimer label with a text view configured with an attributed string with terms of use and privacy policy links.
    • Handle disclaimer links to show in HelpWebViewController when tapped.

    • Add newly localized strings for facebook interstitial copy

    • Change copies of disclaimer label and confirmation label to newly approved copies

    • Change disclaimer style based on trait collection

    • Add updated localized strings

    • Change facebook confirmation label text to update copy

    • Record new screenshot for facebook signup confirmation screen with updated copy

    Co-authored-by: Hari Singh [email protected] (14fe9e9)

    Source code(tar.gz)
    Source code(zip)
  • 4.10.4(Apr 15, 2021)

    • Bumping version to 4.10.4 (353caaa)

    • [EP-458] QA Page Viewed (Project) Phase 1 (#1424)

    • [EP-459] QA CTA Clicked (discover) phase two (#1425)

    • [NT-1822] Switch prelaunch display logic to use display_prelaunch field from v1 API (#1418)

    • [EP-410] QA Property Fixes type changes (#1422)

    • [EP-426] CTA Clicked (pledge_submit) (#1421)

    • [EP-456] QA CTA Clicked (Add Ons Continue) Phase 1 (#1419)

    • [EP-404] QA Phase 1 Fix User Properties (#1417)

    • [EP-410] QA Property Fixes (phase_one) (#1415)

    • [EP-439] QA Phase 2 - Properties to remove (#1416)

    • [EP-401] Fix properties (phase one) (#1414)

    • [EP-403] Fix Conversion Properties (#1413)

    • [EP-400] QA Phase 1 Add properties (#1411)

    • [EP-402] QA phase 1 fix time properties (#1412)

    • [EP-283] CTA Clicked (campaign details) (#1409)

    • [EP-399] QA Phase 1 Remove Properties (#1410)

    • [EP-260] Video Playback Started (#1408)

    • [EP-316] CTA Clicked(Creator Details) (#1407)

    • [EP-319] Page Viewed (change_payment) (#1406)

    • [EP-249] Page Viewed (manage pledge) (#1405)

    • [EP-323] Page Viewed (update_pledge) (#1403)

    • [EP-246] Page Viewed discover (#1397)

    • [EP-248] Page Viewed (search) (#1396)

    • [EP-238] cta clicked discovery filter (#1401)

    • [EP-364] Adding project_tags (#1402)

    • [EP-256] Card Clicked (#1400)

    Source code(tar.gz)
    Source code(zip)
  • 4.10.3(Mar 23, 2021)

    • Bumping version to 4.10.3 (d7228be)

    • [NT-1809] Re-factoring add on selection + shipping rules logic (#1399)

    • [EP-240] CTA clicked discover sort (#1395)

    • [EP-242] CTA Clicked (search) (#1392)

    • [EP-224] CTA Clicked (Add Ons Continue) (#1381)

    • [EP-245] CTA Clicked (watch_project) (#1391)

    • [EP-229] Page Viewed (checkout) (#1390)

    • [EP-228] iOS: Page Viewed (add_ons) (#1384)

    • [EP-231] Page Viewed (rewards) (#1388)

    • [EP-227] CTA Clicked (reward_continue) (#1387)

    • [EP-225] CTA Clicked (pledge_initiate) (#1383)

    • [EP-230] Page Viewed (project) (#1385)

    • [EP-232] ios page viewed thanks (#1380)

    • [EP-162] Create Properties (phase one) (#1379)

    Source code(tar.gz)
    Source code(zip)
  • 4.10.2(Feb 25, 2021)

    • Bumping version to 4.10.2 (05a191c)

    • [NT-1779] Fix for physical/digital add-ons (#1377)

    • Adding feature flag for segment (#1376) (5fdbf1c)

    • Remove unused feature flags on ios (#1375)

    • [NT-1774] Managing denied requests (#1374)

    • Update Makefile & Add Firebase In-App Message (#1373)

    • Add PerimeterX SDK (#1372)

    • [EP-157] Fix Properties (Phase One) (#1371)

    • [EP-149] Rename Properties (Phase One) (#1370)

    • Update README.md (#1368) (c3a1833)

    • [NT-1741][NT-1743][NT-1744] Adding Segment SDK and deprecating Koala (#1367)

    • Removing unused calls from MockService (a13ed6e)

    • Changing width constraint of AddNewCardScene to superview instead of view. (#1365) (88a2a20)

    Source code(tar.gz)
    Source code(zip)
  • 4.10.1(Jan 25, 2021)

    • Bumping version to 4.10.1
    • [NT-1723] Adding frameworks for Firebase Performance Monitor and Crashlytics fix. (#1364)
    • [NT-1725] Fix Tests And Only Cache Frameworks on CI (#1361)
    Source code(tar.gz)
    Source code(zip)
  • 4.10.0(Jan 11, 2021)

    • Bump version to 4.10.0 on project level
    • Bump version to 4.10.0
    • Updating .xib to constraint leading/trailing to safe area. (#1359)
    • Removing MultiLineButton class and associated style. (#1358)
    • [NT-1704] Update ReactiveSwift to 6.5.0 (#1351)
    Source code(tar.gz)
    Source code(zip)
  • 4.9.5(Dec 16, 2020)

  • 4.9.4(Dec 9, 2020)

    • Bump version to 4.9.4
    • Fix to submit non-nil httpBody surveys (#1346)
    • [NT-1692] "Mark as received" causes View Pledge to error (#1345)
    • [NT-1679] Re-send Verification Email on View Loading (#1340)
    • Add Email Verification Event Tracking (#1338)
    • [NT-1659] Add Skip Verification (#1336)
    • [NT-1661][NT-1662] Connect Login and Signup Flow to Interstitial UI (#1335)
    • [NT-1657] Add EmailVerificationViewController UI (#1334)
    • Do not inset from safe area in root stackview (#1333)
    • [NT-1676] Argo Removal Clean-up (#1331)
    • [NT-1663] Detect if users email is verified (#1330)
    Source code(tar.gz)
    Source code(zip)
  • 4.9.3(Nov 16, 2020)

    • Updating userNotificationCenter delegate method to handle userInfo (#1328)
    • Version bump to 4.9.3
    • Feature argo removal (#1327)
    • [NT-1644][NT-1645] Adding email verification feature flags (#1326)
    Source code(tar.gz)
    Source code(zip)
  • 4.9.2(Oct 29, 2020)

  • 4.9.1(Oct 14, 2020)

    • Version bump to 4.9.1
    • [NT-1584][NT-1588] Handling rewards and add ons with future start dates (#1317)
    • [NT-1557] Updating pill view colors in RewardCardView (#1315)
    • [NT-1565] Backers Can Edit an Expired Reward with Add-Ons (#1313)
    Source code(tar.gz)
    Source code(zip)
  • 4.9.0(Oct 14, 2020)

    • Bump version to 4.9.0
    • [NT-1567] Fix CircleCI Configuration (#1312)
    • [NT-1566] Fix Supported Countries List (#1311)
    • [NT-1559] Reward Availability Bugfixes (#1309)
    • [NT-1495] Update logic for quantity attributed text in RewardCardView (#1308)
    • [NT-1543][NT-1544] Update Pledge and Change Payment Method stackview behavior updates (#1306)
    • [NT-1550] Fix ISO Date Format (#1305)
    • [NT-1241] Added update link to third-party app sharing payload (#1304)
    • [NT-1499] Xcode 12/iOS 14.0 Compatibility (#1303)
    • [NT-1524] Add German, Spanish and Japanese translations to copy (#1302)
    • [NT-542] Replace UIButton on CancelPledgeViewController with LoadingButton (#1301)
    • [NT-1527] Add New Country Support (#1300)
    • [NT-1524] Update backed reward copy. Add tests for RewardsCollectionViewControllerTests (#1299)
    • [NT-1529] Add PLN Currency Selection (#1298)
    • [NT-1535] Add vendor/bundle and .bundle/config to .gitignore (#1297)
    • Reduce CircleCI config verbosity (#1296)
    Source code(tar.gz)
    Source code(zip)
  • 4.8.0(Sep 30, 2020)

    • Fix errored pledges on activities vc
    • [NT-1533] Filter Add-Ons From List When Unavailable (#1294)
    • Fix User Settings Regression (#1295)
    • Timeout Optimizely configuration after 3 secs (#1287)
    • [NT-1508] Round Up Converted Amount On Add-on Card (#1286)
    • Update strings (#1285)
    • Always set to max(amount, minValue) (#1283)
    • [NT-1507] Update Fastlane (#1284)
    • Hide amount shimmer during add-ons selection (#1282)
    • Hide shipping based on preference (#1281)
    • Only care about project being backed, not reward (#1280)
    • Bump version to 4.8.0
    • [NT-1140] Reward Add-Ons (#1242)
    Source code(tar.gz)
    Source code(zip)
  • 4.7.0(Aug 31, 2020)

    • Bump version to 4.7.0
    • [NT-1476] Update CircleCI to Xcode 11.6 (#1265)
    • Update upload-dsyms binary (#1256)
    • Add tracking event on tapping manage in activities (#1255)
    • [NT-1357] Fix Duplicate Errored Backing Cells in Activities (#1254)
    • Improve feature name in release notes, rollback for non-alpha-dist (#1239)
    • [NT-1404] Distribute alpha builds from feature branches (#1237)
    • [NT-1373] Show Location on DiscoveryPostcardCell for LightsOn Tag (#1234)
    • [NT-1359] Allow custom HQ environment in debug tools (#1228)
    • [NT-1270] Creator Pledge Info Navigation Bugfix (#1227)
    • [NT-1355] Lights On header bugfix (#1224)
    • Send "Project Card Clicked" event to Optimizely (#1225)
    • [NT-1333] Xcode 11.5 compatibility (#1220)
    • [NT-1317] Send Optimizely Events with the SDK (#1223)
    • [NT-634] Add backing ID to activities errored backings query (#1221)
    • Re-name DataLakeWhiteListedEvent to DataLakeApprovedEvent (#1222)
    • [NT-1315] Native Project Cards Design Tweaks (#1219)
    • [NT-1064] Feature Native Project Cards (#1215)
    • [NT-315] Fix Errored Pledge Feature (#1190)
    • [NT-1203] Lights On Editorial Collection (#1197)
    • Show Apple Pay Button in changePaymentMethod context (#1207)
    • [NT-942] Migrating Optimizely Tracking to the Data Lake (#1205)
    Source code(tar.gz)
    Source code(zip)
Firefox for iOS, branch works with Xcode 12.5.1, Swift 5.4.2 and supports iOS 11.4 and above.

Firefox for iOS Download on the App Store. This branch (main) This branch works with Xcode 12.5.1, Swift 5.4.2 and supports iOS 11.4 and above. Please

Mozilla Mobile 11.2k Jan 7, 2023
An iOS widget-based HN reader

Benuse, an iOS widget-based HN reader Why did you build this app? There already exist some great native Hacker News clients for iOS. I would recommend

Jordan Mann 8 Jul 21, 2022
iOS app to record how much things cost using various data persistence implementations.

how-much iOS app to record how much things cost using various data persistence implementations. The basic data unit is an item, a simple dictionary: {

null 22 Aug 15, 2022
The (second) best iOS app for GitHub.

GitHawk is the second-highest rated iOS app for GitHub. Features 0️⃣ Inbox Zero your notifications ?? Comment even faster than on GitHub desktop ?? Th

GitHawk 2.8k Dec 23, 2022
WordPress for iOS - Official repository

WordPress for iOS Build Instructions Please refer to the sections below for more detailed information. The instructions assume the work is performed f

WordPress Mobile 3.4k Jan 9, 2023
Fully open source text editor for iOS written in Swift.

Edhita Fully open source text editor for iOS written in Swift. http://edhita.bornneet.com/ What Edhita means? Edhita (Romaji) == エディタ (Katakana) == Ed

Tatsuya Tobioka 1.2k Jan 7, 2023
iOS app for 5calls.org

5Calls iOS App This is the repository for the iOS app for 5Calls.org. Requirements Xcode 10.2.1 iOS 10.2 Getting Started Install the dependencies: bun

5 Calls 129 Dec 25, 2022
iOS Money Manager for Board Games

Warning! This is an old project. It does contain a lot of bad code I wrote when I started out with iOS Development. I am not mantaining this project a

Richard 164 Sep 27, 2022
Development of the TUM Campus App for iOS devices - for and from students at Technical University of Munich.

Tum Campus App - An Unofficial Guide Through University Life The TUM Campus App (TCA) is an open source project, developed by volunteers and available

TUM Developers 93 Dec 16, 2022
Turning on a VPN is always a painful experience on an iOS device due to the deep nested menus.

VPN On Turning on a VPN is always a painful experience on an iOS device due to the deep nested menus. This App installs a Today Widget into Notificati

Lex Tang 4.4k Dec 26, 2022
Lightweight iOS Photo Blur App

Blurry Blurry is the go-to image blurring tool to help you apply beautiful blurs for your photos. It is perfect for creating wallpapers, backgrounds,

Andy 17 Nov 22, 2022
Alfresco iOS App - Alfresco is the open platform for business-critical content management and collaboration.

Welcome to the Alfresco iOS App Alfresco is the open platform for business-critical content management and collaboration. Alfresco Mobile was designed

Alfresco Software 42 Sep 26, 2022
Discover, download, compile & launch different image processing & style transfer CoreML models on iOS.

⚠️ ⚠️ ⚠️ IMPORTANT: I'm no longer maintaining Awesome-ML. Awesome ML is an iOS app that is made to demonstrate different image processing CoreML model

eugene 171 Nov 8, 2022
📱 Nextcloud iOS app

Nextcloud iOS app Check out https://nextcloud.com and follow us on twitter.com/nextclouders or twitter.com/NextcloudiOS How to contribute If you want

Nextcloud 1.4k Dec 30, 2022
Kommunicate iOS SDK for customer support

Kommunicate iOS Chat SDK for Customer Support An Open Source iOS Live Chat SDK for Customer Support Overview Kommunicate provides open source live cha

Kommunicate 39 Dec 14, 2022
Simple sample of using the VIP (Clean Swift) architecture for iOS

MyAnimeList Simple sample of using the VIP (Clean Swift) architecture for iOS. ViewController: controls the event handling, view life cycle and displa

null 24 Oct 12, 2022
📱 Wire for iOS (iPhone and iPad)

Wire™ This repository is part of the source code of Wire. You can find more information at wire.com or by contacting [email protected]. You can find

Wire Swiss GmbH 3.2k Jan 8, 2023
Swift audio synthesis, processing, & analysis platform for iOS, macOS and tvOS

AudioKit AudioKit is an audio synthesis, processing, and analysis platform for iOS, macOS (including Catalyst), and tvOS. Installation To add AudioKit

AudioKit 9.5k Jan 5, 2023
🍣Making Recipes iOS app

Recipes App ❤️ Support my apps ❤️ Push Hero - pure Swift native macOS application to test push notifications PastePal - Pasteboard, note and shortcut

Khoa 88 Nov 22, 2022