Changelog

Improving AppSignal, one deploy at a time.

Sep 10, 2026

Ruby gem v4.10.3

Ruby4.10.3

Fixed

  • Fix the sanitization of function arguments in SQL statements.

    Before this release, SQL sanitization of function arguments stripped out parts of the SQL statement after the function argument list.

View the Ruby gem v4.10.3 changelog for more information.

Sep 09, 2026

Support Grape 4 and other improvements

Ruby4.10.2

Added

  • Add support for Grape 4. On Grape 4, every request through a Grape API raised a NoMethodError. Applications on Grape 3 and below were not affected.

    On Grape 4, the action name and the reported path now describe the endpoint's full route, so they include the API prefix, the path version and the mount point. They also no longer end in a trailing slash when the endpoint declares no path of its own, so an endpoint reported as GET::My::Api#/users/:id/ is now reported as GET::My::Api#/users/:id. Action names on Grape 3 and below do not change.

Changed

  • Update the agent to handle high traffic apps. On high-traffic apps that would exceed the maximum accepted internal payload size, send data to the Push API more frequently.

Fixed

  • Load the host Rails application before the appsignal demo command reads the AppSignal configuration. This matches the behavior of appsignal diagnose.

    Thanks @Guflly for your contribution!

  • Fix events showing as unknown in long-running applications. An application process that kept running for thirty days without restarting could lose the names and queries of the events it recorded, both in slow traces and in the "Slow events" panel.

  • Prevent gc events from appearing in the "Slow events" panel.

  • Report Delayed Job jobs that fail to load. Before this change, a job whose payload could not be deserialized was not reported to AppSignal at all.

    This can happen when a deploy removes or renames a job class while jobs of that class are still queued. Those jobs are now reported as failed, with the Delayed::DeserializationError they raised, and are named after the class recorded in the job's handler. When even that cannot be read, they are named DelayedJobInternal.

  • Record a single event for a bulk enqueue of Active Job jobs. Before this change, enqueuing jobs with ActiveJob.perform_all_later would record an event for the batch and, if the adapter was instrumented with AppSignal, another event for each job in it. A job that slices a large collection and enqueues it in batches was therefore reported with an event per job enqueued, where before version 4.9.0 it had one event per batch.

    A bulk enqueue is now recorded as a single enqueue_all.active_job event, named after the job class when every job in the batch shares one.

View the Ruby gem v4.10.2 changelog for more information.

Sep 09, 2026

Update the agent in the 3.x series

Ruby3.13.2

Changed

  • Update the agent to handle high traffic apps. On high-traffic apps that would exceed the maximum accepted internal payload size, send data to the Push API more frequently.
  • Update the agent from version 0.35.19 to version 0.37.0. The 3.x series of the Ruby gem was several agent releases behind, so this update also brings the improvements from every agent release in between. Those include better sanitisation of SQL queries, host metric collection that keeps working when a disk mount is frozen, and no more leftover [timeout] processes on Alpine Linux containers.

Fixed

  • Fix events showing as unknown in long-running applications. An application process that kept running for thirty days without restarting could lose the names and queries of the events it recorded, both in slow traces and in the "Slow events" panel.
  • Prevent gc events from appearing in the "Slow events" panel.

View the Ruby gem v3.13.2 changelog for more information.

Aug 21, 2026

Pre-release: collector mode

Ruby5.0.0.rc.1

Added

  • Add a collector_endpoint configuration option (APPSIGNAL_COLLECTOR_ENDPOINT environment variable) that puts the integration in collector mode. In collector mode AppSignal reports traces, metrics and logs to an AppSignal Collector, over OTLP/HTTP.

    Collector mode requires Ruby 3.1 or newer, and the OpenTelemetry gems, which are not installed by default. Add the appsignal-opentelemetry gem alongside appsignal to install them. When they are missing or too old, AppSignal logs a warning and keeps reporting through its agent.

  • Add configuration options that map to OpenTelemetry resource attributes in collector mode: service_name, filter_attributes, filter_function_parameters, filter_request_query_parameters, filter_request_payload, response_headers, send_function_parameters, send_request_query_parameters and send_request_payload.

    In collector mode, existing options are passed to the collector as resource attributes as well: name, environment, hostname, revision, ignore_actions, ignore_errors, ignore_namespaces, request_headers, filter_session_data and send_session_data.

    Setting any of these without collector_endpoint, or setting filter_parameters, filter_metadata or send_params with it, logs a warning at startup.

