Upgrade Path

n8n 0.22.0 → 2.42.0

825 versions, 63 with breaking changes (2 repeat an earlier entry), the 2.0.0 upgrade guide, 0 required stops

Version by version, oldest first

0.23.0 – 0.36.1: no action items (17 versions)

0.37.0 2019-12-01

1 Breaking — show quotes

Breaking

What changed?

To make it possible to support also Rocketchat on-premise the credentials had to be changed. The subdomain parameter had to get renamed to domain.

When is action necessary?

When you currently use the Rocketchat-Node.

How to upgrade:

Open the Rocketchat credentials and fill the parameter domain. If you had previously the subdomain "example" set you have to set now "https://example.rocket.chat".

From github.com/n8n-io/n8n/blob/master/packages/cli/BREAKING-CHANGES.md

Full release notes for 0.37.0

0.38.0 – 0.51.0: no action items (15 versions)

0.52.0 2020-02-08

1 Breaking — show quotes

Breaking

What changed?

To make sure that all nodes work similarly, to allow to easily use the value from other parts of the workflow and to be able to construct the source-date manually in an expression, the node had to be changed. Instead of getting the source-date directly from the flow the value has now to be manually set via an expression.

When is action necessary?

If you currently use "Date & Time"-Nodes.

How to upgrade:

Open the "Date & Time"-Nodes and reference the date that should be converted via an expression. Also, set the "Property Name" to the name of the property the converted date should be set on.

From github.com/n8n-io/n8n/blob/master/packages/cli/BREAKING-CHANGES.md

Full release notes for 0.52.0

0.53.0 – 0.61.0: no action items (10 versions)

0.62.0 2020-04-13

1 Breaking — show quotes

Breaking

What changed?

The function "evaluateExpression(...)" got renamed to "$evaluateExpression()" in Function and FunctionItem Nodes to simplify code and to normalize function names.

When is action necessary?

If "evaluateExpression(...)" gets used in any Function or FunctionItem Node.

How to upgrade:

Simply replace the "evaluateExpression(...)" with "$evaluateExpression(...)".

From github.com/n8n-io/n8n/blob/master/packages/cli/BREAKING-CHANGES.md

Full release notes for 0.62.0

0.62.1 – 0.66.0: no action items (5 versions)

0.67.0 2020-05-12

1 Breaking — show quotes

Breaking

What changed?

The names of the following nodes were not set correctly and got fixed:

  • AMQP Sender
  • Bitbucket-Trigger
  • Coda
  • Eventbrite-Trigger
  • Flow
  • Flow-Trigger
  • Gumroad-Trigger
  • Jira
  • Mailchimp-Trigger
  • PayPal Trigger
  • Read PDF
  • Rocketchat
  • Shopify
  • Shopify-Trigger
  • Stripe-Trigger
  • Toggl-Trigger

When is action necessary?

If any of the nodes mentioned above, are used in any of your workflows.

How to upgrade:

For the nodes mentioned above, you'll need to give them access to the credentials again by opening the credentials and moving them from "No Access" to "Access". After you've done that, there are two ways to upgrade the workflows and to make them work in the new version:

Simple

  • Note down the settings of the nodes before upgrading
  • After upgrading, delete the nodes mentioned above from your workflow, and recreate them

Advanced

After upgrading, select the whole workflow in the editor, copy it, and paste it into a text editor. In the JSON, change the node types manually by replacing the values for "type" as follows:

  • "n8n-nodes-base.amqpSender" -> "n8n-nodes-base.amqp"
  • "n8n-nodes-base.bitbucket" -> "n8n-nodes-base.bitbucketTrigger"
  • "n8n-nodes-base.Coda" -> "n8n-nodes-base.coda"
  • "n8n-nodes-base.eventbrite" -> "n8n-nodes-base.eventbriteTrigger"
  • "n8n-nodes-base.Flow" -> "n8n-nodes-base.flow"
  • "n8n-nodes-base.flow" -> "n8n-nodes-base.flowTrigger"
  • "n8n-nodes-base.gumroad" -> "n8n-nodes-base.gumroadTrigger"
  • "n8n-nodes-base.Jira Software Cloud" -> "n8n-nodes-base.jira"
  • "n8n-nodes-base.Mailchimp" -> "n8n-nodes-base.mailchimpTrigger"
  • "n8n-nodes-base.PayPal" -> "n8n-nodes-base.payPalTrigger"
  • "n8n-nodes-base.Read PDF" -> "n8n-nodes-base.readPDF"
  • "n8n-nodes-base.Rocketchat" -> "n8n-nodes-base.rocketchat"
  • "n8n-nodes-base.shopify" -> "n8n-nodes-base.shopifyTrigger"
  • "n8n-nodes-base.shopifyNode" -> "n8n-nodes-base.shopify"
  • "n8n-nodes-base.stripe" -> "n8n-nodes-base.stripeTrigger"
  • "n8n-nodes-base.toggl" -> "n8n-nodes-base.togglTrigger"

Then delete all existing nodes, and then paste the changed JSON directly into n8n. It should then recreate all the nodes and connections again, this time with working nodes.

From github.com/n8n-io/n8n/blob/master/packages/cli/BREAKING-CHANGES.md

Full release notes for 0.67.0

0.67.1 – 0.67.3: no action items (3 versions)

0.68.0 2020-06-04

1 Breaking — show quotes

Breaking

What changed?

To make it easier to use the data which the Slack-Node outputs we no longer return the whole object the Slack-API returns if the only other property is "ok": true. In this case it returns now directly the data under "channel".

When is action necessary?

When you currently use the Slack-Node with Operations Channel -> Create and you use any of the data the node outputs.

How to upgrade:

All values that get referenced which were before under the property "channel" are now on the main level. This means that these expressions have to get adjusted.

Meaning if the expression used before was:

it has to get changed to:

From github.com/n8n-io/n8n/blob/master/packages/cli/BREAKING-CHANGES.md

Full release notes for 0.68.0

0.68.1 – 0.68.2: no action items (2 versions)

0.69.0 2020-06-08

1 Breaking — show quotes

Breaking

What changed?

We have simplified how attachments are handled by the Twitter node. Rather than clicking on Add Attachments and having to specify the Catergory, you can now add attachments by just clicking on Add Field and selecting Attachments. There's no longer an option to specify the type of attachment you are adding.

When is action necessary?

If you have used the Attachments option in your Twitter nodes.

How to upgrade:

You'll need to re-create the attachments for the Twitter node.

From github.com/n8n-io/n8n/blob/master/packages/cli/BREAKING-CHANGES.md

Full release notes for 0.69.0

0.69.1 – 0.78.0: no action items (10 versions)

0.79.0 2020-08-27

1 Breaking — show quotes

Breaking

What changed?

We have renamed the operations in the Todoist Node for consistency with the codebase. We also deleted the close_match and delete_match operations as these can be accomplished using the following operations: getAll, close, and delete.

When is action necessary?

When one of the following operations is used:

  • close_by
  • close_match
  • delete_id
  • delete_match

How to upgrade:

After upgrading, open all workflows which contain the Todoist Node. Set the corresponding operation, and then save the workflow.

If the operations close_match or delete_match are used, recreate them using the operations: getAll, delete, and close.

From github.com/n8n-io/n8n/blob/master/packages/cli/BREAKING-CHANGES.md

Full release notes for 0.79.0

0.79.1 – 0.82.1: no action items (7 versions)

