Changelog

Improving AppSignal, one deploy at a time.

Mar 20, 2025

Add mix task to check if the extension install succeeded

Elixir2.15.3

Added

  • Add a mix task to check the extension install.

    Run mix appsignal.check_install to see if the NIF and agent were successfully installed. If not, it will return with exit code 1. Use this in your CI or build step to check if AppSignal was installed correctly before deploying or starting your application.

Fixed

  • Fix an issue where the check-in scheduler would crash when failing to send a check-in due to a network error.

View the Elixir package v2.15.3 changelog for more information.

Mar 11, 2025

Delay agent reboots

Elixir2.14.1

Changed

  • Delay and eventually halt agent reboots by the extension.

    The AppSignal extension is responsible for booting the AppSignal agent. If communication with the agent is lost, the extension is responsible for rebooting it.

    In certain scenarios, such as when several processes with different AppSignal configurations are misconfigured to share the same working directory, the processes' extensions can enter a loop of rebooting and killing each others' agents. These short-lived agents may then attempt to repeatedly send pending payloads to AppSignal in quick succession.

    This change causes the extension to delay each reboot of its agent by one additional second, and to no longer attempt to reboot the agent after the tenth reboot, slowing down and eventually breaking this loop.

View the Elixir package v2.14.1 changelog for more information.

Feb 24, 2025

Elixir package v2.14.0

Elixir2.14.0

Changed

  • Update bundled trusted root certificates

Removed

  • Remove the OpenTelemetry beta feature in favor of the new AppSignal collector. If you are using the AppSignal agent to send OpenTelemetry data in our public beta through the /enriched endpoint on the agent's HTTP server, please migrate to the collector to continue using the beta. The collector has a much better implementation of this feature for the beta.

Fixed

  • Fix an issue where the AppSignal agent fails to download during installation, by restricting the Hackney dependency to version 1.21.0 or lower.

View the Elixir package v2.14.0 changelog for more information.

Nov 06, 2024

Fix check-ins not being sent and other improvements

Elixir2.13.1

Added

  • Add reported_by tag to errors reported by the legacy error backend. This makes it easier to understand whether an error is being reported by the error backend.
  • Set the app revision config option for Scalingo deploys automatically. If the CONTAINER_VERSION system environment variable is present, it will use used to set the revision config option automatically. Overwrite it's value by configuring the revision config option for your application.

Changed

  • Change the primary download mirror for integrations.

Fixed

  • Fix parentheses warning for Tesla on Elixir 1.17.x.

  • Fix an issue where, after a certain amount of time, check-ins would no longer be sent.

    This issue also caused the default Hackney connection pool to be saturated, affecting other code that uses the default Hackney connection pool.

View the Elixir package v2.13.1 changelog for more information.

Sep 26, 2024

Heartbeat check-ins and other improvements

Elixir2.13.0

Added

  • Add support for heartbeat check-ins.

    Use the Appsignal.CheckIn.heartbeat method to send a single heartbeat check-in event from your application. This can be used, for example, in a GenServer's callback:

    Elixir
    @impl true def handle_cast({:process_job, job}, jobs) do Appsignal.CheckIn.heartbeat("job_processor") {:noreply, [job | jobs], {:continue, :process_job}} end

    Heartbeats are deduplicated and sent asynchronously, without blocking the current thread. Regardless of how often the .heartbeat method is called, at most one heartbeat with the same identifier will be sent every ten seconds.

    Pass continuous: true as the second argument to send heartbeats continuously during the entire lifetime of the current process. This can be used, for example, during a GenServer's initialisation:

    Elixir
    @impl true def init(_arg) do Appsignal.CheckIn.heartbeat("my_genserver", continuous: true) {:ok, nil} end

    You can also use Appsignal.CheckIn.Heartbeat as a supervisor's child process, in order for heartbeats to be sent continuously during the lifetime of the supervisor. This can be used, for example, during an Application's start:

    Elixir
    @impl true def start(_type, _args) do Supervisor.start_link([ {Appsignal.CheckIn.Heartbeat, "my_application"} ], strategy: :one_for_one, name: MyApplication.Supervisor) end

Changed

  • Send check-ins concurrently. When calling Appsignal.CheckIn.cron, instead of blocking the current process while the check-in events are sent, schedule them to be sent in a separate process.

View the Elixir package v2.13.0 changelog for more information.

Aug 26, 2024

Fix Ecto transactions in parallel preloads

Elixir2.12.3

Fixed

  • Make Appsignal.Ecto.Repo's default_options/1 function overridable. If your Ecto repo uses Appsignal.Ecto.Repo and implements its own default_options/1, it must call super to merge its default options with those of Appsignal.Ecto.Repo:

    Elixir
    defmodule MyEctoRepo use Appsignal.Ecto.Repo def default_options(operation) do super(operation) ++ [ # ... your default options here ... ] end end
  • Fix an issue where Ecto transactions in parallel preloads would not be instrumented correctly when using Appsignal.Ecto.Repo, causing the query in the Ecto transaction to not be instrumented and the sample to be incorrectly closed as an earlier time.

View the Elixir package v2.12.3 changelog for more information.

Aug 14, 2024

Rename heartbeats to cron check-ins

Elixir2.12.2

Changed

  • Rename heartbeats to cron check-ins. Calls to Appsignal.heartbeat and Appsignal.Heartbeat should be replaced with calls to Appsignal.CheckIn.cron and Appsignal.CheckIn.Cron, for example:

    Elixir
    # Before Appsignal.heartbeat("do_something", fn -> do_something() end) # After Appsignal.CheckIn.cron("do_something", fn -> do_something end)

Deprecated

  • Calls to Appsignal.heartbeat and to methods in Appsignal.Heartbeat will emit a deprecation warning at compile-time.

View the Elixir package v2.12.2 changelog for more information.

Jun 25, 2024

Elixir package v2.12.1

Elixir2.12.1

Fixed

  • When running the installation script on Microsoft Windows, some components threw an error. AppSignal doesn't support Windows, so the installation script won't run on Windows anymore. Preventing errors from raising.

View the Elixir package v2.12.1 changelog for more information.

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!