Files
n8n-docs/archive/review-checklist.md
Deborah Barnard 37600df69a clear out old link syntax (#3402)
Co-authored-by: Justin Ellingwood <justin@n8n.io>
2025-07-24 15:26:35 +01:00

6.0 KiB

Node review checklist

This checklist helps you build a node that meets the standards for submission to the community nodes collection. It also helps ensure that nodes are consistent and good quality.

Preparation

Set up your editor for code formatting (indentation, new lines, linting). If you use Visual Studio Code, you can use the TSLint extension for linting.
Get credentials (for example, Client ID, Client Secret, API key, user login, user password, website URL) for the service you are building a node for.

Development

If you're creating a node requested by a community member, make sure to comment on the feature request in the community forum.
Add complementary operations to each resource (for example, create, delete)
Programmatic-style only. Check the node works with more than one input item.
Ensure the parameters have the correct type.
Mind the defaults: if the service has a default as true, keep it as true. Changing default values can break the existing workflows of the users.
Check if the node disposes of everything. In particular, the node has closed all connections.
Check your code using the node linter.

Testing

Test "create" and "update" operations with all fields/operations.
Test the continueOnFail option with a Function node. For example, a Widget node has a GET operation that takes a widgetId and returns information on the widget. To test that the workflow continues on fail, set the Widget node to continue on fail, create a Function node, return a valid and an invalid widgetId, connect the Function node to Widget node, and run the workflow. The Widget node should show two items: one with information on the widget and another one with the error from having passed an invalid ID.)

Code formatting

Ensure the package lints cleanly by running npm run lint.
Ensure the indentation is correct. Check this in the editor configuration.
Ensure there are no extra spaces. Check this in the editor configuration.
Code comment dividers inside if-branches.
Use "create/delete" verbs for operations, except for tags, where you should use "add/remove."

Errors and outputs

Ensure empty API responses return { success: true }.
Ensure the node handles and displays error responses (for example, malformed requests, requests with invalid credentials) and use the current format. You can check this by making failing requests to the API.
Check if you can simplify the response. If so, add a simplify function (for example, SecurityScorecard node).
Ensure the response from Create is consistent with Get.
Ensure the response from Get All is consistent with Get.

Presentation

The primary menu shouldn't contain optional parameters.
Ensure a JSON object isn't shown in a single column in Table view.
Make sure all GetAll operations have the fields return and limit.
Set the property subtitle.
Make sure the pagination (if any) is working. Set Limit 1.

Writing

Ensure all descriptions are correct and end with a period.
Ensure that most descriptions exist, excluding redundant ones.
Capitalize IDs in displayNames (for example: "IDs" not "ids" or "Ids").
If there is more than one ID, ensure they have descriptive qualifiers.
Ensure the name property in description in the node class is in camelCase.
Ensure the file name and the class name are identical.

Branding

Check that brand names are correct (for example, "GitHub" not "Github").
If the node is a trigger node, show this in the name by adding "Trigger" after the service name (for example, "Trello Trigger").
Ensure the logo is either a PNG or SVG, ideally the latter. Vecta is a good website to find SVGs of different applications.
If the logo is an SVG, ensure the canvas is a perfect square. If the logo is PNG, ensure it's 60x60 pixels and compressed.
Ensure the border color of the node matches the branding of the service.

Nice-to-haves (optional)

Add handler for continueOnFail. This handler continues the workflow even if the node's execution fails.
Remove required: false and description: '' in the node descriptions (for example, Lemlist node).
At call site, specify first body and then qs.
At call site, prepend the endpoint with slash / (for example, "/campaign").