<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>Zapier Developer Platform News</title>
        <link>https://docs.zapier.com/integrations/news.xml</link>
        <description>Changelogs and occasional tips about the Zapier Developer Platform.</description>
        <lastBuildDate>Wed, 08 Jul 2026 13:40:14 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>en</language>
        <item>
            <title><![CDATA[What's changed in v19.0.0]]></title>
            <link>https://docs.zapier.com/integrations/news/2026/v19.0.0</link>
            <guid isPermaLink="false">https://docs.zapier.com/integrations/news/2026/v19.0.0</guid>
            <pubDate>Mon, 18 May 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[The `zapier` CLI binary has been removed. Use `zapier-platform` instead.]]></description>
            <content:encoded><![CDATA[<p>Version 19.0.0 is a <strong>BREAKING CHANGE</strong> release. Here is a brief breakdown of the main change (<strong>❗ denotes a breaking change</strong>):</p>
<h2>❗ The <code>zapier</code> binary has been removed</h2>
<p>The <code>zapier</code> command was deprecated in v18.0.0 in favor of <code>zapier-platform</code>. v19 completes that transition by removing the old binary entirely.</p>
<hr>
<p>Apart from this major change, here are the detailed release notes for this release (<strong>note that ❗ denotes a breaking change</strong>):</p>
<h2>cli</h2>
<ul>
<li>❗ Remove the <code>zapier</code> executable; the CLI now ships only <code>zapier-platform</code> (<a href="https://github.com/zapier/zapier-platform/pull/1299">#1299</a>)</li>
</ul>
<h2>core</h2>
<p>None!</p>
<h2>schema</h2>
<p>None!</p>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[New platform guardrails for safer integration versioning]]></title>
            <link>https://docs.zapier.com/integrations/news/2026/version-promotion-guardrails</link>
            <guid isPermaLink="false">https://docs.zapier.com/integrations/news/2026/version-promotion-guardrails</guid>
            <pubDate>Tue, 12 May 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[The platform now checks for breaking changes during promotion and guides you toward the correct semantic version, helping protect your users from unexpected disruptions.]]></description>
            <content:encoded><![CDATA[<h2>What's new</h2>
<p>The platform now automatically checks for breaking changes when you <a href="/integrations/manage/promote">promote</a> a new integration version. If breaking changes are found and the version doesn't increment the major number, promotion is paused with a clear explanation of what was detected and which version number to use instead.</p>
<p>This helps you catch issues <strong>before</strong> they reach users — no more accidentally shipping a removal or auth change under a patch bump.</p>
<h2>What gets checked</h2>
<p>When you promote, the platform compares the new version against the current public version at the <strong>schema level</strong> — looking at the structure of your triggers, actions, searches, and authentication. The following schema-level breaking changes are detected automatically:</p>
<ul>
<li><strong>Removed triggers, actions, or searches</strong> — a key present in the current public version is missing in the new version</li>
<li><strong>Authentication type change</strong> — the auth type (e.g., <code>oauth2</code>, <code>apiKey</code>, <code>session</code>) differs between versions</li>
<li><strong>Trigger type change</strong> — a trigger switched between polling and hook type</li>
<li><strong>Removed searchOrCreate keys</strong> — a searchOrCreate present in the current version is missing</li>
<li><strong>Removed input field keys</strong> — an input field key on an existing trigger/action was removed</li>
<li><strong>Optional input field made required without a default</strong> — an existing optional field is now required but has no default value</li>
<li><strong>Authentication field changes</strong> — removing an auth field, adding a new required auth field, or changing an auth field's type</li>
<li><strong>Input field type changes</strong> — changing the type of an input field (e.g., <code>string</code> → <code>list</code>)</li>
<li><strong>Incompatible JSON field schema changes</strong> — backward-incompatible changes to <code>json</code>-type input field schemas</li>
</ul>
<p>If any of these are detected, you'll see a message explaining the specific changes found and the minimum major version required.</p>
<h2>What this means for you</h2>
<ul>
<li><strong>If you're already following semver</strong>, nothing changes. You're good.</li>
<li><strong>If a promotion is paused</strong>, read the message — it tells you exactly which changes triggered the check and what version number to use. Bump the major version and promote again.</li>
<li><strong>If you need to phase out a trigger, action, or search without a major bump</strong>, <a href="/integrations/manage/versions#what-counts-as-a-breaking-change">hide it</a> instead of removing it. Hidden items continue to work for existing Zap workflows but are no longer available to new users.</li>
</ul>
<p>For the full list of what gets detected and how to choose the right version number, see <a href="/integrations/manage/versions#version-numbering">Version numbering</a>.</p>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[What's changed in v18.6.0]]></title>
            <link>https://docs.zapier.com/integrations/news/2026/v18.6.0</link>
            <guid isPermaLink="false">https://docs.zapier.com/integrations/news/2026/v18.6.0</guid>
            <pubDate>Tue, 05 May 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[New `invoke auth template` and `invoke auth render` commands for inspecting an app's auth request shape]]></description>
            <content:encoded><![CDATA[<p>This release adds two new commands that let you inspect and render the authentication request your app produces. They run your app's middleware (<code>beforeRequest</code>, <code>getAccessToken</code>, etc.) with placeholder credentials and capture the resulting auth request shape (headers, query params, and body) without making a real network call.</p>
<p><code>zapier-platform invoke auth template</code> returns the static template (with <code>{{placeholders}}</code> for auth fields). <code>zapier-platform invoke auth render</code> substitutes real auth data from .env into that template and returns the final request.</p>
<h2>cli</h2>
<ul>
<li>🎉 Add <code>invoke auth template</code> and <code>invoke auth render</code> commands (<a href="https://github.com/zapier/zapier-platform/pull/1282">#1282</a>)</li>
</ul>
<h2>core</h2>
<ul>
<li>🎉 Add <code>getAuthTemplate</code> and <code>renderAuthTemplate</code> Lambda commands (<a href="https://github.com/zapier/zapier-platform/pull/1282">#1282</a>)</li>
</ul>
<h2>schema</h2>
<p>None!</p>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[What's changed in v18.5.1]]></title>
            <link>https://docs.zapier.com/integrations/news/2026/v18.5.1</link>
            <guid isPermaLink="false">https://docs.zapier.com/integrations/news/2026/v18.5.1</guid>
            <pubDate>Thu, 30 Apr 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Actionable error when app definition fails to load, `platformData` removed from bundle, docs and `help` updated to use `zapier-platform` binary name]]></description>
            <content:encoded><![CDATA[<p>This patch release improves the error message you get when an app definition fails to load, removes <code>platformData</code> from the bundle, and finishes the rename of the CLI binary from <code>zapier</code> to <code>zapier-platform</code> across docs and the <code>help</code> command.</p>
<p>We're renaming <code>zapier</code> to <code>zapier-platform</code> because the <code>zapier</code> binary name will be allocated to the <a href="https://docs.zapier.com/sdk">Zapier SDK</a>. The <code>zapier</code> binary still works in v18, but in the next major release (v19), we'll officially remove it — you'll need to use <code>zapier-platform</code> instead. If <code>zapier-platform</code> is too long to type, you can set up a shell alias like <code>alias zp=zapier-platform</code>.</p>
<h2>cli</h2>
<ul>
<li>📜 Rename binary name from <code>zapier</code> to <code>zapier-platform</code> in docs, source, and <code>help</code> command (<a href="https://github.com/zapier/zapier-platform/pull/1291">#1291</a>, <a href="https://github.com/zapier/zapier-platform/pull/1292">#1292</a>, <a href="https://github.com/zapier/zapier-platform/pull/1293">#1293</a>)</li>
</ul>
<h2>core</h2>
<ul>
<li>🐛 Throw actionable error when app definition fails to load (<a href="https://github.com/zapier/zapier-platform/pull/1288">#1288</a>)</li>
<li>🐛 Remove <code>platformData</code> from bundle logging (<a href="https://github.com/zapier/zapier-platform/pull/1289">#1289</a>)</li>
</ul>
<h2>schema</h2>
<p>None!</p>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[What's changed in v18.5.0]]></title>
            <link>https://docs.zapier.com/integrations/news/2026/v18.5.0</link>
            <guid isPermaLink="false">https://docs.zapier.com/integrations/news/2026/v18.5.0</guid>
            <pubDate>Thu, 16 Apr 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Line item support in `invoke`, falsy value fixes, new `line-items` project template]]></description>
            <content:encoded><![CDATA[<p>This release adds line item support to the <code>zapier-platform invoke</code> command and bumps <code>lodash</code> across all packages to address a security vulnerability.</p>
<p><a href="/integrations/build-cli/input-fields#line-items">Line items</a> are fields with a <code>children</code> property that represent structured, repeating data — like rows in a spreadsheet or items in an order. The <code>invoke</code> command now supports them in both interactive and non-interactive modes:</p>
<pre><code class="language-bash"># Non-interactive: pass line items as JSON
zapier-platform invoke create order --non-interactive \
  -i '{"name": "My Order", "line_items": [{"product_name": "Pens", "quantity": "12", "price": "1.50"}]}'

# Interactive: use the line item editing UI
zapier-platform invoke create order -i '{"name": "My Order"}'
</code></pre>
<p>In interactive mode, a sub-menu lets you add, edit, and delete items with per-field editing and required field validation.</p>
<h2>cli</h2>
<ul>
<li>🎉 Add line item support to <code>invoke</code> command with interactive editing UI (<a href="https://github.com/zapier/zapier-platform/pull/1272">#1272</a>)</li>
<li>🎉 Add <code>line-items</code> project template for <code>zapier-platform init</code> (<a href="https://github.com/zapier/zapier-platform/pull/1272">#1272</a>)</li>
<li>🐛 Fix <code>invoke</code> bugs: auto-detect auth ID for no-auth apps in remote mode, falsy value handling (<code>0</code>, <code>false</code>) causing infinite dropdown re-prompting, and more (<a href="https://github.com/zapier/zapier-platform/pull/1272">#1272</a>)</li>
<li>🔨 Bump <code>lodash</code> from 4.17.23 to 4.18.1 (<a href="https://github.com/zapier/zapier-platform/pull/1274">#1274</a>)</li>
</ul>
<h2>core</h2>
<ul>
<li>🔨 Bump <code>lodash</code> from 4.17.23 to 4.18.1 (<a href="https://github.com/zapier/zapier-platform/pull/1274">#1274</a>)</li>
</ul>
<h2>schema</h2>
<ul>
<li>🔨 Bump <code>lodash</code> from 4.17.23 to 4.18.1 (<a href="https://github.com/zapier/zapier-platform/pull/1274">#1274</a>)</li>
</ul>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[What's changed in v18.4.0]]></title>
            <link>https://docs.zapier.com/integrations/news/2026/v18.4.0</link>
            <guid isPermaLink="false">https://docs.zapier.com/integrations/news/2026/v18.4.0</guid>
            <pubDate>Mon, 06 Apr 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[JSON input field type, `versions` command improvements, function-based dynamic dropdown fix]]></description>
            <content:encoded><![CDATA[<p>This release introduces the new <code>json</code> input field type, improved <code>zapier versions</code> output, and a schema validation fix.</p>
<p>You can now accept structured JSON input from users with the new <a href="/integrations/build-cli/input-fields#json-fields"><code>json</code> field type</a>. Optionally provide a <code>schema</code> to validate and describe the expected shape:</p>
<pre><code class="language-javascript">{
  key: 'product',
  type: 'json',
  label: 'Product',
  helpText: 'Enter a JSON object',
  schema: {
    type: 'object',
    properties: {
      name: { type: 'string' },
      price: { type: 'integer' },
    },
    required: ['name'],
  },
}
</code></pre>
<p>We also fixed a bug where pushing code with <a href="/integrations/build-cli/dynamic-dropdowns#function-based-dynamic-dropdowns-perform">function-based dynamic dropdowns</a> caused an unexpected validation error on the server. If you want to use function-based dynamic dropdowns, upgrade to 18.4.0 or later:</p>
<pre><code class="language-javascript">{
  key: 'project_id',
  label: 'Project',
  type: 'string',
  required: true,
  choices: {
    perform: async (z, bundle) => {
      const response = await z.request('https://api.example.com/projects');
      return {
        results: response.data.map((project) => ({
          id: project.id,
          label: project.name,
        })),
        paging_token: null,
      };
    },
  },
}
</code></pre>
<h2>cli</h2>
<ul>
<li>💅 Clarify <code>zapier-platform versions</code> timestamps with separate "Created at" and "Updated at" columns (<a href="https://github.com/zapier/zapier-platform/pull/1275">#1275</a>)</li>
</ul>
<h2>core</h2>
<ul>
<li>🎉 Add JSON field type handling with schema-aware TypeScript inference (<a href="https://github.com/zapier/zapier-platform/pull/1273">#1273</a>)</li>
</ul>
<h2>schema</h2>
<ul>
<li>🎉 Add JSON input field type with optional <code>schema</code> property for structured data (<a href="https://github.com/zapier/zapier-platform/pull/1265">#1265</a>)</li>
<li>🎉 Validate <code>schema</code> property on JSON fields against JSON Schema meta-schema (<a href="https://github.com/zapier/zapier-platform/pull/1267">#1267</a>)</li>
<li>🐛 Fix oneOf ambiguity in FieldChoicesSchema that caused server-side validation errors for function-based dynamic dropdowns (<a href="https://github.com/zapier/zapier-platform/pull/1268">#1268</a>)</li>
<li>📜 Update <code>skipThrowForStatus</code> documentation to note 401 errors are not subject to the flag (<a href="https://github.com/zapier/zapier-platform/pull/1270">#1270</a>)</li>
</ul>
<h2>misc</h2>
<ul>
<li>🔨 Improve publish workflow with path filters and boilerplate build fixes (<a href="https://github.com/zapier/zapier-platform/pull/1264">#1264</a>, <a href="https://github.com/zapier/zapier-platform/pull/1266">#1266</a>)</li>
</ul>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[What's changed in v18.3.0]]></title>
            <link>https://docs.zapier.com/integrations/news/2026/v18.3.0</link>
            <guid isPermaLink="false">https://docs.zapier.com/integrations/news/2026/v18.3.0</guid>
            <pubDate>Thu, 12 Mar 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Bug fixes and improvements]]></description>
            <content:encoded><![CDATA[<p>Add support for function-based dynamic dropdowns</p>
<h2>cli</h2>
<ul>
<li>🎉 Add support for function-based dynamic dropdown to the invoke command (<a href="https://github.com/zapier/zapier-platform/pull/1206">#1206</a>)</li>
</ul>
<h2>core</h2>
<p>None!</p>
<h2>schema</h2>
<ul>
<li>🎉 Add FieldDynamicChoicesSchema for function-based dynamic dropdowns (<a href="https://github.com/zapier/zapier-platform/pull/1206">#1206</a>)</li>
</ul>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[What's changed in v18.2.3]]></title>
            <link>https://docs.zapier.com/integrations/news/2026/v18.2.3</link>
            <guid isPermaLink="false">https://docs.zapier.com/integrations/news/2026/v18.2.3</guid>
            <pubDate>Wed, 04 Mar 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Bug fixes and improvements]]></description>
            <content:encoded><![CDATA[<p>Bug fixes for the CLI build command and pnpm compatibility.</p>
<h2>cli</h2>
<ul>
<li>🐛 Surface package manager errors in <code>build</code> command (<a href="https://github.com/zapier/zapier-platform/pull/1254">#1254</a>)</li>
</ul>
<h2>core</h2>
<ul>
<li>🐛 Declare <code>zapier-platform-legacy-scripting-runner</code> as an optional peer dep to fix pnpm strict module resolution (<a href="https://github.com/zapier/zapier-platform/pull/1255">#1255</a>)</li>
</ul>
<h2>schema</h2>
<p>None!</p>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[What's changed in v18.2.2]]></title>
            <link>https://docs.zapier.com/integrations/news/2026/v18.2.2</link>
            <guid isPermaLink="false">https://docs.zapier.com/integrations/news/2026/v18.2.2</guid>
            <pubDate>Thu, 26 Feb 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Bug fix for legacy-scripting-runner module loading]]></description>
            <content:encoded><![CDATA[<p>Improved error handling when loading the legacy-scripting-runner module in core. The runtime now logs a warning with the actual error message when the module is installed but fails to load, making it easier to diagnose issues like missing transitive dependencies.</p>
<h2>cli</h2>
<p>None!</p>
<h2>core</h2>
<ul>
<li>🐛 Log a warning when <code>zapier-platform-legacy-scripting-runner</code> is installed but fails to load, instead of silently returning null (<a href="https://github.com/zapier/zapier-platform/pull/1247">#1247</a>)</li>
</ul>
<h2>schema</h2>
<p>None!</p>
<h2>misc</h2>
<ul>
<li>🔨 Fix publishing workflow to run on pushes to <code>main</code> (<a href="https://github.com/zapier/zapier-platform/pull/1243">#1243</a>)</li>
<li>🔨 Add non-interactive mode to bump script (<a href="https://github.com/zapier/zapier-platform/pull/1249">#1249</a>)</li>
</ul>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[User migrations must stay within the same major version]]></title>
            <link>https://docs.zapier.com/integrations/news/2026/migrations-same-major-version</link>
            <guid isPermaLink="false">https://docs.zapier.com/integrations/news/2026/migrations-same-major-version</guid>
            <pubDate>Thu, 26 Feb 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[The Platform UI and CLI now block migrating users when the source and target integration versions differ in their [semantic major version](/integrations/manage/versions#version-numbering)—for example, you cannot migrate from `1.x.x` to `2.x.x`.]]></description>
            <content:encoded><![CDATA[<h2>Same-major-version migrations only</h2>
<ul>
<li>Migrations are only allowed when the <strong>from</strong> and <strong>to</strong> versions share the same major number (e.g. <code>1.0.0</code> → <code>1.0.1</code>, or <code>2.1.0</code> → <code>2.2.0</code>).</li>
<li>Cross-major moves (e.g. <code>1.5.0</code> → <code>2.0.0</code>) are blocked in both the <a href="https://zapier.com/app/developer">Platform UI</a> and via <a href="https://github.com/zapier/zapier-platform/blob/main/packages/cli/docs/cli.md#migrate"><code>zapier-platform migrate</code></a>. This aligns with long-standing guidance; major releases include <a href="/integrations/manage/planning-changes">breaking changes</a>, so users should <a href="https://help.zapier.com/hc/en-us/articles/18755649454989-App-versions-in-Zapier">update Zap workflows manually</a> or you should use <a href="/integrations/manage/versions#deprecating-versions">deprecation</a> instead of migration.</li>
<li>Details and workflow are in <a href="/integrations/manage/migrate">Migrate users to a new version</a>.</li>
</ul>
]]></content:encoded>
        </item>
    </channel>
</rss>