Added

  • Add the appsignal-opentelemetry gem. It installs the OpenTelemetry gems that AppSignal needs to run in collector mode. Add it alongside appsignal to opt into collector mode with a single gem instead of listing each OpenTelemetry gem yourself:

    Ruby
    gem "appsignal"
    gem "appsignal-opentelemetry"

    Collector mode requires Ruby 3.1 or newer, so this gem does too. Its version stays in lockstep with the appsignal gem.

View the Ruby gem v5.0.0.rc.1 changelog for more information.

Aug 20, 2026

Honor custom CA file path during installation

Ruby4.10.1

Fixed

  • Use the CA certificate configured in APPSIGNAL_CA_FILE_PATH to download the AppSignal agent when installing this gem.

    The gem downloads the agent from our servers over HTTPS during installation. It always used the CA certificate bundled with the gem to verify that connection, whatever the value of the ca_file_path configuration option. This meant the installation failed behind a proxy that intercepts TLS connections, such as Zscaler, even when APPSIGNAL_CA_FILE_PATH pointed to a CA bundle that trusts the proxy.

    The bundled CA certificate is still used when APPSIGNAL_CA_FILE_PATH is not set.

    Thanks @Cosmo for your contribution!

View the Ruby gem v4.10.1 changelog for more information.

Aug 10, 2026

Fix Excon instrumentation and other improvements

Ruby4.10.0

Changed

  • Fix Excon requests being reported as taking almost no time. An Excon request is now recorded as a single request.excon event covering the whole request, so the event lasts as long as the request did. The response.excon, retry.excon and error.excon events no longer exist. AppSignal also no longer registers itself as Excon's instrumentor.

  • Report which template was rendered for collection and layout render events.

  • Name ROM query events after ROM, rather than after the database they ran against. A query made through ROM was reported as query.postgres, or query.sqlite, or whatever else the application's database was. Those queries are now all reported as query.rom.

    Events that dry-monitor reports and AppSignal has no formatter for are now named after their event id followed by .dry, so an event reported as foo becomes foo.dry. They had no group at all before.

    If you have a dashboard, trigger or saved filter that names one of these events, point it at the new name.

Fixed

  • Fix a rare hang when stopping AppSignal in an application that sends check-ins. Stopping AppSignal waits for any check-in events that have not been transmitted yet, and it could wait forever instead of finishing.

  • Fix event formatters that register or unregister themselves. Calling unregister on the formatter itself, as in MyFormatter.unregister("my.event"), did nothing at all. The formatter stayed registered, and no error was raised and nothing was logged to say so. Calling register on the formatter itself stored it where AppSignal never looked for it, so it was never used to format an event.

    Registering and unregistering through Appsignal::EventFormatter itself, as in Appsignal::EventFormatter.unregister("my.event", MyFormatter), was not affected and keeps working the same way.

View the Ruby gem v4.10.0 changelog for more information.

Jul 16, 2026

Instrument job enqueues, Faraday, and other improvements

Ruby4.9.0

Added

  • Improve Faraday support. AppSignal now instruments Faraday requests automatically, without double-instrumenting the underlying HTTP client. Turn it off with the instrument_faraday option. Read more in our Faraday integration docs.

  • Add config options to turn individual integrations off. Set instrument_sidekiq, instrument_shoryuken, instrument_que, instrument_resque, instrument_delayed_job, instrument_active_job, instrument_excon or instrument_mongo to false to disable that integration entirely. This turns off both the instrumentation of the jobs or requests and the enqueue instrumentation for that integration. They all default to true. Each can also be set through its environment variable, such as APPSIGNAL_INSTRUMENT_SIDEKIQ.

  • Instrument background job enqueues. Enqueuing a job now records an enqueue event on the active transaction, so enqueues made from within a web request or another job show up in the event timeline. This is recorded for Sidekiq (enqueue.sidekiq), Que (enqueue.que, plus bulk_enqueue.que for bulk enqueues on Que 2), Resque (enqueue.resque), Shoryuken (enqueue.shoryuken) and Delayed Job (enqueue.delayed_job). Each event is titled after the job being enqueued.

    For Active Job, the enqueue.active_job event is now recorded by AppSignal's own instrumentation rather than by Rails' native enqueue.active_job notification. The native notification is suppressed so the enqueue is recorded once, and the event is now titled after the job being enqueued.

    These enqueue events can be turned off with the enable_job_enqueue_instrumentation config option. Set it to false to stop recording enqueue events across all integrations, without affecting the instrumentation of the jobs themselves. It defaults to true and can also be set through the APPSIGNAL_ENABLE_JOB_ENQUEUE_INSTRUMENTATION environment variable.

  • Report the grape gem version in the environment metadata. For more information, see our environment metadata docs.

