DEV Community

Cover image for n8n 3.0 removes the Function node, and published workflows stop activating
VOXA
VOXA

Posted on Originally published at voxahq.in

n8n 3.0 removes the Function node, and published workflows stop activating

n8n 3.0.0 shipped as a beta on 27 October, stable lands in early December, and it is an operational release rather than a feature release. Around three dozen legacy nodes go away, including Function, Function Item, Item Lists, Cron and Interval.

The dangerous sentence is in n8n's own docs: "Workflows that use a removed node fail when they run. If such a workflow is published, it doesn't activate when n8n 3.0 starts, so its triggers stop firing."

No red execution. No retry. No email. The workflow is simply not active, and you find out from a customer.

The mapping

Removed in 3.0        Use instead
--------------------  ----------------------------------------------
Function              Code node, Run Once for All Items
Function Item         Code node, Run Once for Each Item
Item Lists            Split Out, Aggregate, Sort, Limit, Remove Duplicates, Summarize
Cron, Interval        Schedule Trigger
HTML Extract          current node version
iCalendar             current node version
Binary file nodes     current node versions
Enter fullscreen mode Exit fullscreen mode

Some migrations are automatic (the AI Transform node becomes a Code node with the same generated JavaScript). Function and Function Item are not. You replace those yourself.

Find them in ten minutes

  1. Settings, then Migration Report. Exists from 2.39 onwards, and it lists the affected workflows, nodes and settings on your own instance. Save a copy.
  2. On an older version, upgrade to 2.39 first. The report is worth one small, reversible upgrade.
  3. Count the node types yourself. Export workflows through /api/v1/workflows or the CLI and search the JSON for n8n-nodes-base.function, functionItem, itemLists, n8n-nodes-base.cron, n8n-nodes-base.interval.
  4. Write the list down with workflow name, node and purpose. That list is your upgrade plan and your rollback argument.

Fix on 2.x, not after

The Function to Code conversion is the only real work, because the execution model changes:

// Function (legacy): input is items, you return an array of items
return items.map(item => ({ json: { ...item.json, seen: true } }));

// Code, Run Once for All Items: read all input, return an array
const items = $input.all();
return items.map(item => ({ json: { ...item.json, seen: true } }));
Enter fullscreen mode Exit fullscreen mode

For Function Item, use Code with Run Once for Each Item: the input is a single item and you return that item's new data.

Test each migrated workflow on 2.x, run it once manually, check the output shape the next node expects, then publish. Then upgrade, with a backup, because 3.0 cannot be rolled back.

The check nobody does after upgrading

Open the workflow list and look at the active toggle on every workflow, not only the ones you migrated. A workflow that lost activation looks identical to a healthy one in a screenshot. The list is the only place the difference shows, and only if you look.


Full guide with the audit steps and sources: voxahq.in. No affiliate links.

Top comments (0)