Edit product


A Combine Kickstart

Includes free updates to support the latest version of Swift

Reactive Programming comes to Swift

A Combine Kickstart is your perfect introduction to Apple's framework for reactive programming.

  • A single approach: With Combine, Apple is unifying the techniques we've used for decades for passing information around in an iOS or macOS App asynchronously: Target-Action, callbacks, closures, delegates, notifications... all of them.
  • Theory and practice: This hand-on, fast-moving kickstart introduces you to using Combine for declarative and reactive programming on Apple platforms. 
  • Building chains: We focus on core concepts and building discrete, easy-to-understand, pieces of a pipeline that allows your app to react to changes in the state.

Combine is a great way to implement reactive code in Swift in apps that must support iOS 13 or iOS 14.

What's inside

A Combine Kickstart introduces you to the four pillars of Combine: Publishers, Subscribers, Subscriptions, and Operators. You'll quickly move from introductory examples to becoming a power user as you begin to understand how the pieces fit together.

  • Choose your UI: Whether you use UIKit or SwiftUI, Combine can fit into your codebase. We show an example of each.
  • Separating Publish and Subscribe: We round out the subscribers with assign(to:on:), assign(to:), and sink(). We break the publishing chain into pieces and learn to republish bits to keep our controllers small and focused and create our own operators.
  • Publishing information: Combine makes KVO and Notifications much nicer. We use Subjects to add Combine to existing code.
  • Failing and finishing: Use sink() or catch() operator to handle publishers that finish or fail. For some extra magic, wrap the problem parts in a flatMap().
  • Timing and debugging:  Learn to use debounce(), throttle(), or removeDuplicates() to control the flow and use print() and breakpoint() to investigate and debug our flow and handleEvents() to kick off new processes.
  • Multiple Streams: We share() our source with multiple subscribers  and perform actions using count(), reduce(), collect(), and scan(). Bring multiple publishers together with merge(), combineLatest(), and zip().
  • Network calls: We use URLSession's custom publisher to retrieve values followed by operators to transform the returned output. If the data is JSON we use the decoder() operator to easily produce instances of custom types. We end with a look at how the Future publisher allows us to wrap methods with callbacks into Combine publishers.

Combine is one of those APIs that you resist because it just doesn't seem to make sense - and then something in A Combine Kickstart clicks for you and you want to use Combine everywhere.

Check out these free sample PDFs

Table of Contents

Introduction and first section

Chapter 3 Section 7 - Custom Publisher Properties

Chapter 6 Section 6 - Combine Latest

The Ultimate Bundle

A Combine Kickstart is part of The Ultimate Bundle along with A Swift Kickstart, A SwiftUI Kickstart, and A Functional Programming Kickstart.

Own all four books and pay 60% of the price of purchasing all four with The Ultimate Bundle.

Who am I?

My name is Daniel Steinberg, and I’ve been teaching Swift since it launched and iPhone development for more than a dozen years. I’ve spoken at countless conferences around the world, taught Swift to multinational companies such as Apple, Google, and eBay, and built apps for Apple’s platforms as far back as System 7.

If you have questions about A SwiftUI Kickstart, email me at inquiries@dimsumthinking.com, or tweet me at @dimsumthinking and I’ll do my best to answer them.

10 ratings

  • A Combine Kickstart teaches you the theory and practice of adopting reactive programming in your iOS or macOS app.
  • FormatsePub, mobi, & PDF
  • Sample CodeXcode projects
  • Xcode Version12 +
  • iOS Version14 +
  • macOS Version11 Big Sur +
  • Swift Version5.4 +


A Combine Kickstart

Enter your info to complete your purchase


···· ···· ···· 4242
Test card



Use a different card?


pp paypal

or pay with

We do not keep any of your sensitive credit card information on file with us unless you ask us to after this purchase is complete.

or pay with

You'll be charged US$30.

Your purchase was successful!

We charged your card and sent you a receipt


    Good news! Since you already have a Gumroad account, it's also been added to your library.

    Powered by Gumroad