Chromium download fails from Railway
dashdashdash
PROOP

2 months ago

My app downloads chromium browser upon deployment from:

Downloading Chromium 140.0.7339.16 (playwright build v1187) from https://cdn.playwright.dev/dbazure/download/playwright/builds/chromium/1187/chromium-linux.zip

But it's stuck at 0%, leading me to believe this is failing from Railway servers specifically. I am able to download an access the CDN link from my own browser.

Attachments

$10 Bounty

1 Replies

gabztoo
FREE

a month ago

What I’m seeing is the deploy getting stuck specifically at:

npx playwright install chromium0% of 173.7 MiB

So the build isn’t failing in your code — it’s hanging while downloading a ~174MB Chromium zip from Playwright’s CDN from inside Railway’s build container. Even if the link opens fine in your browser, Railway’s network path can behave differently (routing/DNS/IPv6/CDN throttling), and big binary downloads are the first thing to “stall”.

The most reliable fix (recommended)

Instead of downloading Chromium during every deploy, use the official Playwright image (it already includes browsers + deps). This avoids the CDN download entirely and makes deploys consistent.

If you want to keep your current setup

A few things that usually fix “stuck at 0%” downloads:

  1. Force IPv4 (this fixes a lot of CDN stalls on some hosts)
    Run the install like this:

NODE_OPTIONS="--dns-result-order=ipv4first" npx playwright install chromium
  1. Add retries / longer timeouts
    Sometimes it’s just a slow/blocked connection and the default behavior doesn’t recover cleanly.

  2. Cache the Playwright browser folder
    So it doesn’t need to re-download on every build.

Quick diagnostic

To confirm it’s a network stall in the build container, add a step before the install:

curl -I https://cdn.playwright.dev/

If that hangs or is extremely slow inside Railway, it confirms it’s an outbound connectivity/routing issue during build.

If you tell me whether your project is using Dockerfile or Nixpacks, I can give you the exact snippet to implement the “no download during deploy” setup (the clean solution).


Loading...