Build image
Workers Builds uses a build image with support for a variety of languages and tools such as Node.js, Python, PHP, Ruby, and Go.
Workers Builds supports a variety of runtimes, languages, and tools. Builds will use the default versions listed below unless a custom version is detected or specified. You can override the default versions using environment variables or version files. All versions are available for override.
| Tool | Default version | Environment variable | File |
|---|---|---|---|
| Go | 1.24.3 | GO_VERSION | |
| Node.js | 22.16.0 | NODE_VERSION | .nvmrc, .node-version |
| Python | 3.13.3 | PYTHON_VERSION | .python-version, runtime.txt |
| Ruby | 3.4.4 | RUBY_VERSION | .ruby-version |
| Tool | Default version | Environment variable |
|---|---|---|
| Bun | 1.2.15 | BUN_VERSION |
| Hugo | extended_0.147.7 | HUGO_VERSION |
| npm | 10.9.2 | |
| yarn | 4.9.1 | YARN_VERSION |
| pnpm | 10.11.1 | PNPM_VERSION |
| pip | 25.1.1 | |
| gem | 3.6.9 | |
| poetry | 2.1.3 | |
| pipx | 1.7.1 | |
| bundler | 2.6.9 |
If you need to override a specific version of a language or tool within the image, you can specify it as a build environment variable, or set the relevant file in your source code as shown above.
To set the version using a build environment variables, you can:
- Find the environment variable name for the language or tool and desired version (e.g.
NODE_VERSION = 22) - Add and save the environment variable on the dashboard by going to Settings > Build > Build Variables and Secrets in your Workers project
Or, to set the version by adding a file to your project, you can:
- Find the filename for the language or tool (e.g.
.nvmrc) - Add the specified file name to the root directory and set the desired version number as the file's content. For example, if the version number is 22, the file should contain '22'.
You can add the following build variable to disable automatic dependency installation and run a custom install command instead.
| Build variable | Value |
|---|---|
SKIP_DEPENDENCY_INSTALL | 1 or true |
In the following table, review the pre-installed packages in the build image. The packages are installed with apt, a package manager for Linux distributions.
curl | libbz2-dev | libreadline-dev |
git | libc++1 | libssl-dev |
git-lfs | libdb-dev | libvips-dev |
unzip | libgdbm-dev | libyaml-dev |
autoconf | libgdbm6 | tzdata |
build-essential | libgbm1 | wget |
bzip2 | libgmp-dev | zlib1g-dev |
gnupg | liblzma-dev | zstd |
libffi-dev | libncurses5-dev |
Workers Builds are run in the following environment:
| Build Environment | Ubuntu 24.04 |
| Architecture | x86_64 |
Preinstalled software (languages and tools) will be updated before reaching end-of-life (EOL). These updates apply only if you have not overridden the default version.
- Minor version updates: May be updated to the latest available minor version without notice. For tools that do not follow semantic versioning (e.g., Bun or Hugo), updates that may contain breaking changes will receive 3 months’ notice.
- Major version updates: Updated to the next stable long-term support (LTS) version with 3 months’ notice.
How you'll be notified (for changes requiring notice):
- Cloudflare Changelog ↗
- Dashboard notifications for projects that will receive the update
- Email notifications to project owners
To maintain a specific version and avoid automatic updates, override the default version.
To avoid unexpected build failures:
- Monitor announcements via the Cloudflare Changelog ↗, dashboard notifications, and email
- Pin specific versions of critical preinstalled software by overriding default versions
Was this helpful?
- Resources
- API
- New to Cloudflare?
- Directory
- Sponsorships
- Open Source
- Support
- Help Center
- System Status
- Compliance
- GDPR
- Company
- cloudflare.com
- Our team
- Careers
- © 2025 Cloudflare, Inc.
- Privacy Policy
- Terms of Use
- Report Security Issues
- Trademark
-