0.83.0 2020-09-18

1 Breaking — show quotes

Breaking

What changed?

In the Active Campaign Node, we have changed how the getAll operation works with various resources for the sake of consistency. To achieve this, a new parameter called 'Simple' has been added.

When is action necessary?

When one of the following resources/operations is used:

ResourceOperation
DealGet All
ConnectorGet All
E-commerce OrderGet All
E-commerce CustomerGet All
E-commerce Order ProductsGet All

How to upgrade:

Open the affected resource/operation and set the parameter Simple to false.

From github.com/n8n-io/n8n/blob/master/packages/cli/BREAKING-CHANGES.md

Full release notes for 0.83.0

0.84.0 – 0.86.1: no action items (8 versions)

0.87.0 2020-10-14

1 Breaking — show quotes

Breaking

What changed?

The link.fish node got removed because the service is shutting down.

When is action necessary?

If you are are actively using the link.fish node.

How to upgrade:

Unfortunately, that's not possible. We'd recommend you to look for an alternative service.

From github.com/n8n-io/n8n/blob/master/packages/cli/BREAKING-CHANGES.md

Full release notes for 0.87.0

0.87.1 – 0.89.2: no action items (7 versions)

0.90.0 2020-10-23

1 Breaking — show quotes

Breaking

What changed?

Node.js version 12.9 or newer is required to run n8n.

When is action necessary?

If you are running Node.js version older than 12.9.

How to upgrade:

You can find download and install the latest version of Node.js from here.

From github.com/n8n-io/n8n/blob/master/packages/cli/BREAKING-CHANGES.md

Full release notes for 0.90.0

0.91.0 – 0.92.0: no action items (2 versions)

0.93.0 2020-11-11

1 Breaking — show quotes

Breaking

What changed?

Change in naming of the Authentication field for the Pipedrive Trigger node.

When is action necessary?

If you had set "Basic Auth" for the "Authentication" field in the node.

How to upgrade:

The "Authentication" field has been renamed to "Incoming Authentication". Please set the parameter “Incoming Authentication” to “Basic Auth” to activate it again.

From github.com/n8n-io/n8n/blob/master/packages/cli/BREAKING-CHANGES.md

Full release notes for 0.93.0

0.94.0 2020-11-19

1 Breaking — show quotes

Breaking

What changed?

In the Segment Node, we have changed how the properties 'traits' and 'properties' are defined. Now, key/value pairs can be provided, allowing you to send customs traits/properties.

When is action necessary?

When the properties 'traits' or 'properties' are set, and one of the following resources/operations is used:

ResourceOperation
IdentifyCreate
TrackEvent
TrackPage
GroupAdd

How to upgrade:

Open the affected resource/operation and set the parameters 'traits' or 'properties' again.

From github.com/n8n-io/n8n/blob/master/packages/cli/BREAKING-CHANGES.md

Full release notes for 0.94.0

0.94.1: no action items (1 version)

0.95.0 2020-11-25

1 Breaking — show quotes

Breaking

What changed?

In the Harvest Node, we moved the account field from the credentials to the node parameters. This will allow you to work witn multiples accounts without having to create multiples credentials.

When is action necessary?

If you are using the Harvest Node.

How to upgrade:

Open the node set the parameter Account ID.

From github.com/n8n-io/n8n/blob/master/packages/cli/BREAKING-CHANGES.md

Full release notes for 0.95.0

0.95.1 – 0.101.0: no action items (8 versions)

0.102.0 2021-01-15

1 Breaking — show quotes

Breaking

What changed?

  • The As User property and the User Name field got combined and renamed to Send as User. It also got moved under “Add Options”.
  • The Ephemeral property got removed. To send an ephemeral message, you have to select the "Post (Ephemeral)" operation.

When is action necessary?

If you are using the following fields or properties in the Slack node:

  • As User
  • Ephemeral
  • User Name

How to upgrade:

Open the Slack node and set them again to the appropriate values.


What changed?

If you have a question in Typeform that uses a previously answered question as part of its text, the question text would look like this in the Typeform Trigger node:

You have chosen {{field:23234242}} as your answer. Is this correct?

Those curly braces broke the expression editor. The change makes it now display like this:

You have chosen [field:23234242] as your answer. Is this correct?

When is action necessary?

If you are using the Typeform Trigger node with questions using the Recall information feature.

How to upgrade:

In workflows using the Typeform Trigger node, nodes that reference such key names (questions that use a previously answered question as part of its text) will need to be updated.

From github.com/n8n-io/n8n/blob/master/packages/cli/BREAKING-CHANGES.md

Full release notes for 0.102.0

0.103.0 – 0.103.1: no action items (2 versions)

0.104.0 2021-01-26

1 Breaking — show quotes

Breaking

What changed?

Support for MongoDB as a database for n8n has been dropped as MongoDB had problems saving large amounts of data in a document, among other issues.

When is action necessary?

If you have been using MongoDB as a database for n8n. Please note that this is not related to the MongoDB node.

How to upgrade:

Before upgrading, you can export all your credentials and workflows using the CLI.

You can then change the database to one of the supported databases mentioned here. Finally, you can upgrade n8n and import all your credentials and workflows back into n8n.

From github.com/n8n-io/n8n/blob/master/packages/cli/BREAKING-CHANGES.md

Full release notes for 0.104.0

0.104.1 – 0.104.2: no action items (2 versions)

0.105.0 2021-02-01

1 Breaking — show quotes

Breaking

What changed?

In the Hubspot Trigger, now multiple events can be provided and the field App ID was so moved to the credentials.

When is action necessary?

If you are using the Hubspot Trigger node.

How to upgrade:

Open the Hubspot Trigger and set the events again. Also open the credentials Hubspot Developer API and set your APP ID.

From github.com/n8n-io/n8n/blob/master/packages/cli/BREAKING-CHANGES.md

Full release notes for 0.105.0

0.106.0 – 0.110.3: no action items (8 versions)

0.111.0 2021-03-12

1 Breaking — show quotes

Breaking

What changed?

In the Dropbox node, now all operations are performed relative to the user's root directory.

When is action necessary?

If you are using any resource/operation with OAuth2 authentication.

If you are using the folder:list operation with the parameter Folder Path empty (root path) and have a Team Space in your Dropbox account.

How to upgrade:

Open the Dropbox node, go to the OAuth2 credential you are using and reconnect it again.

Also, if you are using the folder:list operation, make sure your logic is taking into account the team folders in the response.

From github.com/n8n-io/n8n/blob/master/packages/cli/BREAKING-CHANGES.md

Full release notes for 0.111.0

0.112.0: no action items (1 version)

0.113.0 2021-03-26

1 Breaking — show quotes

Breaking

What changed?

In the Dropbox node, both credential types (Access Token & OAuth2) have a new parameter called "APP Access Type".

When is action necessary?

If you are using a Dropbox APP with permission type, "App Folder".

How to upgrade:

Open your Dropbox node's credentials and set the "APP Access Type" parameter to "App Folder".

From github.com/n8n-io/n8n/blob/master/packages/cli/BREAKING-CHANGES.md

Full release notes for 0.113.0

0.114.0 – 0.116.1: no action items (4 versions)

0.117.0 2021-04-24

1 Breaking — show quotes

Breaking

What changed?

Removed the "Activation Trigger" node. This node was replaced by two other nodes.

The "Activation Trigger" node was added on version 0.113.0 but was not fully compliant to UX, so we decided to refactor and change it ASAP so it affects the least possible users.

