Changelog

Improving AppSignal, one deploy at a time.

Oct 15, 2025

UI Fixes and Search Improvements

Fixed

  • Add a fix for a minor UI bug in the PHP and Go OpenTelemetry app installation flows.
  • Ensure that in the UI, we handle the alert openedAt value being null.
  • Remove the leading and trailing whitespace when submitting a search query.
Oct 15, 2025

Auto detect log format, support ElasticSearch spans

Node.js3.7.2

Added

  • Add a log format option for autodetection the log format.
  • Add support for native OpenTelemetry spans from @elastic/transport package in Node.js.

Changed

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

    JavaScript
    const logger = Appsignal.logger("app"); logger.info("message");

Fixed

  • Fix 'unknown' events being reported for some HTTP routes.

View the Node.js package v3.7.2 changelog for more information.

Oct 09, 2025

External collector and logging support

Python1.6.0

Added

  • Support logging through the external collector experimental feature. When the collector_endpoint configuration option is provided, the OpenTelemetry stack will be automatically configured to instrument logs.

    The logging module will be automatically instrumented, such that log lines emitted through loggers that propagate to the root logger will be automatically sent to AppSignal. To disable this behaviour, add "logging" to the disable_default_instrumentations configuration option list.

  • Support usage with external collector. When the collector_endpoint configuration option is provided, instead of booting up the AppSignal agent bundled with the application, the OpenTelemetry stack will be configured to send data to the given collector.

    This is an experimental feature. The following functionality is not currently supported when using the collector:

    • NGINX metrics
    • StatsD metrics
    • Host metrics

    Some configuration options are only supported when using the agent or when using the collector. A warning will be emitted if a configuration option that is only supported by one is set while using the other.

View the Python package v1.6.0 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 30, 2025

Improve backtrace path matching

JavaScript@appsignal/javascript@1.6.1

Added

  • Allow functions as backtrace matchers. Alongside regular expressions, you can also provide custom functions to match and replace paths in the backtrace:

    JavaScript
    const appsignal = new Appsignal({ // ... matchBacktracePaths: [(path) => { if (path.indexOf("/bundle/") !== -1) { return "bundle.js" } }] })

    The function must take a backtrace line path as an argument. When the function returns a non-empty string, the string will be used as the path for that backtrace line. Otherwise, the path will be left unchanged.

Fixed

  • Fix matching on backtrace paths containing spaces.

    When using matchBacktracePaths, when a backtrace line path contains a space, it will now match correctly against the whole path.

View the AppSignal JavaScript javascript v1.6.1 changelog for more information.

Sep 25, 2025

backtrace copy

Added

  • Users can now copy the sample backtrace line with a click of a button. (This feature was requested in our Discord channel).

    Screenshot AppSignal UI showing a copy button at the end of a backtrace line

Fixed

  • Fixed search functionality for queries containing special characters (like BSON::ObjectId('.)
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.

Sep 09, 2025

MCP Anomaly Incidents

Added

  • MCP get_incident tool now supports both exception and anomaly incidents

Fixed

  • Ensure the graph export popover isn’t cut off when placed at the bottom of the page.
Sep 08, 2025

MCP and product updates

Added

  • Added a link to the docs in the trace timeline overlay explaining how to add additional instrumentation
  • Added Anomaly incidents MCP tool
  • Added a toggle switch to show OpenTelemetry internal attributes
    Screenshot AppSignal UI showing a toggle to show internal tracing attributes

Changed

  • We've changed the MCP Token UI to better reflect the allowed tools. Instead of sections that can have read/write/delete rights, we're now showing each individual tool with a checkbox for exposure.
    Screenshot AppSignal UI showing a list of MCP tools and a checkbox to expose them
Sep 01, 2025

Log trigger filtering

Added

  • Add functionality that allows filtering log triggers by name, source, or creator.
    Screenshot of log trigger filtering
Aug 29, 2025

Support streaming bodies and other improvements

Ruby4.7.0

Added

  • Add Sidekiq worker-level job status metric: worker_job_count. This new counter metric's status tag will be processed for each job that's processed and reports another counter with the failure status if the job encountered an error.

Fixed

  • Support streaming bodies. AppSignal's Rack instrumentation now supports streaming bodies in responses, such as those produced by Async::Cable. This fixes an issue where AppSignal's Rack instrumentation would cause requests with streaming bodies to crash.

    If you use our Rack instrumentation through a framework that is automatically instrumented by AppSignal, such as Rails, Hanami, Padrino or Sinatra, this fix is applied automatically.

    If your application instruments Rack manually, you must remove the following line from your application's initial setup:

    Ruby
    use Rack::Events, [Appsignal::Rack::EventHandler.new]

    And replace it with the following line:

    Ruby
    use Appsignal::Rack::EventMiddleware
  • Avoid instrumenting Rails when AppSignal is not active. If AppSignal is configured to start when the Rails application loads, rather than after it has initialised, only add Rails' instrumentation middlewares if AppSignal was actually started.

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

Aug 28, 2025

MCP improvments, and Logs Updates

Added

  • Add 3rd party integration links (e.g. GitHub, Jira) to MCP get_incident tool. The AI Agent can use this to tie incidents to external issues.
  • Add uptime monitoring metrics to the MCP metric discovery tool
  • Support ANSI colors in Logs page
  • Persist the option to hide the logs chart between queries.

Start your free trial

Don’t let the bad bugs bite. Try AppSignal for free.

AppSignal offers a 30-day free trial, no credit card is required. All features are available in all plans. Start monitoring your application in just a few clicks!