[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-6666":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":16,"stars7d":17,"stars30d":18,"stars90d":16,"forks30d":16,"starsTrendScore":17,"compositeScore":19,"rankGlobal":10,"rankLanguage":10,"license":20,"archived":21,"fork":21,"defaultBranch":22,"hasWiki":23,"hasPages":21,"topics":24,"createdAt":10,"pushedAt":10,"updatedAt":33,"readmeContent":34,"aiSummary":35,"trendingCount":16,"starSnapshotCount":16,"syncStatus":36,"lastSyncTime":37,"discoverSource":38},6666,"RxSwift","ReactiveX\u002FRxSwift","ReactiveX","Reactive Programming in Swift","",null,"Swift",24651,4161,521,11,0,1,14,71.9,"MIT License",false,"main",true,[25,26,27,28,29,30,31,32],"functional","ios","observer","reactive","reactivex","rxswift","swift","unidirectional","2026-06-12 04:00:29","\u003Cp align=\"center\">\n\u003Cimg src=\"https:\u002F\u002Fgithub.com\u002FReactiveX\u002FRxSwift\u002Fblob\u002Fmain\u002Fassets\u002FRxSwift_Logo.png?raw=true\" width=\"35%\" alt=\"RxSwift Logo\" \u002F>\n\u003Cbr \u002F>\n\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FReactiveX\u002FRxSwift\u002Factions\u002Fworkflows\u002Ftests.yml\" target=\"_blank\">\u003Cimg src=\"https:\u002F\u002Fgithub.com\u002FReactiveX\u002FRxSwift\u002Factions\u002Fworkflows\u002Ftests.yml\u002Fbadge.svg\" alt=\"Build Status\" \u002F>\u003C\u002Fa>\n\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fplatforms-iOS%20%7C%20macOS%20%7C%20tvOS%20%7C%20watchOS%20%7C%20Linux-333333.svg\" alt=\"Supported Platforms: iOS, macOS, tvOS, watchOS & Linux\" \u002F>\n\u003Cbr \u002F>\n\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FCarthage\u002FCarthage\" alt=\"RxSwift on Carthage\" title=\"RxSwift on Carthage\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FCarthage-compatible-4BC51D.svg?style=flat\" \u002F>\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fswiftlang\u002Fswift-package-manager\" alt=\"RxSwift on Swift Package Manager\" title=\"RxSwift on Swift Package Manager\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FSwift%20Package%20Manager-compatible-brightgreen.svg\" \u002F>\u003C\u002Fa>\n\u003C\u002Fp>\n\nRx is a [generic abstraction of computation](https:\u002F\u002Fyoutu.be\u002FlooJcaeboBY) expressed through `Observable\u003CElement>` interface, which lets you broadcast and subscribe to values and other events from an `Observable` stream.\n\nRxSwift is the Swift-specific implementation of the [Reactive Extensions](http:\u002F\u002Freactivex.io) standard.\n\n\u003Cp align=\"center\">\u003Cimg src=\"https:\u002F\u002Fgithub.com\u002FReactiveX\u002FRxSwift\u002Fblob\u002Fmain\u002Fassets\u002Fexample.png?raw=true\" width=\"55%\" alt=\"RxSwift Observable Example of a price constantly changing and updating the app's UI\" \u002F>\u003C\u002Fp>\n\nWhile this version aims to stay true to the original spirit and naming conventions of Rx, this project also aims to provide a true Swift-first API for Rx APIs.\n\nCross platform documentation can be found on [ReactiveX.io](http:\u002F\u002Freactivex.io\u002F).\n\nLike other Rx implementations, RxSwift's intention is to enable easy composition of asynchronous operations and streams of data in the form of `Observable` objects and a suite of methods to transform and compose these pieces of asynchronous work.\n\nKVO observation, async operations, UI Events and other streams of data are all unified under [abstraction of sequence](Documentation\u002FGettingStarted.md#observables-aka-sequences). This is the reason why Rx is so simple, elegant and powerful.\n\n## I came here because I want to ...\n\n###### ... understand\n\n* [why use rx?](https:\u002F\u002Fgithub.com\u002FReactiveX\u002FRxSwift\u002Fblob\u002Fmain\u002FDocumentation\u002FWhy.md)\n* [the basics, getting started with RxSwift](https:\u002F\u002Fgithub.com\u002FReactiveX\u002FRxSwift\u002Fblob\u002Fmain\u002FDocumentation\u002FGettingStarted.md)\n* [traits](https:\u002F\u002Fgithub.com\u002FReactiveX\u002FRxSwift\u002Fblob\u002Fmain\u002FDocumentation\u002FTraits.md) - what are `Single`, `Completable`, `Maybe`, `Driver`, and `ControlProperty` ... and why do they exist?\n* [testing](https:\u002F\u002Fgithub.com\u002FReactiveX\u002FRxSwift\u002Fblob\u002Fmain\u002FDocumentation\u002FUnitTests.md)\n* [tips and common errors](https:\u002F\u002Fgithub.com\u002FReactiveX\u002FRxSwift\u002Fblob\u002Fmain\u002FDocumentation\u002FTips.md)\n* [debugging](https:\u002F\u002Fgithub.com\u002FReactiveX\u002FRxSwift\u002Fblob\u002Fmain\u002FDocumentation\u002FGettingStarted.md#debugging)\n* [the math behind Rx](https:\u002F\u002Fgithub.com\u002FReactiveX\u002FRxSwift\u002Fblob\u002Fmain\u002FDocumentation\u002FMathBehindRx.md)\n* [what are hot and cold observable sequences?](https:\u002F\u002Fgithub.com\u002FReactiveX\u002FRxSwift\u002Fblob\u002Fmain\u002FDocumentation\u002FHotAndColdObservables.md)\n\n###### ... install\n\n* Integrate RxSwift\u002FRxCocoa with my app. [Installation Guide](#installation)\n\n###### ... hack around\n\n* with the example app. [Running Example App](https:\u002F\u002Fgithub.com\u002FReactiveX\u002FRxSwift\u002Fblob\u002Fmain\u002FDocumentation\u002FExampleApp.md)\n* with operators in playgrounds. [Playgrounds](https:\u002F\u002Fgithub.com\u002FReactiveX\u002FRxSwift\u002Fblob\u002Fmain\u002FDocumentation\u002FPlaygrounds.md)\n\n###### ... interact\n\n* All of this is great, but it would be nice to talk with other people using RxSwift and exchange experiences. \u003Cbr \u002F>[Join Slack Channel](http:\u002F\u002Fslack.rxswift.org)\n* Report a problem using the library. [Open an Issue With Bug Template](https:\u002F\u002Fgithub.com\u002FReactiveX\u002FRxSwift\u002Fblob\u002Fmain\u002F.github\u002FISSUE_TEMPLATE.md)\n* Request a new feature. [Open an Issue With Feature Request Template](Documentation\u002FNewFeatureRequestTemplate.md)\n* Help out [Check out contribution guide](https:\u002F\u002Fgithub.com\u002FReactiveX\u002FRxSwift\u002Fblob\u002Fmain\u002FCONTRIBUTING.md)\n\n###### ... compare\n\n* [with Combine and ReactiveSwift](https:\u002F\u002Fgithub.com\u002FReactiveX\u002FRxSwift\u002Fblob\u002Fmain\u002FDocumentation\u002FComparisonWithOtherLibraries.md).\n\n###### ... understand the structure\n\nRxSwift is as compositional as the asynchronous work it drives. The core unit is RxSwift itself, while other dependencies can be added for UI Work, testing, and more.\n\nIt comprises five separate components depending on each other in the following way:\n\n```none\n┌──────────────┐    ┌──────────────┐\n│   RxCocoa    ├────▶   RxRelay    │\n└───────┬──────┘    └──────┬───────┘\n        │                  │\n┌───────▼──────────────────▼───────┐\n│             RxSwift              │\n└───────▲──────────────────▲───────┘\n        │                  │\n┌───────┴──────┐    ┌──────┴───────┐\n│    RxTest    │    │  RxBlocking  │\n└──────────────┘    └──────────────┘\n```\n\n* **RxSwift**: The core of RxSwift, providing the Rx standard as (mostly) defined by [ReactiveX](https:\u002F\u002Freactivex.io). It has no other dependencies.\n* **RxCocoa**: Provides Cocoa-specific capabilities for general iOS\u002FmacOS\u002FwatchOS & tvOS app development, such as Shared Sequences, Traits, and much more. It depends on both `RxSwift` and `RxRelay`.\n* **RxRelay**: Provides `PublishRelay`, `BehaviorRelay` and `ReplayRelay`, three [simple wrappers around Subjects](https:\u002F\u002Fgithub.com\u002FReactiveX\u002FRxSwift\u002Fblob\u002Fmain\u002FDocumentation\u002FSubjects.md#relays). It depends on `RxSwift`.\n* **RxTest** and **RxBlocking**: Provides testing capabilities for Rx-based systems. It depends on `RxSwift`.\n\n## Usage\n\n\u003Ctable>\n  \u003Ctr>\n    \u003Cth width=\"30%\">Here's an example\u003C\u002Fth>\n    \u003Cth width=\"30%\">In Action\u003C\u002Fth>\n  \u003C\u002Ftr>\n  \u003Ctr>\n    \u003Ctd>Define search for GitHub repositories ...\u003C\u002Ftd>\n    \u003Cth rowspan=\"9\">\u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002Fkzaher\u002Frxswiftcontent\u002Fmaster\u002FGithubSearch.gif\">\u003C\u002Fth>\n  \u003C\u002Ftr>\n  \u003Ctr>\n    \u003Ctd>\u003Cdiv class=\"highlight highlight-source-swift\">\u003Cpre>\nlet searchResults = searchBar.rx.text.orEmpty\n    .throttle(.milliseconds(300), scheduler: MainScheduler.instance)\n    .distinctUntilChanged()\n    .flatMapLatest { query -> Observable&lt;[Repository]&gt; in\n        if query.isEmpty {\n            return .just([])\n        }\n        return searchGitHub(query)\n            .catchAndReturn([])\n    }\n    .observe(on: MainScheduler.instance)\u003C\u002Fpre>\u003C\u002Fdiv>\u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n    \u003Ctd>... then bind the results to your tableview\u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n    \u003Ctd width=\"30%\">\u003Cdiv class=\"highlight highlight-source-swift\">\u003Cpre>\nsearchResults\n    .bind(to: tableView.rx.items(cellIdentifier: \"Cell\")) {\n        (index, repository: Repository, cell) in\n        cell.textLabel?.text = repository.name\n        cell.detailTextLabel?.text = repository.url\n    }\n    .disposed(by: disposeBag)\u003C\u002Fpre>\u003C\u002Fdiv>\u003C\u002Ftd>\n  \u003C\u002Ftr>\n\u003C\u002Ftable>\n\n## Installation\n\nRxSwift doesn't contain any external dependencies.\n\nThese are currently the supported installation options:\n\n### Manual\n\nOpen Rx.xcworkspace, choose `RxExample` and hit run. This method will build everything and run the sample app\n\n### XCFrameworks\n\nEach release starting with RxSwift 6 includes `*.xcframework` framework binaries.\n\nSimply drag the needed framework binaries to your **Frameworks, Libraries, and Embedded Content** section under your target's **General** tab.\n\n\u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FReactiveX\u002FRxSwift\u002Fmain\u002Fassets\u002Fxcframeworks.png\" alt=\"XCFrameworks instructions\" width=\"65%\">\n\n> [!TIP]\n> RxSwift's xcframework(s) are signed with an Apple Developer account, and you can always verify the Team Name: Shai Mishali\n>\n> \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FReactiveX\u002FRxSwift\u002Fmain\u002Fassets\u002Fxcframeworks_signing.png\" alt=\"XCFrameworks Signing Team Name Validation\" width=\"65%\">\n\n### [Carthage](https:\u002F\u002Fgithub.com\u002FCarthage\u002FCarthage)\n\nAdd this to `Cartfile`\n\n```\ngithub \"ReactiveX\u002FRxSwift\" \"6.10.0\"\n```\n\n```bash\n$ carthage update\n```\n\n#### Carthage as a Static Library\n\nCarthage defaults to building RxSwift as a Dynamic Library.\n\nIf you wish to build RxSwift as a Static Library using Carthage you may use the script below to manually modify the framework type before building with Carthage:\n\n```bash\ncarthage update RxSwift --platform iOS --no-build\nsed -i -e 's\u002FMACH_O_TYPE = mh_dylib\u002FMACH_O_TYPE = staticlib\u002Fg' Carthage\u002FCheckouts\u002FRxSwift\u002FRx.xcodeproj\u002Fproject.pbxproj\ncarthage build RxSwift --platform iOS\n```\n\n### [Swift Package Manager](https:\u002F\u002Fgithub.com\u002Fswiftlang\u002Fswift-package-manager)\n\n> **Note**: There is a critical cross-dependency bug affecting many projects including RxSwift in Swift Package Manager. We've [filed a bug (SR-12303)](https:\u002F\u002Fbugs.swift.org\u002Fbrowse\u002FSR-12303) in early 2020 but have no answer yet. Your mileage may vary. A partial workaround can be found [here](https:\u002F\u002Fgithub.com\u002FReactiveX\u002FRxSwift\u002Fissues\u002F2127#issuecomment-717830502).\n\nCreate a `Package.swift` file.\n\n```swift\n\u002F\u002F swift-tools-version:5.0\n\nimport PackageDescription\n\nlet package = Package(\n  name: \"RxProject\",\n  dependencies: [\n    .package(url: \"https:\u002F\u002Fgithub.com\u002FReactiveX\u002FRxSwift.git\", .upToNextMajor(from: \"6.0.0\"))\n  ],\n  targets: [\n    .target(name: \"RxProject\", dependencies: [\"RxSwift\", .product(name: \"RxCocoa\", package: \"RxSwift\")]),\n  ]\n)\n```\n\n```bash\n$ swift build\n```\n\nTo build or test a module with RxTest dependency, set `TEST=1`.\n\n```bash\n$ TEST=1 swift test\n```\n\n### Manually using git submodules\n\n* Add RxSwift as a submodule\n\n```bash\n$ git submodule add git@github.com:ReactiveX\u002FRxSwift.git\n```\n\n* Drag `Rx.xcodeproj` into Project Navigator\n* Go to `Project > Targets > Build Phases > Link Binary With Libraries`, click `+` and select `RxSwift`, `RxCocoa` and `RxRelay` targets\n\n## References\n\n* [http:\u002F\u002Freactivex.io\u002F](http:\u002F\u002Freactivex.io\u002F)\n* [Reactive Extensions GitHub (GitHub)](https:\u002F\u002Fgithub.com\u002FReactive-Extensions)\n* [RxSwift RayWenderlich.com Book](https:\u002F\u002Fstore.raywenderlich.com\u002Fproducts\u002Frxswift-reactive-programming-with-swift)\n* [RxSwift: Debunking the myth of hard (YouTube)](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=GdvLP0ZAhhc)\n* [Boxue.io RxSwift Online Course](https:\u002F\u002Fboxueio.com\u002Fseries\u002Frxswift-101) (Chinese 🇨🇳)\n* [Expert to Expert: Brian Beckman and Erik Meijer - Inside the .NET Reactive Framework (Rx) (video)](https:\u002F\u002Fyoutu.be\u002FlooJcaeboBY)\n* [Reactive Programming Overview (Jafar Husain from Netflix)](https:\u002F\u002Fyoutu.be\u002F-8Y1-lE6NSA)\n* [Subject\u002FObserver is Dual to Iterator (paper)](http:\u002F\u002Fcsl.stanford.edu\u002F~christos\u002Fpldi2010.fit\u002Fmeijer.duality.pdf)\n* [Rx standard sequence operators visualized (visualization tool)](http:\u002F\u002Frxmarbles.com\u002F)\n* [Haskell](https:\u002F\u002Fwww.haskell.org\u002F)\n","RxSwift 是一个用于 Swift 语言的响应式编程库，它基于 Reactive Extensions 标准实现。该项目通过 Observable 接口提供了一种通用的计算抽象方式，使得开发者能够轻松地处理异步数据流和事件，支持 KVO 观察、异步操作、UI 事件等多种数据源的统一处理。RxSwift 的设计目标是既保持 Rx 原始的精神与命名约定，同时也为 Swift 开发者提供更加自然流畅的 API 体验。适用于 iOS、macOS、tvOS、watchOS 以及 Linux 平台上的应用程序开发场景，特别适合需要高效管理和组合复杂异步逻辑的应用程序。",2,"2026-06-11 03:08:10","top_language"]