The new nodes are "n8n Trigger" and "Workflow Trigger". Behavior-wise, the nodes do the same, we just split the functionality to make it more intuitive to users.

When is action necessary?

If you use the "Activation Trigger" in any of your workflows, please replace it by the new nodes.

How to upgrade:

Remove the previous node and add the new ones according to your workflows.


Changed the behavior for nodes that use Postgres Wire Protocol: Postgres, QuestDB, CrateDB and TimescaleDB.

All nodes have been standardized and now follow the same patterns. Behavior will be the same for most cases, but new added functionality can now be explored.

You can now also inform how you would like n8n to execute queries. Default mode is Multiple queries which translates to previous behavior, but you can now run them Independently or Transaction. Also, Continue on Fail now plays a major role for the new modes.

The node output for insert operations now rely on the new parameter Return fields, just like update operations did previously.

When is action necessary?

If you rely on the output returned by insert operations for any of the mentioned nodes, we recommend you review your workflows.

By default, all insert operations will have Return fields: * as the default, setting, returning all information inserted.

Previously, the node would return all information it received, without taking into account what actually happened in the database.

From github.com/n8n-io/n8n/blob/master/packages/cli/BREAKING-CHANGES.md

Full release notes for 0.117.0

0.118.0 2021-05-02

1 Breaking — show quotes

Breaking

What changed?

The minimum Node.js version required for n8n is now v14.

When is action necessary?

If you're using n8n via npm or PM2 or if you're contributing to n8n.

How to upgrade:

Update the Node.js version to v14 or above.


What changed?

In the Postgres, CrateDB, QuestDB and TimescaleDB nodes the Execute Query operation returns the result from all queries executed instead of just one of the results.

When is action necessary?

If you use any of the above mentioned nodes with the Execute Query operation and the result is relevant to you, you are encouraged to revisit your logic. The node output may now contain more information than before. This change was made so that the behavior is more consistent across n8n where input with multiple rows should yield results acccording all input data instead of only one. Please note: n8n was already running multiple queries based on input. Only the output was changed.

From github.com/n8n-io/n8n/blob/master/packages/cli/BREAKING-CHANGES.md

Full release notes for 0.118.0

0.118.1 – 0.126.1: no action items (15 versions; 0.121.1, released after 0.122.0, is not on this route)

0.127.0 2021-07-04

1 Breaking — show quotes

Breaking

What changed?

For the Zoho node, the lead:create operation now requires a "Company" parameter, the parameter "Address" is now inside "Additional Options", and the parameters "Title" and "Is Duplicate Record" were removed. Also, the lead:delete operation now returns only the id of the deleted lead.

When is action necessary?

If you are using lead:create with "Company" or "Address", reset the parameters; for the other two parameters, no action needed. If you are using the response from lead:delete, reselect the id key.

From github.com/n8n-io/n8n/blob/master/packages/cli/BREAKING-CHANGES.md

Full release notes for 0.127.0

0.128.0 – 0.129.0: no action items (2 versions)

0.130.0 2021-07-18

1 Breaking — show quotes

Breaking

What changed?

For the Taiga regular and trigger nodes, the server and cloud credentials types are now unified into a single credentials type and the version param has been removed. Also, the issue:create operation now automatically loads the tags as multiOptions.

When is action necessary?

If you are using the Taiga nodes, reconnect the credentials. If you are using tags in the issue:create operation, reselect them.

From github.com/n8n-io/n8n/blob/master/packages/cli/BREAKING-CHANGES.md

Full release notes for 0.130.0

0.131.0 2021-07-24

1 Breaking — show quotes

Breaking

What changed?

For the Pipedrive regular node, the deal:create operation now requires an organization ID or person ID, in line with upcoming changes to the Pipedrive API.

When is action necessary?

If you are using the deal:create operation in the Pipedrive regular node, set an organization ID or a person ID.

From github.com/n8n-io/n8n/blob/master/packages/cli/BREAKING-CHANGES.md

Full release notes for 0.131.0

0.132.0 – 0.134.0: no action items (5 versions)

0.135.0 2021-08-22

1 Breaking — show quotes

Breaking

What changed?

The in-node core methods for credentials and binary data have changed.

When is action necessary?

If you are using custom n8n nodes.

How to upgrade:

  1. The method this.getCredentials(myNodeCredentials) is now async. So await has to be added in front of it.

Example:

  1. Binary data should not get accessed directly anymore, instead the method await this.helpers.getBinaryDataBuffer(itemIndex, binaryPropertyName) has to be used.

Example:

From github.com/n8n-io/n8n/blob/master/packages/cli/BREAKING-CHANGES.md

Full release notes for 0.135.0

0.135.1 – 0.138.0: no action items (6 versions)

0.139.0 2021-09-22

1 Breaking — show quotes

Breaking

What changed?

For the HubSpot Trigger node, the authentication process has changed to OAuth2.

When is action necessary?

If you are using the Hubspot Trigger.

How to upgrade:

Create an app in HubSpot, use the Client ID, Client Secret, App ID, and the Developer Key, and complete the OAuth2 flow.

From github.com/n8n-io/n8n/blob/master/packages/cli/BREAKING-CHANGES.md

Full release notes for 0.139.0

0.139.1 – 0.164.1: no action items (35 versions)

0.165.0 2022-02-28

1 Breaking — show quotes

Breaking

What changed?

The Hive node now correctly rejects invalid SSL certificates when the "Ignore SSL Issues" option is set to False.

When is action necessary?

If you are using a self signed certificate with The Hive.

How to upgrade:

Go to the credentials for The Hive, Enable the "Ignore SSL Issues" option.

From github.com/n8n-io/n8n/blob/master/packages/cli/BREAKING-CHANGES.md

Full release notes for 0.165.0

0.165.1 – 0.170.0: no action items (8 versions)

0.171.0 2022-04-03

1 Breaking — show quotes

Breaking

What changed?

The GraphQL node now errors when the response includes an error.

When is action necessary?

If you are using the GraphQL node.

How to upgrade:

Go to the workflows that use the GraphQL node and adjust them to the new behavior. If you want to continue even on error, you can set "Continue on Fail" to true.

From github.com/n8n-io/n8n/blob/master/packages/cli/BREAKING-CHANGES.md

Full release notes for 0.171.0

0.171.1 – 0.197.1: no action items (52 versions)

0.198.0 2022-10-14

2 Breaking — show quotes

Breaking

What changed?

The Merge node list of operations was rearranged.

When is action necessary?

If you are using the overhauled Merge node and 'Merge By Fields', 'Merge By Position' or 'Multiplex' operation.

How to upgrade:

Go to the workflows that use the Merge node, select 'Combine' operation and then choose an option from 'Combination Mode' that matches an operation that was previously used. If you want to continue even on error, you can set "Continue on Fail" to true.

From github.com/n8n-io/n8n/blob/master/packages/cli/BREAKING-CHANGES.md

Breaking

  • The Merge node list of operations was rearranged.

Merge node: 'Combine' operation was added with 'Combine Mode' option, operations 'Merge By Fields', 'Merge By Position' and 'Multiplex' placed under 'Combine Mode' option. To update -go to the workflows that use the Merge node, select 'Combine' operation and then choose an option from 'Combination Mode' that matches an operation that was previously used. If you want to continue even on error, you can set "Continue on Fail" to true.

From github.com/n8n-io/n8n/blob/master/CHANGELOG.md

