<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Versyka</title>
    <description>The latest articles on DEV Community by Versyka (@getversyka).</description>
    <link>https://dev.to/getversyka</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4200655%2F96f986ac-3e01-40fe-ba6e-e3e6cc16326b.jpg</url>
      <title>DEV Community: Versyka</title>
      <link>https://dev.to/getversyka</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/getversyka"/>
    <language>en</language>
    <item>
      <title>Breaking API changes, turned into tested pull requests</title>
      <dc:creator>Versyka</dc:creator>
      <pubDate>Thu, 22 Oct 2026 14:13:10 +0000</pubDate>
      <link>https://dev.to/getversyka/breaking-api-changes-turned-into-tested-pull-requests-4o80</link>
      <guid>https://dev.to/getversyka/breaking-api-changes-turned-into-tested-pull-requests-4o80</guid>
      <description>&lt;p&gt;Every app lean on other companies' APIs: payments, email, auth, cloud, AI models. Those vendors ship breaking changes on their own schedule. A method disappears, a parameter is renamed, a model ID stops answering. Your build breaks, and someone spends a day in a migration guide.&lt;/p&gt;

&lt;p&gt;Dependabot and Renovate bump the version number. When the new version has breaking changes, that upgrade PR fails, and a person still has to rewrite the code. That rewrite is the part we automated.&lt;/p&gt;

&lt;p&gt;Versyka also works alongside them: on every Dependabot or Renovate pull request it comments with what the release changes and whether your code uses it, with file and line. "Check before merging", or nothing your code uses changed.&lt;/p&gt;

&lt;h3&gt;
  
  
  What Versyka does
&lt;/h3&gt;

&lt;p&gt;When an SDK your code uses ships a breaking change, Versyka:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Reads the vendor's changelog or migration guide&lt;/strong&gt; and turns it into a migration rule.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Finds every affected call site with ast-grep.&lt;/strong&gt; This step is deterministic: structural search, not the model, decides which files are touched.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rewrites only those call sites&lt;/strong&gt; with Claude, inside a disposable sandbox.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Runs your own checks:&lt;/strong&gt; typecheck, build and tests. If they fail, the errors go back for another attempt, up to three times.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Opens a pull request only if the checks pass.&lt;/strong&gt; It never pushes to your default branch. If the checks never pass, you get a note about what blocked it instead of a broken PR.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  What it watches
&lt;/h3&gt;

&lt;p&gt;A daily scan of your repositories flags:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Every package your app runs on&lt;/strong&gt;, including SDKs from 100+ API vendors (Stripe, OpenAI, AWS, Twilio, Slack, Supabase and more), when a stable new major version is out or yours is deprecated&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Python and Node.js versions&lt;/strong&gt; that reach end of life&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Vulnerable packages&lt;/strong&gt;, from OSV.dev, grouped into the upgrades that fix them&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI models about to be retired&lt;/strong&gt;, with shutdown dates from OpenAI, Anthropic, Google, Mistral and Cohere, plus AWS Bedrock, Azure, Groq and Together AI&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Every Monday it also sends one pull request per repository with the minor and patch upgrades of the packages you use, each explained and tested. Retiring AI models with a direct replacement are swapped for free, before you ask.&lt;/p&gt;

&lt;h3&gt;
  
  
  An example
&lt;/h3&gt;

&lt;p&gt;The demo is a recorded run: an SDK in the style of the OpenAI Python v0 to v1 change removes its module-level calls. The tests fail. Versyka finds four call sites in three files, rewrites them, the tests go green, and the diff lands as a pull request. Watch it at &lt;a href="https://www.versyka.com/demo" rel="noopener noreferrer"&gt;versyka.com/demo&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Free tools, no signup
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://www.versyka.com/upgrade-check" rel="noopener noreferrer"&gt;Upgrade check&lt;/a&gt;:&lt;/strong&gt; paste a package.json or requirements.txt and see which API SDKs are major versions behind, with release notes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://www.versyka.com/model-retirements" rel="noopener noreferrer"&gt;AI model retirement calendar&lt;/a&gt;:&lt;/strong&gt; every announced shutdown date, and a check that finds the model IDs your repository still calls.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://www.versyka.com/sdk" rel="noopener noreferrer"&gt;SDK tracker&lt;/a&gt;:&lt;/strong&gt; latest versions for 100+ API vendors' SDKs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://www.versyka.com/integrations#github-action" rel="noopener noreferrer"&gt;GitHub Action&lt;/a&gt; and &lt;a href="https://www.versyka.com/integrations#mcp" rel="noopener noreferrer"&gt;MCP server&lt;/a&gt;:&lt;/strong&gt; the same checks in your CI or your coding agent.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Where it stands
&lt;/h3&gt;

&lt;p&gt;Versyka works with TypeScript, JavaScript, Python, Go, Java and Kotlin repositories, on GitHub or GitLab. The free plan covers 5 repositories, 2 migration pull requests a month, and unlimited version upgrades. We're running free pilots with a few teams. If you have an SDK upgrade you keep putting off, we'd like to run it on your repo.&lt;/p&gt;

&lt;p&gt;We'd also like to hear where this breaks for you: monorepos, generated code, repositories with few tests. Comments are open.&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://www.versyka.com" rel="noopener noreferrer"&gt;versyka.com&lt;/a&gt;&lt;/p&gt;

</description>
      <category>api</category>
      <category>devops</category>
      <category>ai</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
