Plugins
The samber/ro library comes with a rich ecosystem of plugins that extend its core functionality. These plugins provide specialized operators and utilities for common use cases like data encoding, HTTP requests, observability, file system operations, and much more.
Each plugin is designed to be lightweight and focused on a specific domain, making it easy to add just the functionality you need to your reactive streams.
Referenceโ
Introduction
Extend ro with powerful plugins for bytes, encoding, HTTP, observability, and more
Bytes
Byte manipulation operators for ro โ Go reactive streams. Convert, slice, search, and transform byte streams; emit results as Observable values.
Strings
String operators for ro โ Go reactive streams. Trim, split, replace, case-convert, and search text using Go's strings package on Observable values.
iter
Iterator operators for ro โ Go reactive streams. Bridge Go 1.23+ iter.Seq and iter.Seq2 with Observables; convert between push and pull pipelines.
Encoding / JSON
JSON operators for ro โ Go reactive streams. Marshal, unmarshal, and stream JSON documents with encoding/json; emit decoded values as Observables.
Encoding / Base64
Base64 operators for ro โ Go reactive streams. Encode and decode strings or bytes on the fly with encoding/base64; emit results as Observable values.
Encoding / JSON / v2
JSON v2 operators for ro โ Go reactive streams. Marshal and unmarshal with the experimental encoding/json/v2 package; emit results as Observable values.
Encoding / YAML
YAML operators for ro โ Go reactive streams. Marshal, unmarshal, and parse YAML documents with go-yaml; emit decoded values as Observable values.
Encoding / XML
XML operators for ro โ Go reactive streams. Marshal, unmarshal, and stream XML documents with encoding/xml; emit decoded values as Observable values.
Encoding / Gob
Gob operators for ro โ Go reactive streams. Serialize and deserialize Go values with encoding/gob; emit decoded results as Observable values downstream.
Encoding / CSV
CSV operators for ro โ Go reactive streams. Read, write, and parse CSV records on the fly with encoding/csv; emit rows as Observable values.
STDIO
Stdio operators for ro โ Go reactive streams. Read from stdin or files line-by-line and write to stdout or stderr; emit and sink Observable values.
HTTP Client
HTTP client operators for ro โ Go reactive streams. Issue GET, POST, and streaming requests; emit responses, JSON, or bytes as Observable values.
Signal
Signal operators for ro โ Go reactive streams. Listen for SIGINT, SIGTERM, and other OS signals; emit them as Observable values for graceful shutdown.
Regexp
Regexp operators for ro โ Go reactive streams. Match, replace, capture, and split text with Go's regexp; emit results as Observable values downstream.
Sort
Sort operators for ro โ Go reactive streams. Order Observable items with comparators, top-N, or stable sort; emit sorted batches downstream in pipelines.
Strconv
Strconv operators for ro โ Go reactive streams. Parse and format ints, floats, and bools with Go's strconv; emit converted Observable values downstream.
Template
Template processing operators for ro โ Go reactive streams. Render templates, substitute variables, and emit results as Observable values.
Testify
Testify operators for ro โ Go reactive streams. Assert Observable emissions, errors, and completion in unit tests with stretchr/testify helpers.
Cron
Cron scheduling operators for ro โ Go reactive streams. Trigger tasks on cron expressions and emit ticks as Observable values for time-based pipelines.
ICS/iCal
iCalendar operators for ro โ Go reactive streams. Read .ics files or URLs, parse VEVENTs, and emit calendar entries as Observable values for processing.
Proc
Process operators for ro โ Go reactive streams. Spawn external commands, pipe stdin, and emit stdout, stderr, and exit codes as Observable values.
FSNotify
File watcher operators for ro โ Go reactive streams. Detect filesystem changes via fsnotify and emit create, write, and remove events as Observable values.
ozzo/ozzo-validation
Validation operators for ro โ Go reactive streams. Filter or transform Observables using ozzo-validation rules and emit only valid values downstream.
Rate limit (Native)
Rate limit operators for ro โ Go reactive streams. Throttle Observable emissions with x/time/rate token buckets and shape backpressure inline in pipelines.
Rate limit / Ulule
Rate limit operators for ro โ Go reactive streams. Throttle Observable emissions with ulule/limiter store backends and shape backpressure inline.
Logger / log
Standard log operators for ro โ Go reactive streams. Tap pipelines with Go's log package to record Next, Error, and Complete events as values flow through.
Logger / Logrus
Logrus operators for ro โ Go reactive streams. Tap pipelines with sirupsen/logrus to log Next, Error, and Complete events as Observable values flow through.
Logger / Sentry
Sentry operators for ro โ Go reactive streams. Capture pipeline errors and breadcrumbs to Sentry while Observable values flow through your application.
Logger / slog
Slog operators for ro โ Go reactive streams. Tap pipelines with Go's structured slog package to record Next, Error, and Complete events with attributes.
Logger / Zap
Zap operators for ro โ Go reactive streams. Tap pipelines with uber-go/zap for fast, zero-allocation structured logging of Next, Error, and Complete events.
Logger / Zerolog
Zerolog operators for ro โ Go reactive streams. Tap pipelines with rs/zerolog for zero-allocation structured logging of Observable Next and Error events.
samber/hot
Cache operators for ro โ Go reactive streams. Wrap Observables with samber/hot LRU, LFU, and TTL caches and emit cached or computed values downstream.
samber/oops
Error operators for ro โ Go reactive streams. Wrap stream errors with samber/oops context, hints, and stack traces for production-grade diagnostics.
samber/psi
Pub/sub operators for ro โ Go reactive streams. Publish and subscribe across goroutines using samber/psi and emit topic messages as Observable values.
Hyperloglog
HyperLogLog operators for ro โ Go reactive streams. Estimate Observable cardinality with low memory and emit running unique-count approximations downstream.
SIMD (experimental)
SIMD operators for ro โ Go reactive streams. Run AVX/AVX2/AVX512 slice math on amd64 with Go 1.26+ and GOEXPERIMENT=simd, emitted as Observable values.