Full release notes for 0.198.0

0.198.1 – 0.201.0: no action items (6 versions)

0.202.0 2022-11-10

1 Breaking — show quotes

Breaking

What changed?

Switched from NPM to PNPM for development.

When is action necessary?

If you are contributing to n8n.

How to upgrade:

Make sure that your local development setup is up to date with the latest [Contribution Guide](../../CONTRIBUTING.md).

From github.com/n8n-io/n8n/blob/master/packages/cli/BREAKING-CHANGES.md

Full release notes for 0.202.0

0.202.1 – 0.213.0: no action items (25 versions)

0.214.0 2023-02-03

1 Breaking — show quotes

Breaking

What changed?

Invalid Luxon datetimes no longer resolve to null. Now they throw the error invalid DateTime.

When is action necessary?

If you are relying on the above behavior, review your workflow to ensure you handle invalid Luxon datetimes.

From github.com/n8n-io/n8n/blob/master/packages/cli/BREAKING-CHANGES.md

Full release notes for 0.214.0

0.214.1 – 0.222.1: no action items (22 versions; 6 backports, released after the next line began, are not on this route)

0.222.2 – 0.222.3: released after 0.223.0; not on this route

0.223.0 2023-04-05

1 Breaking — show quotes

Breaking

What changed?

The minimum Node.js version required for n8n is now v16.

When is action necessary?

If you're using n8n via npm or PM2 or if you're contributing to n8n.

How to upgrade:

Update the Node.js version to v16 or above.

From github.com/n8n-io/n8n/blob/master/packages/cli/BREAKING-CHANGES.md

Full release notes for 0.223.0

0.224.0 – 0.225.2: no action items (5 versions; 0.224.2 – 0.224.4, released after 0.225.0, are not on this route)

0.226.0 2023-04-26

1 Breaking — show quotes

Breaking

What changed?

The extractDomain and isDomain are now also matching localhost, domains without protocol and domains with query parameters. The extractUrl and isUrl are additionally also matching localhost and domains with query parameters.

When is action necessary?

If you're using the extractDomain or isDomain functions and expect them to not match localhost, domains without protocol and domains with query parameters.

From github.com/n8n-io/n8n/blob/master/packages/cli/BREAKING-CHANGES.md

Full release notes for 0.226.0

0.226.1 – 0.231.1: no action items (12 versions; 2 backports, released after the next line began, are not on this route)

0.231.2 – 0.231.3: released after 0.232.0; not on this route

0.232.0 2023-06-07

1 Breaking — show quotes

Breaking

What changed?

Due to Node.js/OpenSSL upgrade, the following crypto algorithms are not supported anymore.

  • RSA-MD4
  • RSA-MDC2
  • md4
  • md4WithRSAEncryption
  • mdc2
  • mdc2WithRSA

When is action necessary?

If you're using any of the above mentioned crypto algorithms in Crypto node in any of your workflows, then please update the algorithm property in the node to one of the supported values.

What changed?

The LoneScale List node has been renamed to LoneScale.

When is action necessary?

If you have used the LoneScale List node in any of your workflows.

How to upgrade:

Update any workflows using LoneScale List to use the updated node.

From github.com/n8n-io/n8n/blob/master/packages/cli/BREAKING-CHANGES.md

Full release notes for 0.232.0

0.233.0 – 0.233.1: no action items (2 versions)

0.234.0 2023-06-22

1 Breaking — show quotes

Breaking

What changed?

This release introduces two irreversible changes:

  • The n8n database will use strings instead of numeric values to identify workflows and credentials
  • Execution data is split into a separate database table

When is action necessary?

It will not be possible to read a n8n@0.234.0 database with older versions of n8n, so we recommend that you take a full backup before migrating.

From github.com/n8n-io/n8n/blob/master/packages/cli/BREAKING-CHANGES.md

Full release notes for 0.234.0

0.234.1 – 0.237.0: released after 1.0.0; not on this route

1.0.0 2023-06-27

2 Breaking — show quotes

Breaking

What changed?

The minimum Node.js version required for n8n is now v18.

When is action necessary?

If you're using n8n via npm or PM2 or if you're contributing to n8n.

How to upgrade:

Update the Node.js version to v18 or above.

From github.com/n8n-io/n8n/blob/master/packages/cli/BREAKING-CHANGES.md

