Changelog
v0.35.0
Section titled “v0.35.0”July 28, 2026 · GitHub release
Providers
Section titled “Providers”- 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
- Mise: Updated mise version from v2026.7.14 to v2026.7.15.
Full Changelog: v0.34.0…v0.35.0
v0.34.0
Section titled “v0.34.0”July 27, 2026 · GitHub release
Providers
Section titled “Providers”- 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
- Mise: Updated mise version from v2026.7.11 to v2026.7.14.
Full Changelog: v0.33.0…v0.34.0
v0.33.0
Section titled “v0.33.0”July 23, 2026 · GitHub release
Providers
Section titled “Providers”- 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
- 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
- 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
- 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
v0.32.0
Section titled “v0.32.0”July 22, 2026 · GitHub release
Providers
Section titled “Providers”- 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
- Node: Railpack now displays a build-plan warning when no package manager is detected and npm is selected by default. by @iloveitaly in #638
- 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
v0.31.2
Section titled “v0.31.2”July 20, 2026 · GitHub release
Providers
Section titled “Providers”- PHP: PHP applications using a single Mise-managed runtime package now include it in the deploy image. by @jordyvandomselaar in #635
- Mise: Updated mise version from v2026.7.6 to v2026.7.7.
Full Changelog: v0.31.1…v0.31.2
v0.31.1
Section titled “v0.31.1”July 15, 2026 · GitHub release
Providers
Section titled “Providers”- Python: Poetry is now installed via mise’s native poetry package instead of pipx, improving environment integration. by @iloveitaly in #625
- Mise: Updated mise version from v2026.7.5 to v2026.7.6.
Full Changelog: v0.31.0…v0.31.1
v0.31.0
Section titled “v0.31.0”July 13, 2026 · GitHub release
- Build: The
buildcommand now supports BuildKit cache import and export via--cache-fromand--cache-to, using the same syntax as docker buildx. For example:railpack build --cache-from type=registry,ref=my.registry/cache --cache-to type=registry,ref=my.registry/cache,mode=max .by @mvanhorn in #595 - Build:
railpack buildnow uses credentials from your Docker CLI config ($DOCKER_CONFIG, default~/.docker/config.json) so BuildKit can pull from and push to private registries. Log in withdocker loginfirst if needed. by @iloveitaly in #623 - Mise: Updated mise version from v2026.7.2 to v2026.7.5.
Full Changelog: v0.30.1…v0.31.0
v0.30.1
Section titled “v0.30.1”July 9, 2026 · GitHub release
- Mise: Updated mise version from v2026.6.12 to v2026.7.2.
Full Changelog: v0.30.0…v0.30.1
v0.30.0
Section titled “v0.30.0”June 22, 2026 · GitHub release
Providers
Section titled “Providers”- Deno: Railpack now reads Deno versions from
.deno-versionfiles using mise idiomatic version file support. Add a.deno-versionfile to your project root (for example,2.2.2) to pin the Deno runtime for your deployment — see version detection for the full precedence order. by @iloveitaly in #608
- Python, Ruby, Deno:
RAILPACK_PYTHON_VERSION,RAILPACK_RUBY_VERSION, andRAILPACK_DENO_VERSIONenvironment variables now correctly override local version files and mise configuration during builds, matching the documented precedence order. Set these in your deployment environment when you need to pin a runtime version independently of repository config. by @Vunas in #610
- Mise: Updated mise version from v2026.6.11 to v2026.6.12.
Full Changelog: v0.29.0…v0.30.0
v0.29.0
Section titled “v0.29.0”June 18, 2026 · GitHub release
Providers
Section titled “Providers”-
Node: Railpack now detects and deploys Next.js apps configured for static export as SPAs, serving the built site with Caddy. Set
output: 'export'in yournext.config.ts(or.js/.mjs) and Railpack will build and serve the static output fromout(or your configureddistDir). See the Node.js SPA documentation for details. by @iloveitaly in #602 -
Node: Node SPA deployments now honor the
index_fallbackkey in aStaticfileat your project root. SPA routing is unchanged by default, but you can setindex_fallback: falseto disableindex.htmlfallback on unknown routes—useful for multi-page static sites that need custom 404 pages. See the Node.js SPA documentation for details. by @iloveitaly in #582 -
Node: Bun-only apps with no dependencies no longer install Node.js in the final image when it isn’t needed. by @iloveitaly in #601
-
Node: Expo projects using the default
expo startcommand are no longer incorrectly treated as having a custom start command, so SPA detection works as expected. by @iloveitaly in #582 -
Node:
RAILPACK_NODE_VERSIONnow correctly takes precedence overengines.nodeinpackage.json, matching the documented version resolution order. by @iloveitaly in #601
Full Changelog: v0.28.0…v0.29.0
v0.28.0
Section titled “v0.28.0”June 17, 2026 · GitHub release
Providers
Section titled “Providers”- Expo Web: Railpack now detects Expo Web projects configured for static export as SPAs and serves the built output from
distwith the static file server. Configureexpo.web.outputtostaticorsingleinapp.json, ensureexpoandreact-native-webare in your dependencies, and add abuildscript such asexpo export --platform webto yourpackage.json. by @iloveitaly in #585
- Node: Increased the default npm fetch retry count to 5 (
NPM_CONFIG_FETCH_RETRIES=5) to improve build reliability against transient registry network errors during dependency installation. by @iloveitaly in #598
- Mise: Updated mise version from v2026.6.10 to v2026.6.11.
Full Changelog: v0.27.2…v0.28.0
v0.27.2
Section titled “v0.27.2”June 16, 2026 · GitHub release
- Mise: Updated mise version from v2026.6.5 to v2026.6.10.
Full Changelog: v0.27.1…v0.27.2
v0.27.1
Section titled “v0.27.1”June 13, 2026 · GitHub release
update mise to 2026.6.5
v0.27.0
Section titled “v0.27.0”June 9, 2026 · GitHub release
Providers
Section titled “Providers”- Elixir: Elixir 1.20 now maps to Erlang 29, so projects on Elixir 1.20 build with the correct OTP version. by @iloveitaly in #583
- Mise: Updated mise version from v2026.6.0 to v2026.6.1.
Runtime
Section titled “Runtime”- Locale: Builder and runtime images now include the
en_US.UTF-8locale, fixing warnings and breakage for apps that depend on locale-aware behavior (such as Python or Ruby). Railpack does not setLANGorLC_ALLby default — enable UTF-8 by adding them todeploy.variablesin yourrailpack.json(for example,"LANG": "en_US.UTF-8"). by @iloveitaly in #576 - Timezone: Builder and runtime images now include
tzdataby default, so named timezones work out of the box when you setTZor use libraries that read the zoneinfo database. by @iloveitaly in #580
Full Changelog: v0.26.1…v0.27.0
v0.26.1
Section titled “v0.26.1”June 4, 2026 · GitHub release
Providers
Section titled “Providers”- Node: pnpm 11+ projects now build correctly by adding
PNPM_HOME/binto thePATHso the pre-installnode-gypstep can be found, including whenengines.pnpmuses x-range notation like"11.5.x". by @iloveitaly in #581
- Mise: Updated mise version from v2026.5.18 to v2026.6.0.
Full Changelog: v0.26.0…v0.26.1
v0.26.0
Section titled “v0.26.0”June 2, 2026 · GitHub release
Providers
Section titled “Providers”- Node (pnpm): Railpack now sets
PNPM_HOMEto/opt/pnpmandPNPM_STORE_DIRto/opt/pnpm/storeduring every pnpm install so BuildKit caches the store path pnpm actually uses. This fixes missed install cache hits when newer pnpm versions write outside the old hardcoded store location. by @iloveitaly in #569
-
Config: Custom runtime images set via
deploy.baseinrailpack.jsonare now applied to the generated deploy step. Previously Railpack parseddeploy.basebut did not use it when building the final image; configured bases are used as the deploy filesystem and as the input for runtime apt package layers when those are enabled. by @radiantjade in #561 -
Mise: Builds no longer fail when
mise.lockpins a tool version newer than the default 14-day minimum release age while your config requestslatest. Host-side version resolution applies the age filter first, then falls back when a pinned lockfile version would otherwise be excluded. by @iloveitaly in #575
Full Changelog: v0.25.0…v0.26.0
v0.25.0
Section titled “v0.25.0”June 1, 2026 · GitHub release
Providers
Section titled “Providers”-
Node: Railpack now detects and builds projects that use
package.json5manifests (in addition topackage.json), including workspace and dependency parsing. If both files exist,package.jsontakes precedence. by @iloveitaly in #566 -
Node: Node 25+ apps that use Corepack (for example
packageManager: "pnpm@...") now include the mise install and shim directories in the runtime image, so package managers likepnpmremain available when your start command runs after the build. by @iloveitaly in #568
- Node:
engines.pnpmin your manifest now takes precedence over pnpm version inferred frompnpm-lock.yaml, avoiding ambiguous lockfile version mapping across major pnpm releases. See package and version resolution for how Railpack resolves tool versions. by @iloveitaly in #566
-
Config: The
providerfield inrailpack.jsonis now listed in the generated JSON schema (railpack schema), with the same values documented in the config file guide. Provider names are matched case-insensitively, so lowercase values likeelixiranddotnetwork as documented. by @radiantjade in #558 -
Mise: Updated mise version from v2026.5.16 to v2026.5.18.
Full Changelog: v0.24.0…v0.25.0
v0.24.0
Section titled “v0.24.0”May 29, 2026 · GitHub release
Providers
Section titled “Providers”- Node: Package manager versions for pnpm, bun, and yarn defined in mise config (
mise.toml,.tool-versions, etc.) now take priority over versions inferred from lockfiles or project metadata. Pin a version in your config—for examplepnpm = "10.4.1"inmise.toml—and Railpack will use it consistently across the build. See Node.js versions and Mise configuration. by @iloveitaly in #564
-
Node: Builds using pnpm 11+ now add
PNPM_HOME/bintoPATH, matching pnpm’s new layout so global tools likenode-gypinstall and run correctly. by @iloveitaly in #564 -
Ruby: Ruby source builds no longer install rdoc, avoiding locale-related compile failures during
mise install. by @iloveitaly in #564 -
Elixir: Elixir provider environment variables (locale,
MIX_ENV,MIX_HOME, etc.) are now applied to the mise install step so Erlang and Elixir install with the same settings as the rest of the build. by @iloveitaly in #564 -
Python: Projects using Poetry, PDM, or Pipenv via pipx now also install
uv, which newer mise requires whenpipx.uvxis enabled. by @iloveitaly in #564
- Mise: Updated mise version from v2026.3.17 to v2026.5.16.
- Mise: Generated
/etc/mise/config.tomlnow setsminimum_release_ageinstead of the renamedinstall_beforesetting, matching current mise behavior. Override it in your own mise configuration if needed. by @iloveitaly in #564
Full Changelog: v0.23.0…v0.24.0
v0.23.0
Section titled “v0.23.0”March 30, 2026 · GitHub release
Providers
Section titled “Providers”- Staticfile: Added a configurable index fallback to the Staticfile provider, allowing users to toggle SPA-style routing for their applications. by @iloveitaly in #534
To enable SPA routing, add
index_fallback: trueto yourStaticfileconfiguration to have non-existent paths served byindex.html.
- Mise: Updated mise version from v2026.3.15 to v2026.3.17. in #539
- Mise: Introduced a new installation policy that defaults to tool versions released at least 14 days ago to avoid broken or incomplete tool versions. by @iloveitaly in #540 This setting improves stability for runtime environments like Python and Ruby by allowing upstream releases time to stabilize before they are used in production builds.
- Verbose Mode: Added support for the
RAILPACK_VERBOSEenvironment variable to enable verbose logging and improved debug logs for mise execution. by @iloveitaly in #536 SetRAILPACK_VERBOSE=1to enable detailed debug output, including the full command string and captured output from mise during execution.
- Configuration: Improved root directory detection by trimming whitespace from environment variables and configuration values. by @iloveitaly in #534
Full Changelog: v0.22.2…v0.23.0
v0.22.2
Section titled “v0.22.2”March 26, 2026 · GitHub release
- Mise: Updated mise version from v2026.3.13 to v2026.3.15. in #532
Full Changelog: v0.22.1…v0.22.2
v0.22.1
Section titled “v0.22.1”March 24, 2026 · GitHub release
- Mise: Updated mise version from v2026.3.12 to v2026.3.13.
Full Changelog: v0.22.0…v0.22.1
v0.22.0
Section titled “v0.22.0”March 23, 2026 · GitHub release
- Configuration: Railpack now uses a global
mise.tomlto store default tool configurations instead of environment variables, allowing users to naturally override defaults via their project’s localmise.tomlfile. This change makes it easier to customize tool versions and settings without needing to manage complex environment variables. For example, you can now add a[settings]section to your project’smise.tomlto specify exact settings that Railpack should use. by @iloveitaly in #504 - Mise: Updated mise version from v2026.3.10 to v2026.3.12.
Full Changelog: v0.21.0…v0.22.0
v0.21.0
Section titled “v0.21.0”March 21, 2026 · GitHub release
What’s Changed
Section titled “What’s Changed”- fix: expose shell completion subcommand by @iloveitaly in #520
- test: add arm builds by @iloveitaly in #509
- feat: additional mise config and idiomatic version files enabling precompiled ruby support by @iloveitaly in #487
- chore: mise update 2026.3.10 by @github-actions[bot] in #522
Full Changelog: v0.20.0…v0.21.0
v0.20.0
Section titled “v0.20.0”March 18, 2026 · GitHub release
Providers
Section titled “Providers”- BuildKit: Images and build cache are now exported in parallel, significantly reducing the time spent in the final stages of the build process. This feature utilizes the latest BuildKit v0.28.0 capabilities and is enabled automatically for all
railpack buildoperations. by @iloveitaly in #515 - Shell: Added native support for Fish shell completion. You can generate the completion script for your shell by running
railpack completion fishand adding it to your fish configuration. by @iloveitaly in #515 - toml 1.1 features are supported. This could have caused errors in the past if railpack read a toml file with previously unsupported features
- Mise: Updated the internal environment variable to
MISE_SYSTEM_CONFIG_DIRto ensure better compatibility and isolation from host configurations when runningrailpack. by @iloveitaly in #517
Full Changelog: v0.19.0…v0.20.0
v0.19.0
Section titled “v0.19.0”March 16, 2026 · GitHub release
Providers
Section titled “Providers”- Mise Updated mise version from v2026.2.14 to v2026.3.9.
- Node.js: Node.js projects using Bun now support bunfig.toml during the installation step. This ensures custom registries and install behaviors are correctly applied when running
bun install. by @iloveitaly in #477 - Ruby: Upgraded to jemalloc2 for Ruby projects to resolve errors on ARM architecture and improve memory performance. This is enabled by default. by @iloveitaly in #338
- Python: Added documentation and an example for using compiled Python as an escape hatch when pre-built binaries are not available for specific versions. This allows developers to use specific Python builds by opting into compilation during the build process. by @iloveitaly in #503
- Ruby: Default Ruby versions are now pinned to the minor version instead of a specific patch to allow for automatic security updates and better compatibility with pre-built binaries. by @iloveitaly in #488
- Staticfile: Switched to a binary installer for Caddy to achieve smaller image sizes for static site deployments. by @iloveitaly in #478
- CLI: The CLI now issues a warning if no start command is detected during the build process, providing clearer feedback on potentially missing configuration. by @iloveitaly in #490
Full Changelog: v0.18.0…v0.19.0
v0.18.0
Section titled “v0.18.0”March 9, 2026 · GitHub release
This is mostly an internal release to ensure that the mise version used in the planning, building, and runtime images are all in sync.
The only user-facing change in this release in bumping the build and runtime mise version to 2026.2.22.
Full Changelog: v0.17.2…v0.18.0
v0.17.2
Section titled “v0.17.2”February 12, 2026 · GitHub release
What’s Changed
Section titled “What’s Changed”- chore: mise update 2026.1.12 by @iloveitaly in #451
- fix: eliminate additional logs when using –dump-llb by @iloveitaly in #452
- feat(python): Scan nested dependency files in usesDep by @half0wl in #457
New Contributors
Section titled “New Contributors”- @half0wl made their first contribution in #457
Full Changelog: v0.17.1…v0.17.2
v0.17.1
Section titled “v0.17.1”January 19, 2026 · GitHub release
What’s Changed
Section titled “What’s Changed”- fix: revert playwright support by @iloveitaly in #447
Full Changelog: v0.17.0…v0.17.1
v0.17.0
Section titled “v0.17.0”January 19, 2026 · GitHub release
Providers
Section titled “Providers”- Node & Python: We’ve added automatic Playwright support for Node.js and Python projects. Railpack now detects Playwright dependencies and automatically installs the required system packages and browsers. by @iloveitaly in #348
- Shell: The shell provider now supports a
miseinstall phase, allowing you to define tools to install before your script runs. by @iloveitaly in #433
- Node: Consistent Node version resolution is now used when Bun is the package manager. by @iloveitaly in #359
- Node: Trailing whitespace in the
packageManagerfield ofpackage.jsonis now handled correctly. by @iloveitaly in #432 - Node: Improved detection of version files (like
.nvmrc) using Mise’s idiomatic parsing. by @iloveitaly in #431 - Python: Builds are now faster for projects using
psycopg-binaryas unnecessary system dependencies (libpq-dev) are skipped. by @iloveitaly in #379 - Python:
.python-versionfiles are now reliably detected in all environments. by @iloveitaly in #378
- Dockerignore: Negation rules (e.g.,
!file) in.dockerignorenow work correctly even if the referenced file does not exist locally. by @iloveitaly in #437 - Config: The
providerfield is no longer required inrailpack.json. by @iloveitaly in #436
Full Changelog: v0.16.0…v0.17.0
v0.16.0
Section titled “v0.16.0”January 14, 2026 · GitHub release
Providers
Section titled “Providers”- Python: Projects with
start.pyorbot.pyare now automatically detected as Python apps. This simplifies configuration for simple scripts and bots (e.g. Discord bot that don’t have manifest files. by @coffee-cup in #416
- Dotnet: The web server now correctly listens on the port defined by the
PORTenvironment variable. See the updated documentation. by @iloveitaly in #401
- Build: Generated Docker image names are now forced to lowercase to prevent build errors with registries that require lowercase repositories. by @iloveitaly in #410
Full Changelog: v0.15.3…v0.15.4
v0.15.4
Section titled “v0.15.4”December 20, 2025 · GitHub release
Providers
Section titled “Providers”- Dotnet: set aspnet content root to properly find configuration files by @iloveitaly and @Mohs9n in #396
- Erlang: There is an underlying bug in mise that causes the version selection to break. This has been fixed within Railpack and an upstream change has been submitted to mise.
Full Changelog: v0.15.2…v0.15.3
v0.15.3
Section titled “v0.15.3”December 19, 2025 · GitHub release
What’s Changed
Section titled “What’s Changed”- sync mise version between Go code and Dockerfile by @coffee-cup in #394
Full Changelog: v0.15.2…v0.15.3
v0.15.2
Section titled “v0.15.2”December 19, 2025 · GitHub release
What’s Changed
Section titled “What’s Changed”- update mise veresions by @coffee-cup in #389
- build mise image faster by @coffee-cup in #390
- release build mise for now by @coffee-cup in #391
- install mise from script by @coffee-cup in #392
- fix builder mise location by @coffee-cup in #393
Full Changelog: v0.15.1…v0.15.2
v0.15.1
Section titled “v0.15.1”December 1, 2025 · GitHub release
What’s Changed
Section titled “What’s Changed”- perf: optimize plan command for large monorepos by @coffee-cup in #382
- fix: deduplicate deploy inputs when using –build-cmd by @coffee-cup in #381
Full Changelog: v0.15.0…v0.15.1
v0.15.0
Section titled “v0.15.0”November 29, 2025 · GitHub release
What’s Changed
Section titled “What’s Changed”- chore: mise update 2025.11.8 by @iloveitaly in #377
- fix: consider exclude patterns when determining LLB merge eligibility by @coffee-cup in #380
Full Changelog: v0.14.0…v0.15.0
v0.14.0
Section titled “v0.14.0”November 24, 2025 · GitHub release
Providers
Section titled “Providers”- C/C++: We’ve added a C/C++ provider supporting CMake and Meson build systems. by @aleksrutins in #319
- Python: We’ve added automatic start command detection for FastAPI applications using
uvicorn. by @iloveitaly in #353
- Python: We’ve fixed detection of
psycopg(v3) to ensure required system dependencies (libpq) are installed. by @iloveitaly in #350 - General: We’ve replaced fuzzy file matching with exact checks to prevent false positives when detecting providers. by @iloveitaly in #347
- General:
miseconfiguration files in the application directory are now automatically trusted, suppressing “untrusted config” warnings. by @iloveitaly in #352
Full Changelog: v0.13.0…v0.14.0
v0.13.0
Section titled “v0.13.0”November 18, 2025 · GitHub release
Providers
Section titled “Providers”- Node: Added support for Node.js v25 by ensuring
libatomic1is explicitly installed. by @iloveitaly in #259 - Node: Railpack now ensures Node.js is available during the build phase via mise even when not required for the runtime (e.g. when using Bun), ensuring packages requiring
node-gypbuild correctly. by @iloveitaly in #259
- Node: We’ve improved how
node_modulescaching works during the build phase, specifically fixing issues where commands likenpm ci(which removenode_modules) caused build failures. See the Node documentation for more details. by @iloveitaly in #259
- Mise: Updated the internal
miseversion to 2025.11.6. by @iloveitaly in https://github.com/railwayapp/railpack/commit/d249231615dda1f2b4d7ade419f07890e2896079
- Mise: Added backoff retries for
miseregistry downloads to help prevent build failures during intermittent network issues. by @iloveitaly in #360
Full Changelog: v0.12.0…v0.13.0
v0.12.0
Section titled “v0.12.0”November 17, 2025 · GitHub release
Providers
Section titled “Providers”- Go: The Go provider now respects the Go version specified in your
miseconfiguration files (e.g.,mise.toml,.tool-versions). by @iloveitaly in #300 - Ruby: The Ruby provider now respects the Ruby version specified in your
miseconfiguration files (e.g.,mise.toml,.tool-versions). by @iloveitaly in #339 - Node: For Bun projects that require Node.js for build tooling (like
node-gyp), Railpack now installs Node.js usingmise, respecting versions from.nvmrc,.node-version, and othermiseconfigurations. by @iloveitaly in #341 - Gleam: You can now include your project’s source code in the final image by setting the
RAILPACK_GLEAM_INCLUDE_SOURCE=trueenvironment variable. by @iloveitaly in #318
- Python: The Python provider now configures
pipxto useuvfor installing packages, resulting in faster dependency installation. by @iloveitaly in #324 - All: Railpack now parses
miseconfiguration files (likemise.tomland.tool-versions) more idiomatically, improving compatibility and correctness. by @iloveitaly in #344
- Caching: You can now disable specific caches during the build process by setting the
RAILPACK_DISABLE_CACHEenvironment variable. For example, to disable theaptandpipcaches, setRAILPACK_DISABLE_CACHE="apt,pip". To disable all caches, set it to*. by @aleksrutins in #316
- Security: Railpack now enables
mise’s “paranoid mode” by default, a security feature that requires explicit user consent before installing new tools or running code from project-specific configurations. by @iloveitaly in #336
Full Changelog: v0.11.0…v0.12.0
v0.11.0
Section titled “v0.11.0”November 11, 2025 · GitHub release
Providers
Section titled “Providers”- Dotnet: Railpack now supports building .NET applications. The provider defaults to the latest LTS version of .NET, and the version can be customized using
miseconfiguration files (e.g.,.tool-versions,mise.toml). by @jaredLunde and @iloveitaly in #126 and #323 - Shell: The Shell provider now supports
zshas an interpreter and automatically detects the required shell (bash or zsh) from your start script’s shebang (e.g.,#!/bin/zsh). by @iloveitaly in #328 and #327 - Deno: You can now specify the Deno version for your project using
miseconfiguration files like.tool-versionsormise.tomlwith the Deno provider. by @iloveitaly in #325
Full Changelog: v0.10.0…v0.11.0
v0.10.0
Section titled “v0.10.0”November 6, 2025 · GitHub release
Providers
Section titled “Providers”- Gleam: Railpack now has first-class support for Gleam projects. by @aleksrutins in #313
- Elixir: Erlang and Elixir versions defined in
miseconfig files (e.g.,mise.toml,.tool-versions) will now be used instead of Railpack’s defaults. by @iloveitaly in #306 - Node.js: The
enginesfield inpackage.jsonis now used to determine the versions of Node.js and the package manager (npm, yarn, pnpm), but only if a version is not specified in a lockfile or other config. by @iloveitaly in #251 For example, to use Node.js v20 and pnpm v9, you can add the following to yourpackage.json:{"engines": {"node": "20.x","pnpm": "9.x"}}
- Python:
misePython compilation is disabled by default to avoid package compilation issues on newly released python versions. by @coffee-cup in #301
Full Changelog: v0.9.2…v0.10.0
v0.9.2
Section titled “v0.9.2”October 22, 2025 · GitHub release
What’s Changed
Section titled “What’s Changed”- chore: mise update 2025.10.11 by @iloveitaly in #297
- docs: fix env var display on docs by @iloveitaly in #298
- docs: update python with mise-compatible version files by @crisog in #290
- fix: use default mise backend for uv by @iloveitaly in #260
- test: http checks on example projects by @iloveitaly in #250
- chore: mise update 2025.10.13 by @iloveitaly in #302
- build: add mise upgrade task by @iloveitaly in #303
- test: assert against specific rust version defined by rust-toolchain.toml by @iloveitaly in #299
- fix: use channel key not version from rust-toolchain.toml by @iloveitaly in #304
- refactor: cleanup rust provider by @iloveitaly in #305
- docs: minor docs and comments by @iloveitaly in #309
New Contributors
Section titled “New Contributors”- @crisog made their first contribution in #290
Full Changelog: v0.9.1…v0.9.2
v0.9.1
Section titled “v0.9.1”October 16, 2025 · GitHub release
What’s Changed
Section titled “What’s Changed”- fix: support + character in environment variable names by @coffee-cup in #294
Full Changelog: v0.9.0…v0.9.1
v0.9.0
Section titled “v0.9.0”October 7, 2025 · GitHub release
What’s Changed
Section titled “What’s Changed”- fix: use containerd platform parsing to fix platform parsing by @iloveitaly in #277
- test: php snapshot update by @iloveitaly in #280
- chore: mise update 2025.9.19 by @iloveitaly in #281
- feat: add –hide-pretty-plan and –show-plan to prepare by @iloveitaly in #284
- feat: use py package versions from any mise-supported version specification file by @iloveitaly in #261
- chore: mise update 2025.9.25 by @iloveitaly in #288
- chore: mise update 2025.10.4 by @iloveitaly in #289
Full Changelog: v0.8.0…v0.9.0
v0.8.0
Section titled “v0.8.0”September 25, 2025 · GitHub release
What’s Changed
Section titled “What’s Changed”- chore: mise update 2025.9.17 by @iloveitaly in #274
- feat: dockerignore support by @iloveitaly in #263
- fix: missing local layer usage by @iloveitaly in #276
- chore: mise update 2025.9.18 by @iloveitaly in #275
Full Changelog: v0.7.2…v0.8.0
v0.7.2
Section titled “v0.7.2”September 19, 2025 · GitHub release
What’s Changed
Section titled “What’s Changed”- fix: gracefully handle resolution failures for packages with SkipMiseInstall=true by @coffee-cup in #273
Full Changelog: v0.7.1…v0.7.2
v0.7.1
Section titled “v0.7.1”September 17, 2025 · GitHub release
What’s Changed
Section titled “What’s Changed”- Add configurable skippable commands list to pretty print output by @coffee-cup in #271
Full Changelog: v0.7.0…v0.7.1
v0.7.0
Section titled “v0.7.0”September 16, 2025 · GitHub release
What’s Changed
Section titled “What’s Changed”- Update Rust examples by @coffee-cup in #268
- Update default versions for Go, Python, Ruby, and Rust providers by @coffee-cup in #267
Full Changelog: v0.6.1…v0.7.0
v0.6.1
Section titled “v0.6.1”September 16, 2025 · GitHub release
What’s Changed
Section titled “What’s Changed”- test: use poetry cli to run python by @iloveitaly in #257
- chore: mise update 2025.9.9 by @iloveitaly in #262
- fix: remove python3-dev apt package by @iloveitaly in #256
- Update node examples by @railway-bot in #266
New Contributors
Section titled “New Contributors”- @railway-bot made their first contribution in #266
Full Changelog: v0.6.0…v0.6.1
v0.6.0
Section titled “v0.6.0”September 11, 2025 · GitHub release
What’s Changed
Section titled “What’s Changed”- feat: support for expanded platform arguments by @iloveitaly in #246
- chore: mise update 2025.9.6 by @iloveitaly in #254
- fix: hard fail on invalid railpack.json by @iloveitaly in #226
- feat: add support for .bun-version file by @coffee-cup in #258
Full Changelog: v0.5.1…v0.6.0
v0.5.1
Section titled “v0.5.1”September 5, 2025 · GitHub release
What’s Changed
Section titled “What’s Changed”- Revert “fix: use default mise backends for python packages” by @coffee-cup in #252
Full Changelog: v0.5.0…v0.5.1
v0.5.0
Section titled “v0.5.0”September 4, 2025 · GitHub release
What’s Changed
Section titled “What’s Changed”- chore: mise update 2025.8.21 by @iloveitaly in #236
- test: fix php snapshot by @iloveitaly in #239
- fix(install): handle GitHub API throttling by @lionello in #235
- fix: add -e alias for –env by @iloveitaly in #243
- test: assert against exact yarn package manager versions by @iloveitaly in #238
- fix: fail early if no shell start script is detected, stop globbing shell script by @iloveitaly in #240
- fix: fallback to raw version when no package versions exist by @iloveitaly in #245
- test: pass GITHUB_TOKEN to docker containers running the railpack buildplan by @iloveitaly in #247
- fix: support node projects without dependencies by @iloveitaly in #242
- feat: support react router build cache by @iloveitaly in #244
- fix: improved buildkit error message by @iloveitaly in #237
- refactor: use consistent local layers entrypoint by @iloveitaly in #241
- fix: use default mise backends for python packages by @iloveitaly in #249
- fix: –verbose enables mise verbose logging by @iloveitaly in #248
New Contributors
Section titled “New Contributors”- @lionello made their first contribution in #235
Full Changelog: v0.4.0…v0.5.0
v0.4.0
Section titled “v0.4.0”August 27, 2025 · GitHub release
What’s Changed
Section titled “What’s Changed”- fix: remove yarn gpg workaround by @iloveitaly in #220
- chore: mise update 2025.8.13 by @iloveitaly in #224
- build: use railpack as the binary output name by @iloveitaly in #227
- feat: add hidden dump-llb flag by @iloveitaly in #225
- consistent provider step naming by @iloveitaly in #228
- chore: mise update 2025.8.18 by @iloveitaly in #229
- test: update snapshots for new caddy version by @iloveitaly in #230
- fix: Support colocated hooks in Phoenix (LiveView) for Elixir by @jesse-c in #231
New Contributors
Section titled “New Contributors”- @jesse-c made their first contribution in #231
Full Changelog: v0.3.0…v0.4.0
v0.3.0
Section titled “v0.3.0”August 18, 2025 · GitHub release
What’s Changed
Section titled “What’s Changed”- update php snapshot by @coffee-cup in #213
- Enable jemalloc by default in Ruby setups by @RDIL in #212
- yarn v1 test by @iloveitaly in #215
- chore: mise update by @iloveitaly in #216
- add schema to plan by @iloveitaly in #222
- react router v7 by @iloveitaly in #221
New Contributors
Section titled “New Contributors”Full Changelog: v0.2.3…v0.3.0
v0.2.3
Section titled “v0.2.3”August 4, 2025 · GitHub release
What’s Changed
Section titled “What’s Changed”- java: Add production build flag by @aleksrutins in #205
- Move MISE_NODE_VERIFY variable to mise_step_builder.go by @coffee-cup in #209
Full Changelog: v0.2.2…v0.2.3
Older releases
Section titled “Older releases”This page covers the last year. See all releases on GitHub.