# Transformations v2: General Availability

<p><a href="https://www.rudderstack.com/docs/transformations/overview/" >Transformations</a> v2 is now <strong>Generally Available</strong> in all RudderStack plans. The testing suite and version controls from the public beta are the supported way to change transformation and library code before it reaches your destinations.</p>
<!-- end-chunk -->
<!-- begin-chunk -->
<h2 id="why-this-matters">Why this matters</h2><p>A transformation sits on the path of every event you send to a connected destination. A library change can affect every transformation that imports it. You can now validate those changes against real payloads, publish a tagged version when the tests pass, and deploy an earlier transformation version if a publish causes problems.</p>
<!-- end-chunk -->
<!-- begin-chunk -->
<h2 id="key-features">Key features</h2><ul>
<li><strong>Flexible testing</strong>: Import a live event or a saved payload, run it against your transformation, and compare <strong>Expected</strong> and <strong>Actual</strong> output in the <strong>Diff</strong> view. <strong>Approve</strong> a result to update the expected output, or <strong>Reject</strong> it to keep the current payload. <strong>Logs</strong> show output from your <code>log()</code> calls.</li>
<li><strong>Inferred library tests</strong>: Libraries don&rsquo;t have their own test cases. Running a test on a library replays every test case from every transformation that imports it, so a breaking library change shows up before you publish.</li>
<li><strong>Drafts and tagged versions</strong>: <strong>Save draft</strong> stores work in progress without changing what destinations run. <strong>Publish</strong> creates a tagged version and makes it <strong>Active</strong> immediately for connected destinations. <strong>Version history</strong> records the code, tag, description, author, and timestamp.</li>
<li><strong>Validated rollback</strong>: Deploy an older transformation version back to <strong>Active</strong>. Test cases run against that version&rsquo;s code first, so you can see whether the rollback is safe before you deploy. You can still deploy if tests fail.</li>
<li><strong>Library versions</strong>: Save drafts and publish tagged library versions the same way. Publishing a new version is how you change which library version is active. Transformations always import the <strong>Active</strong> published version, so publish a library before you import it.</li>
</ul>
<!-- end-chunk -->
<!-- begin-chunk -->
<h2 id="get-started">Get started</h2><ol>
<li>Go to <strong>Collect</strong> &gt; <strong>Transformations</strong> in the <a href="https://app.rudderstack.com/" >RudderStack dashboard</a> and open or create a transformation.</li>
<li>In the <strong>Editor</strong> tab, write your code, create a test case, and click <strong>Run</strong>.</li>
<li>Click <strong>Save draft</strong> to keep changes out of production, or <strong>Publish</strong> to tag and activate a new version.</li>
<li>Open the <strong>Versions</strong> tab to review history or <strong>Deploy</strong> an older version back to <strong>Active</strong>.</li>
</ol>
<p>See <a href="https://www.rudderstack.com/docs/transformations/test/" >Test Transformations</a> and <a href="https://www.rudderstack.com/docs/transformations/version-deploy/" >Version and Deploy Transformations</a> for the full workflow. Libraries use the same <strong>Editor</strong> and <strong>Versions</strong> tabs.</p>
<!-- end-chunk -->
<!-- begin-chunk -->
<h2 id="resources">Resources</h2><ul>
<li><a href="https://www.rudderstack.com/docs/transformations/test/" >Test Transformations</a>: Create test cases, import event payloads, and use the diff view</li>
<li><a href="https://www.rudderstack.com/docs/transformations/version-deploy/" >Version and Deploy Transformations</a>: Save drafts, publish tagged versions, and roll back to an older version</li>
<li><a href="https://www.rudderstack.com/docs/transformations/libraries/#version-and-publish-libraries" >Version and publish libraries</a>: Draft, publish, and view library version history</li>
<li><a href="https://www.rudderstack.com/docs/transformations/libraries/#test-a-library" >Test a library</a>: How library tests are inferred from importing transformations</li>
</ul>

