finds.dev← search

// the find

ReactiveX/RxGo

★ 5,088 · Go · MIT · updated Jan 2025

Reactive Extensions for the Go language.

RxGo brings ReactiveX-style observable streams to Go, built on top of goroutines and channels rather than fighting them. It's for Go developers who want pipeline-style async data processing with operators like Map, Filter, FlatMap, and Retry without writing the channel plumbing themselves. The v2 rewrite is a significant improvement over v1, though it predates Go generics.

The pipeline model maps cleanly onto Go's native concurrency primitives — channels are first-class, not hidden. The WithPool/WithCPUPool options make parallelizing a single operator stage genuinely easy without restructuring your whole pipeline. The Serialize operator solving the parallel-but-ordered problem (like the tax number example) is a real, practical feature that's annoying to implement yourself. The assert API for testing observable pipelines is a thoughtful addition that most reactive libraries skip entirely.

The API uses interface{} throughout because it predates generics — you're doing type assertions everywhere, which kills both readability and compile-time safety; a generics rewrite is still pending years after Go 1.18 shipped. The maintainer stepped away for a significant period and just returned in 2025, so the commit history has gaps and several open issues have gone stale. The hot/cold Observable distinction and Connectable Observables add real conceptual overhead — this isn't a gentle learning curve for Go developers unfamiliar with Rx semantics. The backpressure story is limited: Drop or block, no bounded buffer with configurable overflow strategies.

View on GitHub →

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →