# rage

> A modern Ruby framework designed for non-blocking I/O and simpler infrastructure

- **URL**: https://www.freshcrate.ai/projects/rage
- **Author**: rage-rb
- **Category**: Frameworks
- **Latest version**: `v1.25.0` (2026-06-03)
- **License**: MIT
- **Source**: https://github.com/rage-rb/rage
- **Homepage**: https://rage-rb.dev
- **Language**: Ruby
- **GitHub**: 1,338 stars, 41 forks
- **Registry**: github
- **Tags**: `ruby`

## Description

A modern Ruby framework designed for non-blocking I/O and simpler infrastructure

## Recent releases

| Version | Date | Urgency | Changes |
| --- | --- | --- | --- |
| `v1.25.0` | 2026-06-03 | High | ## v1.25.0  **Fiber Scheduler Improvements**  - **Fiber Interrupt Support** - Implements `FiberScheduler#fiber_interrupt` with generation tracking to prevent stale fiber resumes. - **Background Worker Pool** - Adds `FiberScheduler#blocking_operation_wait` to offload blocking native operations to background threads, preventing them from stalling the main server thread.  **Security Hardening**  - **HTTP Token Authentication** - Reject malformed or empty `Authorization` headers that lack t |
| `v1.24.0` | 2026-05-12 | High | # v1.24.0  ## Highlights  **Periodic Task Scheduling** by @Abishekcs  - Schedule recurring background tasks with `config.deferred.schedule`. Includes automatic leader election across worker processes. **Customizable Retry Logic** by @anuj-pal27 - Control retry behavior per task with `max_retries` and override `retry_interval` to customize backoff per exception type. **Centralized Error Reporting** by @Digvijay-x1 - Exceptions from controllers, deferred tasks, Cable, SSE, and more are now f |
| `v1.23.0` | 2026-04-15 | High | This release introduces two major features: **unbounded SSE streams** and **custom renderers**.  ### Unbounded SSE Streams  SSE streams can now stay open indefinitely and receive broadcasts from anywhere in your application:  ```ruby class NotificationsController < RageController::API   def subscribe     render sse: Rage::SSE.stream("notifications")   end end  # broadcast from anywhere in your app Rage::SSE.broadcast("notifications", { message: "New order received" }) ```  ### C |
| `v1.22.0` | 2026-03-12 | Medium | This release adds support for Server-Sent Events, allowing you to stream data to clients:   ```ruby stream = Enumerator.new do \|y\|   "Hello, world!".each_char do \|ch\|      sleep 1     y << ch    end end  render sse: stream   ```  Check out the https://github.com/rage-rb/datastar-example for an example integration with Datastar.  ## Also In This Release * Shared Components in the @auth tag by @Piyush-Goenka in https://github.com/rage-rb/rage/pull/221 * [Cable] Add `stop_stream_fr |
| `v1.21.0` | 2026-02-25 | Low | ## What's Changed  Your coding agent doesn't know Rage yet. **v1.21.0** fixes that.  Run `rage skills install` to give your agent an official skill set for working with Rage applications. It's the fastest way to get started.  Other changes in this release:  **Added:** - RSpec test helpers for Cable apps                                                       - Support for `stream_for`/`broadcast_to` in Cable apps                                                       - Inline context sup |
| `v1.20.0` | 2026-01-20 | Low | Rage v1.20 continues its observability journey and introduces `Rage::Telemetry` - a built-in telemetry system that lets developers observe and measure what's happening inside the application. The first user of `Rage::Telemetry` is the [official OpenTelemetry integration](https://github.com/rage-rb/opentelemetry-instrumentation) to be released and available in the following weeks.  Other changes include:  * Add `Response#status` method for direct status code access * Expose metadata inside |
| `v1.19.0` | 2025-12-03 | Low | Rage v1.19 brings the first wave of observability improvements, starting with enhanced logging capabilities:  * **Global Log Context** - Add dynamic data to all log entries in a centralized way * **External Loggers** - Connect `Rage.logger` directly to external observability platforms * **Enhanced Deferred Logging** - Deferred tasks now have access to complete log context, not just request IDs  Learn more: https://rage-rb.dev/docs/logging  **Full Changelog**: https://github.com/rage-rb/r |
| `v1.18.0` | 2025-10-29 | Low | ## What's Changed  ### Added  Rage now includes a lightweight [pub/sub event system](https://rage-rb.dev/docs/event-system) for building decoupled, event-driven applications.  Key Features:  - Define events using Ruby's Data class - Subscribe to parent classes or modules to handle multiple related events - Run subscribers in the background with automatic retries - Visualize event-subscriber relationships  https://rage-rb.dev/docs/event-system  ### Fixed  Fixed `Fiber.await` to c |
| `v1.17.0` | 2025-08-20 | Low | Rage v1.17 introduces `Rage::Deferred`, an in-process background job queue that offloads long-running tasks from the request pipeline, improving client response times. Key features include:  * **Data Durability:** A disk-based write-ahead log ensures task replay after server restarts or crashes. * **Automatic Retries:** Tasks are retried up to 5 times with exponential backoff on failure. * **Backpressure:** Prevents uncontrolled queue growth by blocking new tasks when the queue exceeds a lim |
| `v1.16.0` | 2025-05-20 | Low | ## What's Changed  Rage v1.16 introduces a new WebSocket protocol - [RawWebSocketJson](https://rage-rb.pages.dev/Rage/Cable/Protocols/RawWebSocketJson). This protocol enables you to interact with `Rage::Cable` applications using the native `WebSocket` object, eliminating the need for the `@rails/actioncable` dependency.  Other changes:  * Feature: Added the `after_initialize` hook by @serhii-sadovskyi in https://github.com/rage-rb/rage/pull/149 * [OpenAPI] Correctly handle the `key` optio |

## Citation

- HTML: https://www.freshcrate.ai/projects/rage
- Markdown: https://www.freshcrate.ai/projects/rage.md
- Dependencies JSON: https://www.freshcrate.ai/api/projects/rage/deps

_Generated by freshcrate.ai. Indexes github releases for AI-agent ecosystem packages._
