$ show kickstarter/ios-oss
This repository is the open-source iOS client for Kickstarter, a crowdfunding platform. It is a production-grade application built with Swift, UIKit, and SwiftUI, following an MVVM architecture with heavy use of ReactiveSwift and some Combine. The app supports project discovery, pledging, rewards, comments, video feeds, user settings, and authentication. The codebase is well-structured with a dedicated design system (KDS), GraphQL integration via Apollo, extensive snapshot and unit testing, and feature flag experimentation via Statsig. While the code quality is high with many reusable patterns (ValueCell, ShimmerLoading, PaginatingList), there is moderate technical drift due to the coexistence of two reactive frameworks, legacy color references, and some deprecated button styles.
The LLM identified 4 files worth highlighting for reuse:
Declares a reusable button style system using SwiftUI's ButtonStyle protocol. Supports multiple variants (filled, stroked, text) and size configurations. Could be extracted to any SwiftUI app needing a standardized button theming approach.
Defines a protocol and extension for adding shimmer (skeleton loading) effects to any UIView. Uses CAGradientLayer animations. Isolated enough to be reused as a standalone utility for any UIKit-based loading states.
A generic SwiftUI list view that automatically handles pagination via a closure. Supports pull-to-refresh and loading states. Clean abstraction that can be extracted and reused in any SwiftUI app requiring paginated data display.
Provides a reusable empty state view driven by an EmptyStateViewType protocol. Configures image, title, message, and button. Self-contained and easy to extract into any iOS project for consistent empty state handling.