Releases: railwayapp/railpack
Release list
railpack v0.37.0
Breaking Changes
- Debian 13 base images: New builds now use Debian 13 (Trixie), requiring custom Apt package lists and pinned base images to be compatible with Debian 13. (#698)
- GCC 14 native builds: Native gem and extension compilation now uses GCC 14, treating incompatible pointer types as errors and potentially requiring dependency updates or compiler flags. (#705)
CLI
New
- Debian 13: Builder and runtime base images are now upgraded to Debian 13 (Trixie). Configure custom Apt packages with Debian 13 package names using
RAILPACK_DEPLOY_APT_PACKAGESordeploy.aptPackages. by @iloveitaly in #698
Fixed
- Debian 13: Builder images now include
libicu-devto ensure .NET restore and native gem compilation succeed on Debian 13, and Railpack warns during build planning when custom Apt packages are detected. by @iloveitaly in #705
Mise Upgrades
Updated mise from v2026.8.4 to v2026.8.6.
- Resumable downloads: Interrupted artifact downloads now resume via HTTP Range requests, and transient network errors such as HTTP/2 stream refusals are automatically retried. (v2026.8.6)
- Precompiled PyPy: PyPy can now be installed via precompiled binaries when compilation is disabled. (v2026.8.5)
- Node source patching: Node source builds can now apply local or remote patches before configuration using
node.apply_patches. (v2026.8.5) - Rust nightly toolchains: The rolling
nightlychannel resolves to concrete date-based toolchains for reproducible lockfiles and caching. (v2026.8.6)
Full Changelog: v0.36.4...v0.37.0
Internal improvements to documentation and dependency maintenance by @iloveitaly.
railpack v0.36.4
What's Changed
- chore: mise update 2026.8.4 by @github-actions[bot] in #689
- fix: exit 75 for transient failures by @edganiukov in #690
New Contributors
- @edganiukov made their first contribution in #690
Full Changelog: v0.36.3...v0.36.4
railpack v0.36.3
What's Changed
- Revert "fix: support multiline environment values and inheritance" by @coffee-cup in #687
- fix: drop empty env entries instead of keeping explicit empty values by @coffee-cup in #688
Full Changelog: v0.36.1...v0.36.3
railpack v0.36.2
Full Changelog: v0.36.1...v0.36.2
railpack v0.36.1
What's Changed
- feat(build): add RAILPACK_BUILT_AT runtime variable by @iloveitaly in #669
- feat(cli): add show-plan flag to info command by @iloveitaly in #684
- fix: support multiline environment values and inheritance by @iloveitaly in #685
- fix(mise): enable safe mode when reading app config by @coffee-cup in #686
Full Changelog: v0.36.0...v0.36.1
railpack v0.36.0
Providers
New
- Node: TanStack Start apps are detected via
@tanstack/react-startand are no longer treated as static Vite SPAs. If nostartscript is defined, Railpack installssrvxand starts withsrvx --prod -s ../client dist/server/server.js; for production Node deploys, configure Nitro per TanStack's hosting guidance. by @iloveitaly in #672 - Node: the default Node version is now
ltsinstead of a fixed major, and non-semver aliases such asltsresolve correctly through mise. Pin a version withRAILPACK_NODE_VERSION,engines.node, or a version file as described in the Node versions docs. by @iloveitaly in #650 - Node: projects with a
package-lock.jsonare detected as npm when no other package manager is configured. Prefer pinning Node and package manager versions for reproducible builds; see the dependency recommendations. by @iloveitaly in #677 - Rust: rust-toolchain.toml is honored as an idiomatic version file (including channel, profile, components, and targets). Add a root
rust-toolchain.tomlsuch aschannel = "1.85.0"and Railpack will install that toolchain via mise. by @iloveitaly in #676 - .NET: global.json is honored as an idiomatic version file so
sdk.versionselects the .NET SDK. Add a rootglobal.jsonsuch as{ "sdk": { "version": "8.0.100" } }to pin the SDK. by @iloveitaly in #675
CLI
New
- Build context:
.dockerignorepatterns (and top-levelexcludeinrailpack.json) are applied when the local source is first loaded into BuildKit, so large ignored directories likenode_modulesare no longer transferred during local builds. Configure exclusions in.dockerignoreor via top-levelexcludein railpack.json. by @iloveitaly in #373
Fixed
- Config: explicit
deploy.inputswith include filters are no longer overridden by an implicit full-step deploy output, preserving selections such as Next.js standalone output. by @radiantjade in #562 - Secrets: CLI
--envsecrets are preserved when a config file also defines secrets, instead of being dropped. by @cadeljones in #460
Mise Upgrades
Updated mise from v2026.7.15 to v2026.8.3.
- Precompiled Ruby: when
ruby.compileis unset, mise installs precompiled Ruby binaries by default and falls back to source builds only when no binary is available. (v2026.8.0) - Release-age filters:
minimum_release_ageand related filters use GitHub'spublished_attimestamp so newly published releases of older commits no longer bypass age gates across Aqua, GitHub, Ubi, and related backends. (v2026.8.3) - npm lockfile installs: packages pinned in
mise.lockare trusted through the low-download popularity gate, so locked npm tool installs no longer requireallow_low_downloads. (v2026.7.16) - Idiomatic version files: disable individual idiomatic files per tool with
idiomatic_version_file_disable_files(for examplenode:package.json) while keeping others active. (v2026.7.17)
Full Changelog: v0.35.0...v0.36.0
Internal improvements to testing, documentation, CI, and maintenance by @iloveitaly.
railpack v0.35.0
Providers
New
- Node & Python: Playwright browser installation is now opt-in, preventing unexpected image-size increases. Set
RAILPACK_NODE_PLAYWRIGHT_INSTALL=1orRAILPACK_PYTHON_PLAYWRIGHT_INSTALL=1when Playwright is a production dependency; see the Node and Python documentation. by @iloveitaly in #653
CLI
New
- Mise: Updated mise version from v2026.7.14 to v2026.7.15.
Full Changelog: v0.34.0...v0.35.0
Internal improvements to documentation, dependencies, and refactoring by @iloveitaly.
railpack v0.34.0
Providers
New
- Node.js: npm projects now use
npm installby default, preventing builds from failing whenpackage-lock.jsonis missing or out of sync. SetRAILPACK_NODE_NPM_INSTALL="npm ci"to opt into deterministic installs; Railpack also suggests committing missing npm and pnpm lockfiles, as described in the dependency recommendations. by @iloveitaly in #643
CLI
New
- Mise: Updated mise version from v2026.7.11 to v2026.7.14.
Full Changelog: v0.33.0...v0.34.0
Internal improvements to tests, snapshots, and dependency maintenance.
railpack v0.33.0
Providers
New
- SvelteKit: Projects using
@sveltejs/adapter-autonow automatically produce and run a Node server without manual adapter configuration. Keep@sveltejs/adapter-autoin your dependencies, and Railpack will selectadapter-nodeduring the build and start it withnode build. by @iloveitaly in #641
Fixed
- React Router: React Router SPA projects with
ssr: falseare now correctly detected and served as static sites, even when the defaultreact-router-serve ./build/server/index.jsstart script is present. by @iloveitaly in #604
CLI
New
- Apt Packages: Custom Apt package lists can now use the
...spread operator to retain packages generated by Railpack. Follow the package installation guide and configure"buildAptPackages": ["...", "build-essential"]or"deploy": { "aptPackages": ["...", "ffmpeg"] }; omit...when you intentionally want to replace the generated list. by @iloveitaly in #645
Fixed
- Mise: Railpack now uses musl-compatible mise binaries on Linux, fixing execution on Alpine and other musl-based hosts. by @iloveitaly in #642
Full Changelog: v0.32.0...v0.33.0
Internal improvements to integration testing, example coverage, logging, and documentation by @iloveitaly.
railpack v0.32.0
Providers
New
- Node: Railpack now supports Next.js applications in Nx workspaces, including projects that use inferred tasks instead of root build and start scripts. Single-app workspaces are selected automatically; for multi-app workspaces, select an app with
RAILPACK_NX_APP=web railpack build .. by @iloveitaly in #606
Fixed
- Node: Railpack now displays a build-plan warning when no package manager is detected and npm is selected by default. by @iloveitaly in #638
CLI
New
- Mise: Updated mise version from v2026.7.7 to v2026.7.11.
- Build Cache: The build command now supports
--no-cachefor rebuilding without cached layers while preserving package-manager cache mounts. Runrailpack build --no-cache .to perform a fresh build. by @iloveitaly in #516 - Build Output: Build progress and completion output is now easier to scan, with a distinct start header and a formatted summary containing the build duration and next command. by @iloveitaly in #640
- Runtime Images: Runtime images now expose
RAILPACK_VERSION, allowing applications and diagnostics to identify the Railpack version that produced the image. Access it through theRAILPACK_VERSIONenvironment variable inside the running container. by @iloveitaly in #633
Full Changelog: v0.31.2...v0.32.0
Internal improvements to frontend integration testing, CI, documentation, and local development tooling by @iloveitaly.