swift_combine

Swift Combine framework for reactive programming, handling asynchronous events with publishers, subscribers, and operators.

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "swift_combine" with this command: npx skills add swiftzilla/skills/swiftzilla-skills-swift-combine

Swift Combine

This skill covers Apple's Combine framework for reactive programming and handling asynchronous events.

Overview

Combine is a declarative Swift API for processing values over time. It provides a unified approach to handling asynchronous events, user interface updates, and data streams.

Available References

Quick Reference

Basic Publisher

import Combine

// Published property
@Published var username: String = ""

// CurrentValueSubject
let subject = CurrentValueSubject<String, Never>("initial")

// PassthroughSubject
let passthrough = PassthroughSubject<Int, Never>()

// Just publisher
let just = Just("value")

// Future publisher
let future = Future<String, Error> { promise in
    promise(.success("result"))
}

Subscribing

// Sink
let cancellable = publisher.sink(
    receiveCompletion: { completion in
        switch completion {
        case .finished:
            print("Completed")
        case .failure(let error):
            print("Error: \(error)")
        }
    },
    receiveValue: { value in
        print("Value: \(value)")
    }
)

// Assign
let cancellable = publisher
    .assign(to: \.text, on: label)

Storing Subscriptions

private var cancellables = Set<AnyCancellable>()

publisher
    .sink { value in
        print(value)
    }
    .store(in: &cancellables)

Common Operators

publisher
    .filter { $0 > 0 }
    .map { $0 * 2 }
    .debounce(for: .seconds(0.5), scheduler: RunLoop.main)
    .removeDuplicates()
    .sink { value in
        print(value)
    }

Combine vs Async/Await

Use CaseCombineAsync/Await
Event streams✅ Excellent⚠️ Complex
UI bindings✅ Perfect⚠️ Verbose
Chaining operations✅ Great✅ Good
Simple async calls⚠️ Overkill✅ Simple
Error handling✅ Rich✅ Good

Best Practices

  1. Store cancellables - Prevent memory leaks
  2. Use weak self - Avoid retain cycles
  3. Handle errors - Always handle completion
  4. Thread safety - Use receive(on:) for UI
  5. Cancel properly - Clean up subscriptions
  6. Avoid overuse - Combine is powerful but not for everything
  7. Test pipelines - Use expectations for async

For More Information

Visit https://swiftzilla.dev for comprehensive Combine documentation.

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

swift_swiftui

No summary provided by upstream source.

Repository SourceNeeds Review
General

swift_concurrency

No summary provided by upstream source.

Repository SourceNeeds Review
General

swift_style

No summary provided by upstream source.

Repository SourceNeeds Review
General

swift_structure

No summary provided by upstream source.

Repository SourceNeeds Review