Fixed

  • Instrument HTTP.rb chained requests on http 6. Requests made through a chained client -- HTTP.follow.get(...), HTTP.headers(...).get(...), and so on -- go through HTTP::Session rather than HTTP::Client, and were not being recorded. They now produce a request.http_rb event like any other request.

View the Ruby gem v4.9.0 changelog for more information.

Jun 23, 2026

Host metrics collection zombie process fix

Ruby4.8.6

Fixed

  • Fix host-metrics leaking zombie [timeout] processes in Alpine linux containers.

    Before this release AppSignal agent relied on a proper init process that reaps child processes killed by system timeout. Now the agent terminates and reaps unresponsive child processes in host-metrics collection and a subreaper is no longer required.

View the Ruby gem v4.8.6 changelog for more information.

Jun 02, 2026

Filter internal Sidekiq data, and fix bugs

Ruby4.8.5

Changed

  • Exclude more Sidekiq internal job attributes (cattr, tags, retry_for and unique_for) from the tags reported for Sidekiq jobs.

Fixed

  • Continue reporting non-disk host metrics when a mount is frozen.
  • Prevent a NoMethodError in the Active Job, Rake, Sidekiq, Delayed Job, and WebMachine instrumentations when the creation of an AppSignal transaction is interrupted by process shutdown signals.

View the Ruby gem v4.8.5 changelog for more information.

Feb 05, 2026

Fix install on Ruby 4 and log configure

Ruby4.8.2

Added

  • Log where Appsignal.configure is called. When a warning is emitted about Appsignal.configure being called from an application where config/appsignal.yml or config/appsignal.rb exist, log the location from which Appsignal.configure was called alongside the location of the configuration file.

Fixed

  • Fix the bundle exec appsignal install CLI command on Ruby 4 by removing the dependency on the ostruct gem, which is no longer part of the standard library.

View the Ruby gem v4.8.2 changelog for more information.

Dec 04, 2025

Ruby gem v4.8.0

Ruby4.8.0

Added

  • Report events from Rails 8.1's Structured Event Reporting (ActiveSupport::EventReporter) as logs.

Fixed

  • Fix ActiveSupport::Notifications event instrumentation on Rails 8.1 when no listeners are registered.

View the Ruby gem v4.8.0 changelog for more information.

Oct 17, 2025

Improvements to our internal logger

Ruby4.7.5

Fixed

  • Fix an issue with loggers not supporting a formatter on Rails boot. This will prevent the AppSignal logger config from running into an error if the logger configuration is added to config/application.rb or one of the environments in config/environments/.
  • Do not log long (error) messages to the internal AppSignal log. If an error like ActionController::BadRequest occurred and the error message contained the entire file upload, this would grow the appsignal.log file quickly if the error happens often. Internal log messages are now truncated by default.

View the Ruby gem v4.7.5 changelog for more information.

Oct 01, 2025

Detect log format automatically and CodeOwnership instrumentation fixes

Ruby4.7.3

Changed

  • Detect the log format automatically. We now detect if a log line is in the JSON, Logfmt or plaintext formats. No further config needed when calling our logger, like so:

    Ruby
    logger = Appsignal::Logger.new("gruop")
    logger.info("message")

Fixed

  • Handle unowned files in CodeOwnership gem integration. AppSignal will not emit an error log line if no Team can be found for a backtrace.

    Thanks @fatkodima for your contribution!

View the Ruby gem v4.7.3 changelog for more information.

Sep 19, 2025

Support for CodeOwnership gem and fixed Rails version detection

Ruby4.7.1

Added

  • Add support for the CodeOwnership gem, which allows engineering teams to declare ownership of specific parts of a codebase.

    When an error is reported, the AppSignal gem will tag the transaction with the owner of the file that caused the error.

    This feature is enabled by default. To disable it, set the instrument_code_ownership configuration option to false.

Changed

  • Do not patch Rack::Events when using recent Rack versions. When using versions 3.2.1 and above, which contain a fix for the bug where using Rack::Events breaks requests with streaming bodies, use Rack::Events directly, instead of our patched subclass.

Fixed

  • Fix Rails version detection when only one of Rails's gems is present.

    This prevents loading errors when non-Rails code defines a Rails constant without the full Rails framework.

View the Ruby gem v4.7.1 changelog for more information.

$appsignal install

Make your next crash make sense.

Free for 30 days. No credit card. Two-minute install.