Skip to content

Releases: railwayapp/railpack

railpack v0.27.1

13 Jun 06:54
Immutable release. Only release title and notes can be modified.
378ae2c

Choose a tag to compare

update mise to 2026.6.5

railpack v0.27.0

09 Jun 13:47
Immutable release. Only release title and notes can be modified.
e9f22a2

Choose a tag to compare

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-8 locale, fixing warnings and breakage for apps that depend on locale-aware behavior (such as Python or Ruby). Railpack does not set LANG or LC_ALL by default — enable UTF-8 by adding them to deploy.variables in your railpack.json (for example, "LANG": "en_US.UTF-8"). by @iloveitaly in #576
  • Timezone: Builder and runtime images now include tzdata by default, so named timezones work out of the box when you set TZ or 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

04 Jun 11:01
Immutable release. Only release title and notes can be modified.
b1b3627

Choose a tag to compare

Providers

Fixed

  • Node: pnpm 11+ projects now build correctly by adding PNPM_HOME/bin to the PATH so the pre-install node-gyp step can be found, including when engines.pnpm uses 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

02 Jun 06:29
Immutable release. Only release title and notes can be modified.
934898a

Choose a tag to compare

Providers

Fixed

  • Node (pnpm): Railpack now sets PNPM_HOME to /opt/pnpm and PNPM_STORE_DIR to /opt/pnpm/store during 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.base in railpack.json are now applied to the generated deploy step. Previously Railpack parsed deploy.base but 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.lock pins a tool version newer than the default 14-day minimum release age while your config requests latest. 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

01 Jun 08:37
Immutable release. Only release title and notes can be modified.
d29c653

Choose a tag to compare

Providers

New

  • Node: Railpack now detects and builds projects that use package.json5 manifests (in addition to package.json), including workspace and dependency parsing. If both files exist, package.json takes 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 like pnpm remain available when your start command runs after the build. by @iloveitaly in #568

Fixed

  • Node: engines.pnpm in your manifest now takes precedence over pnpm version inferred from pnpm-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 provider field in railpack.json is 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 like elixir and dotnet work 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

29 May 13:01
Immutable release. Only release title and notes can be modified.
dbc22dd

Choose a tag to compare

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 example pnpm = "10.4.1" in mise.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/bin to PATH, matching pnpm’s new layout so global tools like node-gyp install 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 when pipx.uvx is 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.toml now sets minimum_release_age instead of the renamed install_before setting, 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

30 Mar 12:52
Immutable release. Only release title and notes can be modified.
ffdb033

Choose a tag to compare

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, add index_fallback: true to your Staticfile configuration to have non-existent paths served by index.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_VERBOSE environment variable to enable verbose logging and improved debug logs for mise execution. by @iloveitaly in #536
    Set RAILPACK_VERBOSE=1 to 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

26 Mar 18:15
Immutable release. Only release title and notes can be modified.
841bb4b

Choose a tag to compare

CLI

New

Full Changelog: v0.22.1...v0.22.2


Internal improvements to documentation by @iloveitaly.

railpack v0.22.1

24 Mar 15:01
Immutable release. Only release title and notes can be modified.
53d2d4b

Choose a tag to compare

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

23 Mar 17:07
Immutable release. Only release title and notes can be modified.
969761b

Choose a tag to compare

CLI

New

  • Configuration: Railpack now uses a global mise.toml to store default tool configurations instead of environment variables, allowing users to naturally override defaults via their project's local mise.toml file. 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's mise.toml to 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