Releases: railwayapp/railpack
railpack v0.27.1
update mise to 2026.6.5
railpack v0.27.0
Providers
Fixed
- 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
CLI
New
- Mise: Updated mise version from v2026.6.0 to v2026.6.1.
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
Internal improvements to testing, documentation, dependency updates, and development tooling by @iloveitaly
railpack v0.26.1
Providers
Fixed
- 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
CLI
New
- Mise: Updated mise version from v2026.5.18 to v2026.6.0.
Full Changelog: v0.26.0...v0.26.1
railpack v0.26.0
Providers
Fixed
- 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
CLI
Fixed
-
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
Internal improvements to CI and GitHub Actions maintenance by @iloveitaly.
Full Changelog: v0.25.0...v0.26.0
railpack v0.25.0
Providers
New
-
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
Fixed
- 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
CLI
New
-
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
Internal snapshot maintenance by @iloveitaly.
railpack v0.24.0
Providers
New
- 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
Fixed
-
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
CLI
New
- Mise: Updated mise version from v2026.3.17 to v2026.5.16.
Fixed
- 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
Internal improvements to testing, snapshots, examples, development tooling, and documentation by @iloveitaly and @abdulrahman1s.
railpack v0.23.0
Providers
New
- 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, addindex_fallback: trueto yourStaticfileconfiguration to have non-existent paths served byindex.html.
CLI
New
- 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.
Fixed
- Configuration: Improved root directory detection by trimming whitespace from environment variables and configuration values. by @iloveitaly in #534
Internal improvements to testing and documentation by @iloveitaly.
Full Changelog: v0.22.2...v0.23.0
railpack v0.22.2
CLI
New
- Mise: Updated mise version from v2026.3.13 to v2026.3.15. in #532
Full Changelog: v0.22.1...v0.22.2
Internal improvements to documentation by @iloveitaly.
railpack v0.22.1
CLI
New
- Mise: Updated mise version from v2026.3.12 to v2026.3.13.
Internal improvements to testing, documentation, and refactoring by @iloveitaly.
Full Changelog: v0.22.0...v0.22.1
railpack v0.22.0
CLI
New
- 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.
Internal improvements by @iloveitaly.
Full Changelog: v0.21.0...v0.22.0