Transformations v2 Beta

A redesigned Transformations experience with a more flexible testing suite and full version control for transformations and libraries.
Available Plans
  • free
  • growth
  • enterprise

Transformations is one of the most widely used features on the platform, and it just got a major upgrade. Transformations v2 is now in public beta, with a completely revamped UI/UX plus two significant new capabilities: a more flexible testing suite and full versioning and deployment control — for both transformations and the libraries they import.

Transformations v2 is in public beta.

See the following guides for more details:

Why upgrade Transformations?

Transformations sits in the critical path of your event pipeline, so its popularity raised the bar for what this update needed to deliver — a visual refresh alone wouldn’t be enough for a feature this central to your data flow. We focused the rebuild on the UI/UX, keeping the parts of the workflow you already know while redefining the areas that needed it most: testing and change management.

Two gaps stood out. First, testing only ever validated a transformation in isolation — a change to a shared library could silently break every transformation that imported it, and you wouldn’t find out until events started failing downstream. Second, there was no real change history: publishing was final, with no version trail and no way to recover from a bad deploy without manually redeploying old code.

Transformations v2 closes both gaps — and not just for the people writing transformation code by hand. As more of your transformation logic gets written and maintained by AI agents, the same guardrails that protect a human’s changes (draft before publish, tests validated before rollback, inferred library tests) are exactly what let an agent modify and deploy transformation logic safely on your behalf.

Updates and improvements

  • Revamped UI/UX: A redesigned editor experience that’s familiar where it counts — writing and saving transformation code works the way you’d expect — and redefined where it matters most, with dedicated, purpose-built views for testing and version history.

New functionality

  • A more flexible testing suite: Import a live event or a saved payload, edit it inline, and run it against your transformation. Compare Expected against Actual output in a line-by-line Diff view, inspect Logs from your log() calls, and Approve a result to update the expected output, or Reject to keep the current expected payload.
  • Inferred testing for libraries: Libraries don’t need their own test cases. Running a test on a library automatically replays every test case from every transformation that imports it, so a breaking library change surfaces immediately — before you publish it — instead of silently breaking transformations downstream.
  • Transformation versioning and deployments: Save work-in-progress as a Draft without touching production. Publish a tagged version when you’re ready — it becomes Active immediately for connected destinations. Every publish is recorded in Version history with its code, tag, description, author, and timestamp.
  • Validated rollback: Deploy an older transformation version back to Active status. Your test cases are validated against that version’s code first, so you know before you roll back whether it’s safe — and you can still deploy anyway if you choose to.
  • Library versioning: Save drafts and publish tagged library versions the same way. One asymmetry to note: unlike transformations, you can’t deploy an older library version directly — publishing a new version is the only way to change what’s active.

Get started

  1. Go to Collect > Transformations in the RudderStack dashboard and open (or create) a transformation.
  2. In the Editor tab, write your code, then create a test case — import a live event or an existing payload — and click Run to validate it.
  3. Click Save draft to store changes without affecting production, or Publish to tag and activate a new version.
  4. Open the Versions tab to review version history, open an older version in the editor, or Deploy it back to Active.
  5. Libraries follow the same Editor and Versions workflow. Publish a library version before importing it into a transformation — you can’t import a draft.

Resources

Screenshots

Diff view comparing expected and actual transformation output

Diff view comparing expected and actual transformation output

Publishing a new transformation version

Publish new transformation version modal

Transformation version history with the Active badge

Transformation version history with Active version

Library version history with the Active badge

Library version history with Active version

Questions? Let's figure it out together.

Join the RudderStack Slack community to connect with other users, customers, and the RudderStack team — or reach out for direct support.