Breaking

  • core Docker containers now run as the user node instead of root (#6365) (f636616)
  • core Drop debian and rhel7 images (#6365) (f636616)
  • core Drop support for deprecated WEBHOOK_TUNNEL_URL env variable (#6363)
  • core Execution mode defaults to main now, instead of own (#6363)
  • core Default push backend is websocket now, instead of sse (#6363)
  • core Stop loading custom/community nodes from n8n's node_modules folder (#6396) (a45a2c8)
  • core User management is mandatory now. basic-auth, external-jwt-auth, and no-auth options are removed (#6362) (8c008f5)
  • core Allow syntax errors and expression errors to fail executions (#6352) (1197811)
  • core Drop support for request library and N8N_USE_DEPRECATED_REQUEST_LIB env variable (#6413) (632ea27)
  • core Make date extensions outputs match inputs (#6435) (85372aa)
  • core Drop support for executeSingle method on nodes (#4853) (9194d8b)
  • core Change data processing for multi-input-nodes (#4238) (b8458a5)

From github.com/n8n-io/n8n/blob/master/CHANGELOG.md

Full release notes for 1.0.0

1.0.1 – 1.1.1: no action items (7 versions)

1.2.0 2023-08-09

1 Breaking — show quotes

Breaking

What changed?

For the Linear node, priority in issue creation is 4 (previously incorrectly 3) for Low.

When is action necessary?

If you were using Low, you were setting a priority of Normal, so please double check you are setting the priority you intend.

From github.com/n8n-io/n8n/blob/master/packages/cli/BREAKING-CHANGES.md

Full release notes for 1.2.0

1.2.1 – 1.4.1: no action items (6 versions)

1.5.0 2023-08-31

1 Breaking — show quotes

Breaking

What changed?

In the Code node, console.log does not output to stdout by default.

When is action necessary?

If you were relying on console.log for non-manual executions of a Code node, you need to set the env variable CODE_ENABLE_STDOUT to true to send Code node logs to process's stdout.

From github.com/n8n-io/n8n/blob/master/packages/cli/BREAKING-CHANGES.md

Full release notes for 1.5.0

1.5.1: no action items (1 version)

1.6.0 2023-09-06

1 Breaking — show quotes

Breaking

What changed?

The env var N8N_PERSISTED_BINARY_DATA_TTL no longer has any effect and can be removed. This legacy flag was originally introduced to support ephemeral executions (see details), which are no longer supported.

When is action necessary?

If using this flag, remove it from your settings.

From github.com/n8n-io/n8n/blob/master/packages/cli/BREAKING-CHANGES.md

Full release notes for 1.6.0

1.6.1 – 1.8.2: no action items (6 versions)

1.9.0 2023-09-28

1 Breaking — show quotes

Breaking

What changed?

In nodes, this.helpers.getBinaryStream() is now async.

When is action necessary?

If your node uses this.helpers.getBinaryStream(), add await when calling it.

Example:

What changed?

The env vars N8N_BINARY_DATA_TTL and EXECUTIONS_DATA_PRUNE_TIMEOUT no longer have any effect and can be safely removed. Instead of relying on a TTL system for binary data, n8n currently cleans up binary data together with executions during pruning.

When is action necessary?

If using these flags, remove them from your settings and be mindful of the new behavior.

From github.com/n8n-io/n8n/blob/master/packages/cli/BREAKING-CHANGES.md

Full release notes for 1.9.0

1.9.1 – 1.21.1: no action items (26 versions; 7 backports, released after the next line began, are not on this route)

1.22.0 2023-12-21

1 Breaking — show quotes

Breaking

What changed?

Hash algorithm ripemd160 is dropped from .hash() expressions. sha3 hash algorithm now returns a valid sha3-512 has, unlike the previous implementation that returned a Keccak hash instead.

When is action necessary?

If you are using .hash helpers in expressions with hash algorithm ripemd160, you need to switch to one of the other supported algorithms.

From github.com/n8n-io/n8n/blob/master/packages/cli/BREAKING-CHANGES.md

Full release notes for 1.22.0

1.22.1 – 1.23.0: no action items (5 versions; 1.22.5 – 1.22.6, released after 1.23.0, are not on this route)

1.24.0 2024-01-10

1 Breaking — show quotes

Breaking

What changed?

The flag N8N_CACHE_ENABLED was removed. The cache is now always enabled.

Additionally, expressions in credentials now follow the paired item, so if you have multiple input items, n8n will try to pair the matching row to fill in the credential details.

In the Monday.com Node, due to API changes, the data structure of entries in column_values array has changed

When is action necessary?

If you are using the flag N8N_CACHE_ENABLED, remove it from your settings.

In regards to credentials, if you use expression in credentials, you might want to revisit them. Previously, n8n would stick to the first item only, but now it will try to match the proper paired item.

If you are using the Monday.com node and refering to column_values property, check in table below if you are using any of the affected properties of its entries.

ResourceOperationPreviousNew
BoardGetownerowners
BoardGet Allownerowners
Board ItemGettitlecolumn.title
Board ItemGet Alltitlecolumn.title
Board ItemGet By Column Valuetitlecolumn.title
Board ItemGetadditional_infocolumn.settings_str
Board ItemGet Alladditional_infocolumn.settings_str
Board ItemGet By Column Valueadditional_infocolumn.settings_str

*column.settings_str is not a complete equivalent additional_info

From github.com/n8n-io/n8n/blob/master/packages/cli/BREAKING-CHANGES.md

Full release notes for 1.24.0

1.24.1: no action items (1 version)

1.25.0 2024-01-17

1 Breaking — show quotes

Breaking

What changed?

If the N8N_ENCRYPTION_KEY environment variable on a main instance does not match the encryptionKey in the config file, the main instance will not initialize. If the N8N_ENCRYPTION_KEY environment variable is missing on a worker, the worker will not initialize.

When is action necessary?

If passing an N8N_ENCRYPTION_KEY environment variable to the main instance, make sure it matches the encryptionKey in the config file. If you are using workers, pass the N8N_ENCRYPTION_KEY environment variable to them.

From github.com/n8n-io/n8n/blob/master/packages/cli/BREAKING-CHANGES.md

Full release notes for 1.25.0

1.25.1 – 1.26.0: no action items (2 versions)

1.27.0 2024-01-31

2 Breaking — show quotes

Breaking

What changed?

The execution mode own was removed. If EXECUTIONS_PROCESS is set to main or if executions.process in a config file is set to main n8n will print a warning, but start up normally. If EXECUTIONS_PROCESS is set to own or if executions.process in a config file is set to own n8n will print an error message and refuse to start up.

When is action necessary?

If you use own mode and need the isolation and performance gains, please consider using queue mode instead, otherwise switch to main mode by removing the environment variable or config field. If you have the environment variable EXECUTIONS_PROCESS or the config field executions.process set, please remove them. The environment variable has no effect anymore and the configuration field will be removed in future releases, prevent n8n from starting if it is still set.

From github.com/n8n-io/n8n/blob/master/packages/cli/BREAKING-CHANGES.md

Breaking

From github.com/n8n-io/n8n/blob/master/CHANGELOG.md

Full release notes for 1.27.0

1.27.1 – 1.31.1: no action items (9 versions; 1.27.3, released after 1.28.0, is not on this route)

1.31.2: released after 1.32.0; not on this route

1.32.0 2024-03-06

1 Breaking — show quotes

Breaking

What changed?

n8n auth cookie has Secure flag set by default now.

When is action necessary?

If you are running n8n without HTTPS on a domain other than localhost, you need to either setup HTTPS, or you can disable the secure flag by setting the env variable N8N_SECURE_COOKIE to false.

From github.com/n8n-io/n8n/blob/master/packages/cli/BREAKING-CHANGES.md

Full release notes for 1.32.0

1.32.1 – 1.36.1: no action items (9 versions; 1.32.2, released after 1.33.0, is not on this route)

1.36.2 – 1.36.4: released after 1.37.0; not on this route

1.37.0 2024-04-10

1 Breaking — show quotes

Breaking

What changed?

The --file flag for the execute CLI command has been removed.

When is action necessary?

If you have scripts relying on the --file flag for the execute CLI command, update them to first import the workflow and then execute it using the --id flag.

From github.com/n8n-io/n8n/blob/master/packages/cli/BREAKING-CHANGES.md

Full release notes for 1.37.0

1.37.1 – 1.39.1: no action items (6 versions; 3 backports, released after the next line began, are not on this route)

1.40.0 2024-05-02

1 Breaking — show quotes

Breaking

What changed?

The default value for the DB_POSTGRESDB_USER environment variable was switched from root to postgres.

When is action necessary?

If your Postgres connection is relying on the old default value root for the DB_POSTGRESDB_USER environment variable, you must now explicitly set DB_POSTGRESDB_USER to root in your environment.

From github.com/n8n-io/n8n/blob/master/packages/cli/BREAKING-CHANGES.md

Full release notes for 1.40.0

1.41.0 – 1.46.0: no action items (10 versions; 4 backports, released after the next line began, are not on this route)

1.47.0 2024-06-20

1 Breaking — show quotes

Breaking

What changed?

Calling $(...).last() (or $(...).first() or $(...).all() respectively) without arguments is returning the the last item (or first or all items) of the output that connects the two nodes. Before it was returning the item/items of the first output of that node.

When is action necessary?

If you are using $(...).last() (or $(...).first() or $(...)all() respectively) without arguments for nodes that have multiple outputs (e.g. If, Switch, Compare Datasets, etc.) and you want it to default to the first output. In that case change it to $(...).last(0) (or first or all respectively).

This does not affect the Array functions [].last(), [].first().

From github.com/n8n-io/n8n/blob/master/packages/cli/BREAKING-CHANGES.md

Full release notes for 1.47.0

1.47.1 – 1.51.1: no action items (10 versions; 3 backports, released after the next line began, are not on this route)

1.51.2: released after 1.52.0; not on this route

1.52.0 2024-07-24

1 Breaking — show quotes

Breaking

What changed?

Prometheus metrics enabled via N8N_METRICS_INCLUDE_DEFAULT_METRICS and N8N_METRICS_INCLUDE_API_ENDPOINTS were fixed to include the default n8n_ prefix.

When is action necessary?

If you are using Prometheus metrics from these categories and are using a non-empty prefix, please update those metrics to match their new prefixed names.

From github.com/n8n-io/n8n/blob/master/packages/cli/BREAKING-CHANGES.md

Full release notes for 1.52.0

1.52.1 – 1.54.2: no action items (7 versions; 1.53.2, released after 1.54.0, is not on this route)

1.54.3 – 1.54.4: released after 1.55.0; not on this route

1.55.0 2024-08-14

1 Breaking — show quotes

Breaking

What changed?

The N8N_BLOCK_FILE_ACCESS_TO_N8N_FILES environment variable now also blocks access to n8n's static cache directory at ~/.cache/n8n/public.

When is action necessary?

If you are writing to or reading from a file at n8n's static cache directory via a node, e.g. Read/Write Files from Disk, please update your node to use a different path.

From github.com/n8n-io/n8n/blob/master/packages/cli/BREAKING-CHANGES.md

Full release notes for 1.55.0

1.55.1 – 1.56.2: no action items (6 versions)

1.57.0 2024-08-28

1 Breaking — show quotes

Breaking

What changed?

The verbose log level was merged into the debug log level.

When is action necessary?

If you are setting the env var N8N_LOG_LEVEL=verbose, please update your log level to N8N_LOG_LEVEL=debug.

From github.com/n8n-io/n8n/blob/master/packages/cli/BREAKING-CHANGES.md

Full release notes for 1.57.0

1.58.0 – 1.62.3: no action items (13 versions; 2 backports, released after the next line began, are not on this route)

1.62.4 – 1.62.6: released after 1.63.0; not on this route

1.63.0 2024-10-09

1 Breaking — show quotes

Breaking

What changed?

  1. The worker server used to bind to IPv6 by default. It now binds to IPv4 by default.
  2. The worker server's /healthz used to report healthy status based on database and Redis checks. It now reports healthy status regardless of database and Redis status, and the database and Redis checks are part of /healthz/readiness.

When is action necessary?

  1. If you experience a port conflict error when starting a worker server using its default port, set a different port for the worker server with QUEUE_HEALTH_CHECK_PORT.
  2. If you are relying on database and Redis checks for worker health status, switch to checking /healthz/readiness instead of /healthz.

From github.com/n8n-io/n8n/blob/master/packages/cli/BREAKING-CHANGES.md

Full release notes for 1.63.0

1.63.1 – 1.64.2: no action items (7 versions)

1.64.3: released after 1.65.0; not on this route

1.65.0 2024-10-24

1 Breaking — show quotes

Breaking

What changed?

Queue polling via the env var QUEUE_RECOVERY_INTERVAL has been removed.

When is action necessary?

If you have set the env var QUEUE_RECOVERY_INTERVAL, so you can remove it as it no longer has any effect.

From github.com/n8n-io/n8n/blob/master/packages/cli/BREAKING-CHANGES.md

Full release notes for 1.65.0

1.65.1 – 1.81.2: no action items (40 versions; 18 backports, released after the next line began, are not on this route)

1.81.3 2025-03-03

1 Breaking — show quotes

Breaking

What changed?

The Form nodes no longer allows input field types for custom HTML to prevent malicious javascript from being added.

When is action necessary?

If you were previously using input in the custom HTML for a Form node.

From github.com/n8n-io/n8n/blob/master/packages/cli/BREAKING-CHANGES.md

Full release notes for 1.81.3

1.81.4 – 1.82.0: no action items (2 versions)

1.82.1 2025-03-04

Breaking

Same text as in 1.81.3, above.

Full release notes for 1.82.1

1.82.2: no action items (1 version)

1.82.3 – 1.82.4: released after 1.83.0; not on this route

1.83.0 2025-03-12

Breaking

Same text as in 1.81.3, above.

Full release notes for 1.83.0

1.83.1 – 1.97.1: no action items (34 versions; 7 backports, released after the next line began, are not on this route)

1.98.0 2025-06-11

1 Breaking — show quotes

Breaking

What changed?

The last_activity metric included as a part of route metrics has been changed to output a Unix time in seconds from the previous timestamp label approach. The labeling approach could result in high cardinality within Prometheus and thus result in poorer performance.

Stricter parameters for iframe, video, and source tags when using the Form node.

When is action necessary?

If you've been ingesting route metrics from your n8n instance (version 1.81.0 and newer), you should analyze how the last_activity metric has affected your Prometheus instance and potentially clean up the old data. Future metrics will also be served in a different format, which needs to be taken into account.

If you are using iframe, video, or source tags with attributes beyond those listed here or are using schemes which are neither http or https, you will need to update your node or workflow.

What changed?

The minimum Node.js version required for n8n is now v20.

When is action necessary?

If you're using n8n via npm or PM2 or if you're contributing to n8n.

How to upgrade:

Update the Node.js version to v20 or above.

From github.com/n8n-io/n8n/blob/master/packages/cli/BREAKING-CHANGES.md

Full release notes for 1.98.0

1.98.1 – 1.101.1: no action items (8 versions; 1.98.2, released after 1.99.0, is not on this route)

1.101.2 – 1.101.3: released after 1.102.0; not on this route

1.102.0 2025-07-07

1 Breaking — show quotes

Breaking

What changed?

The N8N_RUNNERS_ALLOW_PROTOTYPE_MUTATION flag has been replaced with N8N_RUNNERS_INSECURE_MODE. The new flag disables all task runner security measures and is intended as an escape hatch for users who value compatibility with libraries like puppeteer at the cost of security.

When is action necessary?

If you are using the N8N_RUNNERS_ALLOW_PROTOTYPE_MUTATION flag, or if you find that the task runner does not currently support an external module that you rely on, then consider setting N8N_RUNNERS_INSECURE_MODE=true, at your own risk.

From github.com/n8n-io/n8n/blob/master/packages/cli/BREAKING-CHANGES.md

Full release notes for 1.102.0

1.102.1 – 1.102.3: no action items (3 versions)

1.102.4: released after 1.103.0; not on this route

1.103.0 2025-07-14

1 Breaking — show quotes

Breaking

What changed?

We will no longer be allowing users to use responseData within the Webhook node since this is now sandboxed in an iframe, which may break workflows relying on browser APIs like localStorage and fetch from within custom code.

When is action necessary?

If your workflow is using the Webhook node and uses JavaScript in responseData to make fetch calls or access localStorage, you may need to refactor it due to the new iframe sandboxing.

From github.com/n8n-io/n8n/blob/master/packages/cli/BREAKING-CHANGES.md

Full release notes for 1.103.0

1.103.1 – 1.106.3: no action items (10 versions; 4 backports, released after the next line began, are not on this route)

1.107.0 2025-08-11

1 Breaking — show quotes

Breaking

What changed?

The CLI flag --reinstallMissingPackages, deprecated a year ago in version 1.154.0, has been removed.

When is action necessary?

If you are using this flag, please switch to the environment variable N8N_REINSTALL_MISSING_PACKAGES.

From github.com/n8n-io/n8n/blob/master/packages/cli/BREAKING-CHANGES.md

Full release notes for 1.107.0

1.107.1 – 1.108.1: no action items (5 versions; 1.107.4, released after 1.108.0, is not on this route)

1.108.2: released after 1.109.0; not on this route

1.109.0 2025-08-25

1 Breaking — show quotes

Breaking

What changed?

Webhook HTML responses were sandboxed to an iframe starting from 1.103.1 due to security. The sandboxing mechanism is now changed to use Content-Security-Policy header instead of an iframe. The security guarantees stay the same, but the mechanism is less breaking.

When is action necessary?

If you have workflows that return HTML responses from Webhook Trigger node or Respond to Webhook node.

From github.com/n8n-io/n8n/blob/master/packages/cli/BREAKING-CHANGES.md

Full release notes for 1.109.0

1.109.1 – 1.112.3: no action items (8 versions; 3 backports, released after the next line began, are not on this route)

1.112.4 – 1.112.6: released after 1.113.0; not on this route

1.113.0 2025-09-22

1 Breaking — show quotes

Breaking

What changed?

Support for bare repositories in Git Node was dropped in the cloud version of n8n due to security reasons. Also, an environment variable N8N_GIT_NODE_DISABLE_BARE_REPOS was added that allows self-hosted users to disable bare repositories as well.

When is action necessary?

If you have workflows that use the Git Node and work with bare git repositories.

From github.com/n8n-io/n8n/blob/master/packages/cli/BREAKING-CHANGES.md

Full release notes for 1.113.0

1.113.1 – 1.121.2: no action items (27 versions; 7 backports, released after the next line began, are not on this route)

1.121.3: released after 1.122.0; not on this route

1.122.0 2025-11-24

1 Breaking — show quotes

Breaking

What changed?

The way to add third-party dependencies to the n8nio/runners image has changed. More details here.

When is action necessary?

If you are adding third-party dependencies to the n8nio/runners image using package.json and extras.txt and building the image yourself, please extend the image as instructed in the link above.

From github.com/n8n-io/n8n/blob/master/packages/cli/BREAKING-CHANGES.md

Full release notes for 1.122.0

1.122.2 – 1.123.4: no action items (8 versions; 1.122.5, released after 1.123.0, is not on this route)

1.123.5 – 1.123.82: released after 2.0.0; not on this route

2.0.0 2025-12-08

7 Upgrade guide, 1 Breaking — show quotes

Quoted from docs.n8n.io/changelog/v20-breaking-changes

Upgrade guide

Behavior changes

Return expected sub-workflow data when the sub-workflow resumes from waiting (waiting for webhook, forms, HITL, etc.)

Previously, when an execution (parent) called a sub-execution (child) that contained a node that causes the sub-execution to enter the waiting state and the parent-execution is set up to wait for the sub-execution's completion, the parent-execution would receive incorrect results.

Entering the waiting state would happen for example if the sub-execution contains a Wait node with a timeout higher than 65 seconds or a webhook call or a form submission, or a human-in-the-loop node, like the slack node.

Parent-Workflow: [image: Parent workflow with a Manual Trigger connected to an Execute Workflow node]

Sub-Workflow: [image: Sub-workflow triggered by Execute Workflow Trigger, running a Wait node followed by an Edit Fields node]

n8n 1.0: The parent-execution reproduces the sub-execution's input as its output.: [image: n8n 1.0: Parent execution won't receive the result of the child execution]

n8n 2.0: The parent execution receives the result of the child execution: [image: n8n 2.0: Parent execution will receive the result of the child execution]

This allows using human-in-the-loop nodes in the sub-workflow and use the results (for example approving or declining an action) in the parent-workflow.

Migration path: Review any workflows that call sub-workflows and expect to receive the input to the sub-workflow. Update these workflows to handle the new behavior, where the parent-workflow receives the output from the end of the child-workflow instead.

Start node removed

The Start node is no longer supported. This node was the original way to begin workflows but more specific trigger nodes now replace it.

Migration path: Replace the Start node based on how you use your workflow:

  • Manual executions: Replace the Start node with a Manual Trigger node.
  • Sub-workflows: If another workflow calls this workflow as a sub-workflow, replace the Start node with an Execute Workflow Trigger node and activate the workflow.
  • Disabled Start nodes: If the Start node is disabled, delete it from the workflow.

Saving and publishing workflows

The new workflow publishing system replaces the previous active/inactive toggle. This means that the old "Activate/Deactivate" toggles become the new "Publish/Unpublish" buttons. This change gives you better control over when your workflow changes go live, reducing the risk of accidentally deploying work-in-progress changes to production. More information can be found here: Saving and publishing workflows.

Removed nodes for retired services

The following nodes have been removed because the external services they connect to are no longer available:

  • Spontit node
  • crowd.dev node
  • Kitemaker node
  • Automizy node

Migration path: If your workflows use any of these nodes, update or remove those workflows to avoid errors.

Upgrade guide

Security

Block environment variable access from Code Node by default

To improve security, n8n will block access to environment variables from the Code node by default. The default value for N8N_BLOCK_ENV_ACCESS_IN_NODE is now set to true.

Migration path: If your workflows require access to environment variables in Code nodes, set N8N_BLOCK_ENV_ACCESS_IN_NODE=false in your environment configuration. For sensitive data, use credentials or other secure methods instead of environment variables.

Enforce settings file permissions

n8n will require strict file permissions for configuration files to improve security. By default, configuration files must use 0600 permissions, which means only the file owner can read and write them. This approach is similar to how SSH protects private keys.

Migration path: To test this behavior before n8n 2.0, set N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true. If your environment doesn't support file permissions (for example, on Windows), set N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=false to disable this requirement.

Enable task runners by default

n8n will enable task runners by default to improve security and isolation. All Code node executions will run on task runners.

Migration path: Before upgrading to n8n 2.0, set N8N_RUNNERS_ENABLED=true to test this behavior. Make sure your infrastructure meets the requirements for running task runners. For additional security, consider using external mode.

$evaluateExpression no longer works in the Code node

Because Code node executions now run on task runners in secure mode by default, the $evaluateExpression() convenience method no longer works inside the Code node. Secure mode disables evaluating strings as code, which is the mechanism expressions rely on, so $evaluateExpression() calls in a Code node return null or error. Expressions in regular node fields, such as the Edit Fields (Set) node, aren't affected.

Migration path: Move the expression evaluation out of the Code node, in order of preference:

  • Write the logic directly in JavaScript instead of calling $evaluateExpression().
  • Evaluate the expression in an Edit Fields (Set) node before the Code node, then read the result from the incoming item.
  • If you have no other option, set N8N_RUNNERS_INSECURE_MODE=true to re-enable the disabled JavaScript features. This turns off the task runner's security measures and is discouraged for production use.

$evaluateExpression() in the Code node may be removed entirely in a future version, so treat N8N_RUNNERS_INSECURE_MODE=true as a temporary workaround rather than a permanent solution.

Remove task runner from n8nio/n8n docker image

Starting with n8n 2.0, the main n8nio/n8n Docker image will no longer include the task runner for external mode. You must use the separate n8nio/runners Docker image to run task runners in external mode.

Migration path: If you run task runners in Docker with external mode, update your setup to use the n8nio/runners image instead of n8nio/n8n.

Remove Pyodide-based Python Code node and tool

n8n will remove the Pyodide-based Python Code node and tool and replace them with a task runner-based implementation that uses native Python for better security and performance. Starting in n8n 2.0, you can only use Python Code nodes with task runners in external mode and native Python tools.

The native Python Code node doesn't support built-in variables like _input or dot access notation, which were available in the Pyodide-based version. For details, see the Code node documentation.

The native Python tool supports _query for the input string that the AI Agent passes to the tool when it calls it.

Migration path: To continue using Python in Code nodes, set up task runners in external mode and review your existing Python Code nodes and tools for compatibility.

Disable ExecuteCommand and LocalFileTrigger nodes by default

n8n will disable the ExecuteCommand and LocalFileTrigger nodes by default because they pose security risks. These nodes allow users to run arbitrary commands and access the file system.

Migration path: If you need to use these nodes, remove them from the disabled nodes list in your n8n configuration by updating the NODES_EXCLUDE environment variable. For example, set NODES_EXCLUDE="[]" to enable all nodes, or remove only the specific nodes you need.

Require authentication on OAuth callback URLs by default

n8n will require authentication for OAuth callback endpoints by default. The default value for N8N_SKIP_AUTH_ON_OAUTH_CALLBACK will change from true (no authentication required) to false (authentication required).

Migration path: Before upgrading to n8n 2.0, set N8N_SKIP_AUTH_ON_OAUTH_CALLBACK=false and test your OAuth integrations to ensure they work with authentication enabled.

Set default value for N8N_RESTRICT_FILE_ACCESS_TO

n8n will set a default value for N8N_RESTRICT_FILE_ACCESS_TO to control where file operations can occur. This affects the ReadWriteFile and ReadBinaryFiles nodes. By default, these nodes can only access files in the ~/.n8n-files directory.

Migration path: Review your workflows that use file nodes and make sure they only access files in the allowed directory. If you need to allow access to other directories, set the N8N_RESTRICT_FILE_ACCESS_TO environment variable to your desired path.

Change the default value of N8N_GIT_NODE_DISABLE_BARE_REPOS to true

By default, the Git node will now block bare repositories for security reasons. The default value for N8N_GIT_NODE_DISABLE_BARE_REPOS is set to true, which means bare repositories are disabled unless you change this setting.

Migration path: If your workflows need to use bare repositories, set N8N_GIT_NODE_DISABLE_BARE_REPOS=false in your environment configuration to enable them.

Upgrade guide

Data

Drop MySQL/MariaDB support

n8n will no longer support MySQL and MariaDB as storage backends. This support was deprecated from n8n 1.0. For best compatibility and long-term support, use PostgreSQL. MySQL node will continue to be supported as before.

Migration path: Before upgrading to n8n 2.0, use the database migration tool to move your data from MySQL or MariaDB to PostgreSQL or SQLite.

Remove SQLite legacy driver

n8n will remove the legacy SQLite driver due to reliability issues. The pooling driver will become the default and only SQLite driver. The pooling driver uses WAL mode, a single write connection, and a pool of read connections. Our benchmarks show it can be up to 10 times faster.

Migration path: The sqlite-pooled driver will become the default automatically. You can enable pooling now by setting DB_SQLITE_POOL_SIZE to a value greater than 0. The default pool size will be set to 2.

Remove in-memory binary data mode

n8n will remove the default mode for N8N_DEFAULT_BINARY_DATA_MODE, which keeps execution binary data in memory during execution. For better performance and stability the following options will be available starting from n8n 2.0:

  • filesystem: Binary data is stored in the filesystem. Default option in regular mode.
  • database: Binary data is stored in the database. Default option in queue mode.
  • s3: Binary data is stored in S3 compatible store.

The N8N_AVAILABLE_BINARY_DATA_MODES setting will also be removed, so the mode is now determined only by N8N_DEFAULT_BINARY_DATA_MODE.

Migration path: Filesystem or database mode will be used automatically based on configuration. Make sure your n8n instance has enough disk space to store binary data. For details, see the binary data configuration.

Upgrade guide

Configuration & Environment

Upgrade dotenv

n8n loads environment configuration from a .env file using the dotenv library. The library will be upgraded from version 8.6.0 to the latest version, which may change how .env files are parsed. Key breaking changes include:

  • Backtick support (#615): If your values contain backticks, wrap them in single or double quotes.
  • Multiline support: You can now use multiline values.
  • # marks the beginning of a comment: Lines starting with # are treated as comments.

Migration path: Review the dotenv changelog and update your .env file to ensure compatibility with the new version.

Remove n8n --tunnel option

The n8n --tunnel command-line option will be removed from n8n 2.0.

Migration path: If you currently use the --tunnel option for development or testing, switch to an alternative tunneling solution such as ngrok, localtunnel, or Cloudflare Tunnel. Update your workflow and documentation to reflect this change.

Remove QUEUE_WORKER_MAX_STALLED_COUNT

The QUEUE_WORKER_MAX_STALLED_COUNT environment variable and the Bull retry mechanism for stalled jobs will be removed because they often caused confusion and didn't work reliably.

Migration path: Delete this environment variable from your configuration. After upgrading, n8n will no longer automatically retry stalled jobs. If you need to handle stalled jobs, consider implementing your own retry logic or monitoring.

Remove N8N_CONFIG_FILES

The N8N_CONFIG_FILES environment variable has been removed.

Migration path: Delete this environment variable from your configuration. Move configuration into environment variables, an .env file or _FILE based configuration.

Upgrade guide

CLI & Workflow

Replace CLI command update:workflow

The update:workflow CLI command will be deprecated and replaced by two new commands to deliver similar functionality and more clarity:

  • publish:workflow with parameters id and versionId (optional)
  • The --all parameter will be removed to prevent accidental publishing of workflows in production environments
  • unpublish:workflow with parameters id and all

Migration path: Use the new publish:workflow command to publish workflows individually by ID, optionally specifying a version. For unpublishing, use the new unpublish:workflow command. This provides better clarity and control over workflow publishing states.

Upgrade guide

External Hooks

Deprecated frontend workflow hooks

The hooks workflow.activeChange and workflow.activeChangeCurrent will be deprecated. These will be replaced by a new hook workflow.published. The new hook will be triggered when any version of a workflow is published.

Migration path: Update your code to use the new workflow.published hook instead of workflow.activeChange and workflow.activeChangeCurrent. This hook provides more consistent behavior and will be triggered whenever a workflow version is published.

Upgrade guide

Release channels

n8n has renamed the release channels from latest and next to stable and beta, respectively.

The stable tag designates the latest stable release, and the beta tag designates the latest experimental release. These tags are available on both npm and Docker Hub. For now, n8n will continue to tag releases as latest and next. These tags will be removed in a future major version.

Recommendation: Pin your n8n version to a specific version number, for example, 2.0.0.

Breaking

What changed?

The npm command is no longer available in the n8nio/runners image. Only pnpm is available for package management.

When is action necessary?

If you are extending the n8nio/runners image and using npm to install dependencies. Replace any npm install commands with pnpm install in your Dockerfile or scripts.

From github.com/n8n-io/n8n/blob/master/packages/cli/BREAKING-CHANGES.md

Full release notes for 2.0.0

2.0.1 – 2.42.0: no action items (178 versions; 107 backports, released after the next line began, are not on this route)

Release notes from github.com/n8n-io/n8n/releases, and packages/cli/BREAKING-CHANGES.md, and CHANGELOG.md, and n8n 2.0 breaking changes, checked 35 minutes ago. Only text the vendor marks as breaking, or puts in a warning/caution/important note, is shown; read the full notes for anything else. n8n keeps its breaking changes in packages/cli/BREAKING-CHANGES.md, one section per version (“What changed?”, “When is action necessary?”); each section is quoted whole as “Breaking” on its version. The “BREAKING CHANGES” sections of CHANGELOG.md (0.198.0, 1.0.0, 1.27.0) are quoted too, and each section of the docs page “n8n 2.0 breaking changes” is quoted as “Upgrade guide” on 2.0.0. GitHub release notes are commit lists and are not quoted. Versions come from npm (package n8n). No required stop is recorded: neither file nor the 2.0 page names a version to install first.