# kickstarter/ios-oss

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/kickstarter-ios-oss).**

8,667 stars · 1,227 forks · Swift · Apache-2.0

## Links

- GitHub: https://github.com/kickstarter/ios-oss
- Homepage: https://www.kickstarter.com/mobile
- awesome-repositories: https://awesome-repositories.com/repository/kickstarter-ios-oss.md

## Topics

`frp` `functional-programming` `functional-reactive-programming` `ios` `ios-app` `reactivecocoa` `reactiveswift` `swift` `swift-language`

## Description

This is the open-source iOS application for Kickstarter, a platform that lets users discover and back creative projects, manage pledges, and track campaign updates from their mobile device. The app is built around a view model architecture that maps input signals to output signals in a pure functional core, isolating side effects to the boundary layer for testability.

The project employs a reactive view model pattern with signal-driven state management, using Swift protocols for component design to enable dependency injection and mock-based testing. User interfaces are assembled entirely in code using Auto Layout constraints, avoiding storyboard files. A snapshot-based visual testing approach captures screenshots of every UI state across languages and devices to verify visual correctness programmatically, while localized string verification ensures view model outputs produce correct translated strings and accessible interfaces for all supported languages.

The codebase demonstrates functional reactive UI testing by isolating side effects in view models and verifying UI state transformations through snapshot comparisons. It also provides methods for localization and accessibility testing, verifying that the app displays correct localized strings and maintains accessibility across multiple languages and device configurations.

## Tags

### Mobile Development

- [Crowdfunding App Development](https://awesome-repositories.com/f/mobile-development/crowdfunding-app-development.md) — Builds a native iOS app for a crowdfunding platform that lets users discover, back, and manage projects from their mobile device.
- [Crowdfunding Apps](https://awesome-repositories.com/f/mobile-development/crowdfunding-apps.md) — Provides an iOS application for discovering and backing creative projects, managing pledges, and tracking campaign updates.
- [Code-Based UI Layouts](https://awesome-repositories.com/f/mobile-development/code-based-ui-layouts.md) — Assembles user interfaces entirely in code using Auto Layout constraints, avoiding storyboard files.
- [Testing Tools](https://awesome-repositories.com/f/mobile-development/ios-asset-and-localization-management/testing-tools.md) — Verifies that the iOS app displays correct localized strings and maintains accessibility across multiple languages and device configurations.

### Programming Languages & Runtimes

- [Snapshot Testing Frameworks](https://awesome-repositories.com/f/programming-languages-runtimes/swift-testing-tools/snapshot-testing-frameworks.md) — Captures and compares visual states of UI screens across languages, devices, and configurations.

### Software Engineering & Architecture

- [View Model Mappings](https://awesome-repositories.com/f/software-engineering-architecture/architectural-design-patterns/state-management/reactive-subscription-systems/signals-reactivity/view-model-mappings.md) — Implements a reactive view model pattern that maps input signals to output signals in a pure functional core for testability.
- [Pure Functional Cores](https://awesome-repositories.com/f/software-engineering-architecture/functional-ui-architectures/pure-functional-cores.md) — Provides a pure functional core that maps input signals to output signals, isolating side effects for testability.
- [Protocol-Oriented Injection](https://awesome-repositories.com/f/software-engineering-architecture/integration-extensibility/dependency-injection/protocol-oriented-injection.md) — Defines UI components and services through Swift protocols to enable dependency injection and mock-based testing.
- [Signal-Based Mappings](https://awesome-repositories.com/f/software-engineering-architecture/view-model-architectures/signal-based-mappings.md) — Maps input signals to output signals in a pure functional core to isolate side effects for testability.

### Testing & Quality Assurance

- [Side Effect Isolation](https://awesome-repositories.com/f/testing-quality-assurance/general-testing-utilities/test-isolation/logic-isolation-utilities/business-logic-isolation/side-effect-isolation.md) — Maps input signals to output signals in a pure functional core to keep side effects separate for easier testing. ([source](https://cdn.jsdelivr.net/gh/kickstarter/ios-oss@main/README.md))
- [Multi-Configuration Snapshots](https://awesome-repositories.com/f/testing-quality-assurance/snapshot-testing/multi-configuration-snapshots.md) — Snapshots every screen across languages, devices, and edge cases to verify visual correctness. ([source](https://cdn.jsdelivr.net/gh/kickstarter/ios-oss@main/README.md))
- [Visual Snapshot Comparisons](https://awesome-repositories.com/f/testing-quality-assurance/snapshot-testing/visual-snapshot-comparisons.md) — Captures screenshots of every UI state across languages and devices to verify visual correctness programmatically.
- [Cross-Configuration Verification](https://awesome-repositories.com/f/testing-quality-assurance/software-testing/testing-frameworks/test-frameworks/browser-and-ui-testing/swift-ui-snapshot-testing/cross-configuration-verification.md) — Captures and compares visual snapshots of every screen across languages, devices, and edge cases to catch unintended UI changes.
- [Side-Effect Isolation Testing](https://awesome-repositories.com/f/testing-quality-assurance/software-testing/testing-frameworks/test-frameworks/browser-and-ui-testing/swift-ui-snapshot-testing/side-effect-isolation-testing.md) — Tests iOS user interfaces by isolating side effects in view models and verifying UI state transformations through snapshot comparisons.
- [Localization Verification](https://awesome-repositories.com/f/testing-quality-assurance/accessibility-visual-testing/accessibility-testing/localization-verification.md) — Verifies that view model outputs produce correct localized strings and accessible interfaces across all supported languages. ([source](https://cdn.jsdelivr.net/gh/kickstarter/ios-oss@main/README.md))
- [Localization Testing Tools](https://awesome-repositories.com/f/testing-quality-assurance/localization-testing-tools.md) — Verifies that view model outputs produce correct localized strings and accessible interfaces across supported languages.

### Web Development

- [Reactive State Management](https://awesome-repositories.com/f/web-development/reactive-state-management.md) — Uses reactive streams to propagate user actions and data changes through the app without mutable shared state.

### Development Tools & Productivity

- [Verification Tools](https://awesome-repositories.com/f/development-tools-productivity/localization-support/string-localization/verification-tools.md) — Ships automated verification that view model outputs produce correct localized strings and accessible interfaces across all supported languages.
