Skip to content
CAI
Software that uses CAICheck a score

CombineCommunity/rxswift-to-combine-cheatsheet

45.3

Weak · 19 September 2026

92

lines of production code

Ruby

primary language

1

measurement over time

CAI band scale
CAI lens gauges

What this system is

This system is a documentation tool that automates the generation of visual cheatsheets for migrating from RxSwift to Combine. It processes CSV data to create comprehensive operator and component mappings, handling behavioral differences and unsupported features. The tool renders these tables as images and updates project documentation automatically.

Behavioural changes

Automated cheatsheet generation with image output and updated operator mappings

The manual readme generation script (genreadme.rb) has been replaced by a new generate.rb script that automatically sorts CSV data, renders the cheatsheet tables as images using imgkit, and updates the contributing instructions. The cheatsheet content itself has been significantly expanded and corrected: new operators such as empty, never, startWith, timer, and deferred equivalents are now included, while obsolete mappings like Driver to BindableObject have been updated to ObservableObject. Additionally, the script now handles emoji-to-image conversion for unsupported characters and reflects Apple's removal of certain Combine APIs (like AnyPublisher closure variations) in the notes.

(repo-wide) · high confidence

Expanded RxSwift to Combine cheatsheet with comprehensive operator and component mappings

The Data area now provides a significantly more complete reference for migrating from RxSwift to Combine. The previous limited mappings in Data/CoreComponents.csv and Data/Operators.csv have been replaced by expanded versions (Data/core\_components.csv and Data/operators.csv) that cover many more types (e.g., BehaviorRelay, PublishRelay, Maybe, Single) and operators (e.g., debounce, distinctUntilChanged, flatMapLatest, timer, zip). The new tables include detailed notes explaining behavioral differences, such as how Driver maps to ObservableObject with Main Thread guarantees, how Single maps to Deferred + Future to preserve laziness, and how RxSwift's bind(to:) maps to Combine's assign(to:on:) using KeyPaths. Several RxSwift constructs are marked as unsupported (❌) in Combine, with notes suggesting workarounds or explaining why they are not directly equivalent.

Data · high confidence

Dependencies

Add image generation and markdown processing dependencies

The project now includes new Ruby gems to support image generation and markdown processing: 'colorize' for terminal output coloring, 'commonmarker' for markdown parsing, 'wkhtmltoimage-binary' and 'imgkit' for converting HTML to images, alongside the existing 'csv2md' gem. The Bundler version has also been updated from 2.0.1 to 2.1.4.

(dependencies) · high confidence

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

Baseline

  • First survey — no prior run to compare against. CAI 45.

Lenses

  • Code Health 100
  • Maturity 40
  • Readiness 23
  • Security 100

Changes since last survey

  • 31 commits — 28 feature/other, 3 fixes

By area

  • (root) — 30 commits
  • Resources/Icons — 1 commit

Notable commits

  • fix: Add ifEmpty note and fixed ordering
  • fix: Minor fixes to images
  • fix: fix type for optional publisher
  • change: Add CSV sorting and additional core components
  • change: Add Empty/Never and Timer.publish (#5)
  • change: Add Optional.Publisher for Rx from operator (#18)
  • change: Add all RxSwift operators and mark those that don't exist in Combine
  • change: Add clarification on RxSwift.Single vs. Combine.Future
  • change: Add empty. never, startWith, timer (Thanks @stephencelis!)
  • change: Add image generation for blog
  • change: Add merge(maxConcurrent:) -> flatMap(maxPublihers:)
  • change: Add of->Collection.publisher
  • change: Add publish,makeConnectable and refCount,autoconnect
  • change: Add take(n)/prefix(n) operator to the table
  • change: Add x Icon
  • change: Added just
  • change: Apple removed AnyPublisher closure variation similar to Observable.create.
  • change: Apple removed Publishers.Optional at least in Xcode 11 GM (#12)
  • change: Minor updates to Maybe/Single
  • change: Missing operators & renames
  • …and 11 more

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

CombineCommunity/rxswift-to-combine-cheatsheet was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 19 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit f8a2a087281bf3cbdb171088a8844825df24b078 — the exact code this score is about.
  • Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-13a154b7f5d1.