Loading…
Sharing Tinder’s latest contributions to the open source community
TinderTinder
Summary
Tinder open-sourced several iOS development repositories, including Layout, Nodes Architecture Framework, and CombineUI, to share the engineering patterns supporting its iPhone application. As the app expanded across diverse device profiles and scale, engineering teams faced reliability, consistency, and memory challenges under their legacy architecture. In response, Tinder developed Nodes, a plugin-based architecture framework using compile-time dependency injection and lifecycle hooks that enforce complete memory release upon feature dismissal. For interface construction, Tinder created Layout, a domain-specific Auto Layout wrapper offering declarative syntax for UIKit views to eliminate storyboard merge conflicts while preserving native capabilities. The resulting stack enables isolated testing of business logic, native reactive event binding, and incremental adoption of SwiftUI across the codebase.
Context
As Tinder grew in complexity and handled billions of Likes and Nopes across varied iPhone models and screen sizes, engineering teams faced reliability, consistency, and performance challenges. Engineers needed a safe way to continually add new features without breaking existing functionality, avoid memory leaks, and eliminate Xcode storyboard XML merge conflicts.
Approach / What changed
Tinder developed and open-sourced the Nodes Architecture Framework, Layout, and CombineUI. Nodes uses compile-time dependency injection, isolated context objects for business logic, flow routers, and feature lifecycle hooks for memory management and leak detection. Layout provides a declarative Auto Layout DSL wrapper over UIKit, and CombineUI integrates Combine and Swift property wrappers for reactive touch and control bindings.
Takeaways
- The Nodes Architecture Framework uses compile-time dependency-injected plugins, enabling new screens to be integrated into existing screens with four lines of code while supporting A/B testing via plugin lists.
- Nodes decouples business rules into context objects that receive output signals via listener delegates, while explicit lifecycle hooks trigger complete memory release and leak warnings upon screen dismissal.
- Layout provides a programmatic, declarative DSL over Apple's Auto Layout SDK for UIKit, avoiding XML storyboard conflicts and verbosity while maintaining native Auto Layout compatibility.
Related reading
Tinder ·
Building Obsidian, Tinder’s Design System
As Tinder scaled over a decade, maintaining visual consistency across its client applications became unsustainable and increased engineering overhead. To address this, the UI Platform team developed Obsidian, a unified design system combining design tokens, reusable components, and documentation. Designers define base and context tokens in Figma using the Tokens Studio plugin, which are then transformed by Style Dictionary into native artifacts for iOS, Android, and Web. Web developers integrate these tokens using Atomizer to generate static stylesheets, while a Zeroheight documentation portal and a custom token lookup tool assist legacy migrations. The ongoing migration has streamlined collaboration between designers and engineers, resolved styling ambiguities, and improved color contrast accessibility across platforms.
TinderTinder ·
How the Tinder iOS App reduced the size of our localizations by 95% using Emerge