Git Tools

GitHub Actions Runner On WASM Just Shipped

All articles
⚙️🟪

Ephemeral sandboxes. Millisecond cold starts. Yes, really.

If you've been living under a rock, GitHub quietly shipped a WASM backend for the Actions runner. Same workflow YAML, completely different execution model — your Astro build kicks off in milliseconds instead of waiting on a fresh Ubuntu VM.

The Setup

Drop runs-on: wasm into a job and the runner spins up a wasmtime sandbox instead of a container. It's preview-only right now, gated behind a repo flag, but it works on real workflows.

# .github/workflows/build.yml
name: build
on: push
jobs:
  astro:
    runs-on: wasm
    steps:
      - uses: actions/checkout@v5
      - uses: actions/setup-node@v5
        with:
          node-version: 22
      - run: npm ci
      - run: npm run build

The Money Pattern

The cold-start delta is the headline. A typical ubuntu-latest job spends 20-40 seconds provisioning before npm ci even starts. WASM jobs hit your first step in under 500ms. Across a hundred pushes a week to the velocity8.5 site on Netlify, the saved minutes add up fast.

# matrix that uses both backends side by side
strategy:
  matrix:
    runner: [ubuntu-latest, wasm]
runs-on: ${{ matrix.runner }}
steps:
  - uses: actions/checkout@v5
  - run: node -e "console.log(process.platform, process.arch)"

The Catch

Not every action runs on WASM. Anything that shells out to native binaries, hits Docker, or wants raw POSIX syscalls is going to error. Setup-node and checkout work. Playwright does not. Most of your custom shell scripts will need rethinking before they run clean.

The Verdict

For lint, typecheck, and Astro builds — WASM runners are an immediate upgrade. Move the fast jobs over, leave the integration tests on ubuntu, and you'll feel the difference inside a week. Behold: CI that doesn't make you tab away to Twitter.

Let us make some quick suggestions?
Please provide your full name.
Please provide your phone number.
Please provide a valid phone number.
Please provide your email address.
Please provide a valid email address.
Please provide your brand name or website.
Please provide your brand name or website.