# Sharing Tinder’s latest contributions to the open source community

[Tinder](https://yomu.fyi/company/tinder) · Tinder · Jan 29, 2025

**Type:** Announcement

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

**Tags:** [Architecture](https://yomu.fyi/topic/architecture), [Developer Experience](https://yomu.fyi/topic/developer-experience), [iOS](https://yomu.fyi/topic/ios), [Open Source](https://yomu.fyi/topic/open-source), [Performance](https://yomu.fyi/topic/performance)

[Read original post](https://medium.com/tinder/announcing-tinders-latest-contributions-to-the-open-source-community-468a17e0ce32)
