riverqueue/river

Fast and reliable background jobs in Go

View on GitHub ↗Jump to charts ↓Open shareable report

Summary Information

Updated 50 minutes ago
Added to GitGenius on September 12th, 2026
Created on November 8th, 2023
Open Issues & Pull Requests: 58 (+0)
GitHub issues: Enabled
Number of forks: 178
Total Stargazers: 5,663 (+0)
Total Subscribers: 21 (+0)

Repository Insights (GitGenius)

Median issue/PR response: 6.3 hours
Mean response time: 8.7 days
90th percentile: 7.7 days
Tracked items: 167

How this project is maintained

Around half of the issues opened in the past year never receive a reply. 100% of open issues come from outside the core team, so the backlog reflects real-world use rather than internal planning. Only 6% of issues opened in the past year have been closed. Three people close 86% of everything that gets resolved.

Charts & Analytics

Fetching additional details & charts...

Issue Activity (beta)

Open issues: 33
New in 7 days: 0
Closed in 7 days: 0
Avg open age: 437 days
Stale 30+ days: 30
Stale 90+ days: 27

Recent activity

Opened in 7 days: 0
Closed in 7 days: 0
Comments in 7 days: 0
Events in 7 days: 0

Top labels

  • bug (18)
  • enhancement (9)
  • documentation (5)
  • wontfix (5)
  • needs db migration (3)
  • pro (3)
  • duplicate (1)

Detailed Description

River is a background job queue for Go that uses Postgres as its storage backend.

River solves the problem of reliably processing asynchronous work in Go applications by leveraging Postgres as a single source of truth for both application data and job state. Its core approach centers on transactional enqueueing: jobs are inserted within the same database transaction as application changes, ensuring that jobs are enqueued only if their transaction commits and are rolled back if it fails. This eliminates entire classes of distributed systems problems where jobs might be enqueued but the application state fails to persist, or vice versa. Jobs remain invisible to workers until their transaction commits, providing strong consistency guarantees.

River suits Go applications that already use Postgres and want to avoid adding a separate message queue system. It works well for teams preferring to keep application data and job state in a single database, reducing operational complexity. The tool is particularly valuable when job reliability and transactional consistency matter more than the flexibility of language-agnostic queue systems. It supports multiple queues for isolation between components, batch job insertion for efficiency, periodic and cron jobs, scheduled jobs, job cancellation and snoozing, unique jobs by various criteria, and a web UI for inspection and management. An insert-only client mode allows applications to enqueue jobs without processing them locally.

The project maintains active development with regular commits addressing bug fixes and feature additions. The maintainers respond to issues and pull requests consistently, indicating ongoing engagement with the user community. The codebase shows attention to testing and documentation, with examples and guides covering common usage patterns. Development appears focused on stability and reliability rather than rapid feature expansion, reflecting the project's positioning as a production-grade system.