Node.js release notes

Node.js agent release notes

Tuesday, January 26, 2016 - 14:12 Download


  • Corrected an issue where the agent would sometimes crash looking up the port of the HTTP server that a request came from.

    Previously, the agent assumed the HTTP server would always have an address, unfortunately this isn't the case if the HTTP server's .close() has been called.

Wednesday, January 20, 2016 - 09:54 Download

New Features

  • Added support for the new Response Time Line and better representation of asynchronous data.

    This has many implications in the UI. The first is the Application Overview, in the past we've always just shown "node" and maybe "request queueing" on the response time graph. We now show you an application breakdown like our other language agents! This means you'll be able to see how much time was in HTTP externals, your various datastores, or spent in node itself. Overlaid on this will be your response time as a blue line.

    Next page that has been affected is our Transaction Overview page. Specifically when you click into a Transaction to see more detail. Previously we showed you a breakdown of the top time consumers in that transaction, both as a graph and as a table. Unfortunately that graph didn't show response time and the table would show percentages over 100%. Now, like the Application Overview, you will get a blue response time line and the breakdown table will have numbers that add up much more intuitively!

    Finally, our Transaction Trace view has also been updated. The change is very similar to the changes mentioned above for the breakdown table in the Transaction Overview page. You should no longer see percentages over 100% here either.


  • Transaction trace serialization is now 4x faster than before.

    This speedup will primarily affect those with large, deeply nested transactions. Though small transactions have seen some improvement as well.

Wednesday, December 30, 2015 - 14:00 Download

New features

  • Error totals are now reported.

    The agent now reports metrics that reflect the total number of errors that have occurred in web and background transactions.

Bug fixes

  • Disabling SSL no longer requires the setting of a port.

    Previously, the agent required changing port in the config to 80 when disabling SSL. The agent will now default to port 80 if a port is not supplied and SSL is turned off.

  • Logging functions have been improved.

    The agent will now properly log error stack traces and can rate limit logging messages. To aid in debugging we have provided more logging about the public API.

Wednesday, November 18, 2015 - 14:34 Download

New features

  • Advanced Analytics for APM Errors

    With this release, the agent reports TransactionError events. These new events power the Advanced Analytics for APM Errors feature. The error events are also available through New Relic Insights.

    Advanced Analytics for APM Errors lets you see all of your errors with granular detail, filter and group by any attribute to analyze them, and take action to resolve issues through collaboration.

Bug fixes

  • NEW_RELIC_LOG_ENABLED environment variable is now treated as a boolean.

    Previously, this option was treated as a string, causing it to not work for some use cases. Thanks to @jakecraige for contributing this fix!

Thursday, November 5, 2015 - 15:59 Download


  • newrelic.getBrowserTimingHeader() API now includes the full transaction name.

    Previously, the agent would use a fragment of the transaction name, causing Browser Monitoring transactions and APM transactions to not be cross linked. This change makes the cross linking work correctly.

Thursday, October 29, 2015 - 12:00 Download


  • The New Relic Node Agent now officially supports Node v4!

    We are excited to announce that the New Relic Node Agent officially supports Node v4.x! We've tested the agent across all major versions of Node used by New Relic customers to ensure a quality Node APM experience. New Relic recommends upgrading to Node v4.x for best Node Agent performance.

  • Corrected a parsing issue in the slow sql query parsing step.

    Previously, the agent would not be able to parse inputs to database libraries that specified sql as an option param. This was an issue with node-mysql, namely. The agent now correctly handles this case and registers the queries as expected.

Wednesday, October 14, 2015 - 14:27 Download


  • Removed client support of the RC4 stream cipher for communicating with the New Relic servers.

    The RC4 cipher is considered unsafe and is generally being deprecated.

  • Fix for logging version number in Express instrumentation. Thanks @tregagnon.

    When an unsupported version of Express is detected, we log a message that contains the Express version number. The version is a string and was being logged as a number, resulting in NaN in the log message.

  • Agent is now more safe when recording memory stats.

    Previously, the agent would crash the process as it was gathering memory usage information (i.e. when process.memoryUsage threw an error). This defect is now guarded against with a try-catch.

