Upgrade custom functions to Node.js 24
Overview
From October 2026, you can only deploy mobile extensions with custom functions that were built with Node.js 24 or later. If you deploy an extension whose custom function uses an earlier Node.js version, the deployment fails.
Extensions that are already deployed keep working. You only need to upgrade a custom function before you deploy its extension again. Extensions without custom functions are not affected.
Upgrade every form in a package
A package can contain several forms, each with its own custom function. Upgrade the custom function of every form in the package, not only the form that you changed.Check which Node.js version a custom function uses
Open custom_functions/package.json in the form folder and find the engines field:
"engines": {
"node": "24"
}
- If
nodeis24, the custom function is already upgraded. - If
nodeis an earlier version, or theenginesfield is missing, follow the steps in this guide. A custom function without anenginesfield is built with Node.js 18.
Before you begin
Make sure you have the following:
-
The Skedulo CLI, installed as described in Install the Skedulo CLI, and logged in to your Skedulo team.
-
The mobile extensions CLI plugin:
sked plugins install @skedulo/plugin-mex -
Python 3.10 or later on your
PATH. The template command uses Copier, which the CLI installs for you. To check your version, runpython3 --version, orpy --versionon Windows. If the version is earlier than 3.10, install a newer one:- macOS: run
brew install python. The Python that comes with the Xcode command-line tools is version 3.9, which is too old. - Windows: install Python from python.org and select Add python.exe to PATH, or run
winget install Python.Python.3.12. - Linux: install Python 3.10 or later with your distribution’s package manager. Some older releases, such as Ubuntu 20.04, provide an earlier version by default. On these releases, install a newer version from python.org or your distribution’s additional package sources.
- macOS: run
-
Node.js 24.
-
Yarn.
Upgrade a custom function
Complete the following steps for each form that has a custom function.
1. Back up your project
Commit your project to source control, or make a copy of the form folder. You use this copy to review the changes and to restore any of your code that is overwritten.
2. Switch to Node.js 24
Check your local Node.js version:
node -v
If the output is not v24.x, install and switch to Node.js 24. For example, with nvm:
nvm install 24
nvm use 24
3. Sync the project with the Node.js 24 template
In the root folder of the form, which contains upload_config.json, run:
sked mex template sync-custom-function
When you are prompted for a project name, press Enter to accept the default.
The command makes the following changes in the custom_functions folder:
- Sets
engines.nodeto24. - Replaces the build configuration with the Node.js 24 version.
- Merges
package.jsonrather than replacing it. Template dependencies are upgraded, and dependencies that you added are kept.
If the command asks whether to overwrite a file, answer Yes for build and configuration files, and No for files that contain your own function logic, such as the files in src/functions.
4. Review the changes
Compare the project with your backup, for example with git diff. Restore any of your code that was overwritten, and check that custom_functions/package.json contains:
"engines": {
"node": "24"
}
5. Install dependencies and build
Go to the custom_functions folder, install the packages, and build the function:
cd custom_functions
yarn
yarn bundle
The project requires Node.js 24, so Yarn reports an error if you use a different version.
If the build fails, the cause is usually code or a dependency that doesn’t support Node.js 24. Upgrade any npm packages that you added to versions that support Node.js 24, and fix any code errors that the build reports.
6. Test the function locally
Start the local development server with your Skedulo API URL and an API token:
SKED_BASE_URL="https://api.skedulo.com" SKED_API_TOKEN="<your-api-token>" yarn dev
Use the API URL for your region. The server uses these values to generate GraphQL types from your team’s schema, and it listens on port 3000 by default. To use a different port, set PORT.
When the server starts, it shows:
App is running
Test your fetch and save functions against the local server before you deploy.
7. Deploy the extension
Deploy the extension as described in Use the Skedulo CLI to upload and manage your Skedulo Plus extension. The custom function is now built with Node.js 24.
Create a new custom function
New custom function projects use Node.js 24 by default. To create one, run the following command in the root folder of the form:
sked mex template sync-custom-function
Enter a project name when prompted. The project is created in a custom_functions folder. Continue from step 5.
Related
Feedback
Was this page helpful?