Avatar of Matt Moriarity
Matt Moriarity


I've really enjoyed using Apple's Combine framework to build iOS apps with UIKit in a reactive way. Both Threads and Courier's iOS app are built with Combine. While building those apps, I found some useful patterns that I thought made sense to extract into their own package, so I could reuse them across different apps.

A non-comprehensive list of things included in Combinable:

  • Data source implementations for table views and collection views that source data from a Combine publisher
  • A variation of sink called handle, which keeps the subscription alive until the publisher completes (useful for things like futures)
  • A withLatestFrom operator, useful for combining values from two publishers in an asymmetric way
  • A publisher of changes to a Core Data fetch request's results, as described in my post Observing Core Data Changes with a Custom Combine Publisher