Migrations

Move the code forward. Keep the behavior.

Zerg helps teams migrate languages, frameworks, and dependencies in reviewable steps. It uses tests and failures to refine the migration tools and apply what works to the next batch.

What the work produces

21 days

Durable’s key legacy module agent run, covered in our case study

Small steps

Changes your engineers can review

Behavior

Tests check the result in the application

The problem

The details are where the work lives.

The syntax changes are often straightforward. Preserving behavior across a real application is harder. Edge cases, old assumptions, and hidden dependencies turn migrations into a long-running drain on engineering time.

How we approach it

Build the checks into the work.

  1. 01

    Define the target and capture the behavior that must stay the same, including critical user flows and failure cases.

  2. 02

    Transform a bounded part of the code, run checks in the application, and repair the failures before moving on.

  3. 03

    Reuse and refine migration rules and test harnesses as the work reaches the next module.

Who it helps

Engineering teams modernizing an existing product while continuing to ship and support it.

The systems involved

TypeScriptframeworkslegacy coderefactors

Migrations

Talk through your requirements with us.