Monday, September 21, 2015 - 16:00 Download


  • Express and Connect instrumentation will no longer crash on Node 4

    As of ES6, the attribute will track if the function is a getter/a setter/is bound to (i.e. fn.bind().name -> 'bound ' + This new behavior caused the agent to crash on start up due to the way connect and express are instrumented. The agent is now more defensive of future implementations of ES6.

Thursday, August 20, 2015 - 14:00 Download


  • Errors will now respect its transaction's ignore state.

    When ignoring transactions, related errors will now also be ignored.

  • The agent can now handle immutable and frozen error objects.

    In rare cases the agent gets passed an immutable error object. The agent would then crash when trying to tag the error object with the current transaction. We now handle these errors properly.

Thursday, August 6, 2015 - 11:00 Download


  • Corrected a defect in the handling of uncaught exceptions

    This defect was surfaced in versions of node that did not have process._fatalException, namely v0.8. When an uncaught exception occurs, the agent now records the error and passes it along to the other uncaught exception handlers that have been registered. This was inverted before, passing along errors when there were no other error handlers present and rethrowing otherwise.

Monday, July 13, 2015 - 09:42 Download


  • Moved concat-stream from dev dependencies to production dependencies.

    Last week we released v1.21.0 but forgot to move a dependency. We've removed v1.21.0 from and this release contains the changes from that version.

  • Support for display host names (originally in 1.21.0).

    The agent now has configuration settings to allow configuration of custom host names. Set process_host.display_name to enable this.

    If this config is not set, the agent will continue to use the host name found through an os.hostname() call. Should this lookup fail somehow, process_host.ipv_preference can now be set to 4 or 6 to configure the type of ip address displayed in place of the host name.

Friday, July 10, 2015 - 14:30 Download


  • This release has been unpublished from Use v1.21.1 or higher instead.

  • Support for display host names.

    The agent now has configuration settings to allow configuration of custom host names. Set process_host.display_name to enable this.

    If this config is not set, the agent will continue to use the host name found through an os.hostname() call. Should this lookup fail somehow, process_host.ipv_preference can now be set to 4 or 6 to configure the type of ip address displayed in place of the host name.

Tuesday, June 23, 2015 - 08:40 Download


  • Fixed a bug where custom events weren't being sent.

    In a refactor of our data collection cycle, we omited the custom events from the list of commands, this is now fixed.

  • Fixed a very rare bug where the custom event pool could be set to 10 instead of the user config value. This patch was contributed by shezarkhani, thanks!

    This case would only be hit if you disabled custom events via server sent config while there were custom events ready to be sent. Then you later reenabled it via server sent config. It would only occur for one data collection cycle then reset back to the correct size.

Thursday, June 11, 2015 - 10:53 Download


  • Fixed a bug in custom event recording limits.

    Previously, the agent would use the config value for max events (default of 1000) for the first harvest of custom events, then would use an internal default for the reservoir with max of 10 events for each harvest after that, resulting in less than the expected number of events being sent.

  • Exposed the custom_insights_events settings in the user config.

    You can now set custom_insights_events.enabled and custom_insights_events.max_samples_stored in your newrelic.js.

    Read more about these settings in our documentation.

Friday, June 5, 2015 - 12:00 Download


  • Triaged a defect in native promise instrumentation

    Transactions used to be lost acrossed chained .then calls. The way promises are wrapped has been changed to fix this issue.

  • Added support for Slow Queries

    Slow Query information will now appear in the UI for Node agent users. This feature allows you to see a trace for slow datastore queries. Read more about this feature in our documentation

Thursday, May 21, 2015 - 14:49 Download


  • Fixed an issue with Error tracing

    Previously the agent could sometimes cause issues with user serialization of error Âobjects after they passed through the error tracing code.

  • MongoDB cursor count method is now instrumented

    The count method on MongoDB cursors is now instrumented. Previously, count would not be included in transaction traces.

  • Fixed a typo in

    Previously the release notes for v1.19.1 were included as notes for 1.19.0. This has now fixed thanks to @bruun

Thursday, May 14, 2015 - 15:17 Download


  • Fixed a bug in native ES6 Promise instrumentation.

    Previously the Promise instrumentation would cause instanceof Promise to return false even if the object was a promise. This also caused an incompatibility with async-listener. instanceof checks will now work on both the wrapped and unwrapped Promise object.

Wednesday, May 6, 2015 - 13:00 Download


  • Filesystem interactions are now recorded in metrics

    The time spent in filesystem functions during a transaction will now be displayed in the transaction overview page per operation.


  • Fixed a bug with error handling.

    Previously the agent could crash applications in certain situations where null was thrown rather than an Error object.

Friday, May 1, 2015 - 11:52 Download

Bug fixes

  • Fixed a bug in environment variable based configuration.

    Previously the agent would parse the NEW_RELIC_APDEX environment variable as a string rather than a float this could cause data to be sent to New Relic servers in an invalid format, preventing the data from being collected.

  • Fixed a bug with the error collector's handling of ignored status codes.

    Previously the agent would not properly ignore status codes if the status code was set using a string rather than a number.

  • Fixed a bug in mysql instrumentation.

    Previously the mysql instrumentation could cause errors when making mysql queries using an options object rather than a SQL string. The agent now handles arguments to the query method in a more robust way.

Wednesday, April 22, 2015 - 15:58 Download


  • Fixed an inverted if in config loading.

    Previously, the config loader would log a warning on success, rather than failure. Configuration loading works as expected now.

  • Fixed a bug in process.nextTick instrumentation for io.js 1.8.1.

    Previously the agent would only pass the callback argument to process.nextTick. This did not cause issues in Node.js and older version of io.js, since additional arguments were ignored. In a recent change to io.js, process.nextTick was changed to pass any additional arguments to the callback, the same way setImmediate does. This change ensures all arguments are handled as expected.