Documentation Index
Fetch the complete documentation index at: https://docs.zapier.com/llms.txt
Use this file to discover all available pages before exploring further.
New platform guardrails for safer integration versioning
Effective: 2026-05-12 What’s new The platform now automatically checks for breaking changes when you promote 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. This helps you catch issues before they reach users — no more accidentally shipping a removal or auth change under a patch bump. What gets checked When you promote, the platform compares the new version against the current public version at the schema level — looking at the structure of your triggers, actions, searches, and authentication. The following schema-level breaking changes are detected automatically:- Removed triggers, actions, or searches — a key present in the current public version is missing in the new version
- Authentication type change — the auth type (e.g.,
oauth2,apiKey,session) differs between versions - Trigger type change — a trigger switched between polling and hook type
- Removed searchOrCreate keys — a searchOrCreate present in the current version is missing
- Removed input field keys — an input field key on an existing trigger/action was removed
- Optional input field made required without a default — an existing optional field is now required but has no default value
- Authentication field changes — removing an auth field, adding a new required auth field, or changing an auth field’s type
- Input field type changes — changing the type of an input field (e.g.,
string→list) - Incompatible JSON field schema changes — backward-incompatible changes to
json-type input field schemas
These checks cover schema-level changes only. Some breaking changes happen outside the schema — for example, removing or renaming output field keys, changing the behavior of a perform function, or altering response structures. These are still your responsibility to catch. Review the full versioning matrix before promoting.
- If you’re already following semver, nothing changes. You’re good.
- If a promotion is paused, 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.
- If you need to phase out a trigger, action, or search without a major bump, hide it instead of removing it. Hidden items continue to work for existing Zaps but are no longer available to new users.
What’s changed in v18.6.0
Released: 2026-05-05 This release adds two new commands that let you inspect and render the authentication request your app produces. They run your app’s middleware (beforeRequest, getAccessToken, etc.) with placeholder credentials and capture the resulting auth request shape (headers, query params, and body) without making a real network call.
zapier-platform invoke auth template returns the static template (with {{placeholders}} for auth fields). zapier-platform invoke auth render substitutes real auth data from .env into that template and returns the final request.
cli
- 🎉 Add
invoke auth templateandinvoke auth rendercommands (#1282)
- 🎉 Add
getAuthTemplateandrenderAuthTemplateLambda commands (#1282)
What’s changed in v18.5.1
Released: 2026-04-30 This patch release improves the error message you get when an app definition fails to load, removesplatformData from the bundle, and finishes the rename of the CLI binary from zapier to zapier-platform across docs and the help command.
We’re renaming zapier to zapier-platform because the zapier binary name will be allocated to the Zapier SDK. The zapier binary still works in v18, but in the next major release (v19), we’ll officially remove it — you’ll need to use zapier-platform instead. If zapier-platform is too long to type, you can set up a shell alias like alias zp=zapier-platform.
cli
- 📜 Rename binary name from
zapiertozapier-platformin docs, source, andhelpcommand (#1291, #1292, #1293)
- 🐛 Throw actionable error when app definition fails to load (#1288)
- 🐛 Remove
platformDatafrom bundle logging (#1289)
What’s changed in v18.5.0
Released: 2026-04-16 This release adds line item support to thezapier-platform invoke command and bumps lodash across all packages to address a security vulnerability.
Line items are fields with a children property that represent structured, repeating data — like rows in a spreadsheet or items in an order. The invoke command now supports them in both interactive and non-interactive modes:
- 🎉 Add line item support to
invokecommand with interactive editing UI (#1272) - 🎉 Add
line-itemsproject template forzapier-platform init(#1272) - 🐛 Fix
invokebugs: auto-detect auth ID for no-auth apps in remote mode, falsy value handling (0,false) causing infinite dropdown re-prompting, and more (#1272) - 🔨 Bump
lodashfrom 4.17.23 to 4.18.1 (#1274)
- 🔨 Bump
lodashfrom 4.17.23 to 4.18.1 (#1274)
- 🔨 Bump
lodashfrom 4.17.23 to 4.18.1 (#1274)
What’s changed in v18.4.0
Released: 2026-04-06 This release introduces the newjson input field type, improved zapier versions output, and a schema validation fix.
You can now accept structured JSON input from users with the new json field type. Optionally provide a schema to validate and describe the expected shape:
- 💅 Clarify
zapier-platform versionstimestamps with separate “Created at” and “Updated at” columns (#1275)
- 🎉 Add JSON field type handling with schema-aware TypeScript inference (#1273)
- 🎉 Add JSON input field type with optional
schemaproperty for structured data (#1265) - 🎉 Validate
schemaproperty on JSON fields against JSON Schema meta-schema (#1267) - 🐛 Fix oneOf ambiguity in FieldChoicesSchema that caused server-side validation errors for function-based dynamic dropdowns (#1268)
- 📜 Update
skipThrowForStatusdocumentation to note 401 errors are not subject to the flag (#1270)
What’s changed in v18.3.0
Released: 2026-03-12 Add support for function-based dynamic dropdowns cli- 🎉 Add support for function-based dynamic dropdown to the invoke command (#1206)
- 🎉 Add FieldDynamicChoicesSchema for function-based dynamic dropdowns (#1206)
What’s changed in v18.2.3
Released: 2026-03-04 Bug fixes for the CLI build command and pnpm compatibility. cli- 🐛 Surface package manager errors in
buildcommand (#1254)
- 🐛 Declare
zapier-platform-legacy-scripting-runneras an optional peer dep to fix pnpm strict module resolution (#1255)
What’s changed in v18.2.2
Released: 2026-02-26 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. cli None! core- 🐛 Log a warning when
zapier-platform-legacy-scripting-runneris installed but fails to load, instead of silently returning null (#1247)
- 🔨 Fix publishing workflow to run on pushes to
main(#1243) - 🔨 Add non-interactive mode to bump script (#1249)
User migrations must stay within the same major version
Effective: 2026-02-26 Same-major-version migrations only- Migrations are only allowed when the from and to versions share the same major number (e.g.
1.0.0→1.0.1, or2.1.0→2.2.0). - Cross-major moves (e.g.
1.5.0→2.0.0) are blocked in both the Platform UI and viazapier-platform migrate. This aligns with long-standing guidance; major releases include breaking changes, so users should update Zaps manually or you should use deprecation instead of migration. - Details and workflow are in Migrate users to a new version.
What’s changed in v18.2.1
Released: 2026-02-23 Resolved a bug in the CLI that caused thebuild command to fail when using a symlink-based package manager (like pnpm).
cli
- 🐛
zapier-platform buildno longer raisesEEXISTwhen using a symlink-based package manager (#1244)
Pushing unlabelled semantic versions must be sequential
Effective: 2026-02-23 What changed These rules apply to unlabelled semantic versions only (for example1.2.3). Labelled versions (such as 1.2.3-beta or 0.0.0-my-feature) are not part of these checks.
When you push a new unlabelled version, the platform validates two things in addition to existing format checks.
1. You cannot skip a required predecessor
The API must see the right previous unlabelled release before it accepts the new one:
- Patch bump (
1.2.3): the exact unlabelled1.2.2must already exist. - Minor bump (
1.3.0): at least one unlabelled1.2.xmust exist. - Major bump (
2.0.0when coming from1.x): at least one unlabelled1.x.xmust exist.
1.0.0 is unchanged: there is no prior semver to require.
If the predecessor is missing, push fails with 403 and guidance like: Version X requires Y to exist. Push version Y, then try again.
2. You cannot insert an “intermediate” version behind a newer line
You also cannot push a version if a newer unlabelled version already exists in the segment that would make yours a backward insert:
1.2.3: blocked if any unlabelled1.2.4or higher on the same1.2.*line already exists. Pushing1.3.0is still allowed when only1.3.xor2.x.xexists—those are not on the1.2.*patch line.1.3.0: blocked if any unlabelled1.4.xor higher on the same major (1.*) already exists.2.0.0is still allowed when only2.x.xexists.2.0.0: blocked if any unlabelled3.x.xor higher already exists.
- Plan patch → patch → minor → major (or the minimal chain your history needs) using unlabelled semver when you are ready to record real releases; use labelled snapshots while iterating.
- If you are stuck because old versions were removed, you may still use deprecation and, when appropriate, delete a deprecated version so your remaining unlabelled history matches what you want to push next.
What’s changed in v18.2.0
Released: 2026-02-18 The main change in this release is to support function-based choices in theinvoke command, which will allow developers to test perform-based dynamic dropdowns.
cli
- 🎉
zapier-platform invokenow supports function-based choices (#1237)
- 🐛 If we attempt to stash a large response but it’s bigger than the max limit, throw a descriptive error with the actual size and the limit (#1238)
- 🔨 Add an environment variable to allow suppressing cleaning up env vars (#1242)
What’s changed in v18.1.1
Released: 2026-01-29 Main change introduced here is fixing missing HTTP error logs that were prematurely lost during a Lambda invocation. cli None! core- 🐛 Restore missing HTTP error logs (#1227)
- 🔨 Bump lodash from 4.17.21 to 4.17.23 across the board (#1228, #1229, #1230, #1231, #1233, #1234, #1235)
What’s changed in v18.1.0
Released: 2026-01-19 Thezapier-platform invoke command now supports a remote mode. By adding a --remote (-r for short) flag to the invoke command, such as:
- The integration version you want to test has to be deployed first.
- The invocation results and the bundle payload passed to your integration code will match what you see in live production, which is great for testing.
- Remote mode is slower than local mode (without the
-rflag).
zapier-platform invoke --help documentation.
We also fixed an issue where the build and test commands were not correctly detecting package managers (like npm, yarn, pnpm, or bun) when your integration was part of a monorepo. Now, the CLI doesn’t just look in the current directory for package manager indicators (like package-lock.json for npm), but also checks parent directories up to four levels up.
cli
- 🎉 Add
--remoteflag toinvokecommand (#1220) - 🐛 Fix package manager detection in
buildandtestcommands to include parent directories (#1225)
- 📜 Improve internal development docs (#1221)
What’s changed in v18.0.7
Released: 2026-01-07 In response to the previous Shai-Hulud incident, we’re changing our package publishing process to improve security. This release also includes a schema extension that allowsoutputFields to have a sample field. Lastly, we’ve refactored the invoke command to make upcoming enhancements easier.
cli
- 🔨 Refactor
invokecommand (#1217)
- 🎉 Allow a
samplefield to be provided for dynamicoutputFields(#1211)
What’s changed in v18.0.6
Released: 2025-12-24 Thezapier build command was harcoded to use npm install. As alternate package managers gain adoption, the zapier build command will respect your app’s package manager of choice.
It does this by checking the packageManager on the package.json file. If it is not defined, it will look for any relevant lock files. If still, none is defined, then will fallback to npm.
If you are familiar with using zapier build with the flag --skip-npm-install, this flag has been renamed to --skip-dep-install, but will continue to still work as an alias. In the future, we will remove the --skip-npm-install flag.
cli
- 💅 CLI build respects the integration’s package manager (#1216)
What’s changed in v18.0.5
Released: 2025-12-10We’re releasing v18.0.5, skipping comprimised versions v18.0.2, v18.0.3, and
v18.0.4, due to the prior security
incident.
build command related to zip file decompression.
cli
- 🐛 Remove problematic decompress-tar dependency (#1202)
- 🔨 Switch to pnpm as package manager and task runner (#1204)
Incident: Unauthorized Access to Zapier NPM Packages
Released: 2025-11-24 Unauthorized Access to Zapier npm Packages Note: No action is needed from Zapier users, only from Zapier developers using one of the NPM package versions listed on this page. See that link for detailed mitigation recommendations. All Zapier products are operating as expected and there is no indication of data loss or leak. Please see this link for the most up-to-date information.What’s changed in v18.0.1
Released: 2025-11-05 This release addresses an npx resolution issue introduced in v18.0.0 and fixes TypeScript typing for nested input fields when working with line items. cli- 🐛 Fix npx resolution issue with dual binary entries (#1191)
- 🐛 Fix children input types when line items are present (#1188)
What’s changed in v18.0.0
Released: 2025-10-30 Version 18.0.0 is a BREAKING CHANGE release that contains several important upgrades and changes. Here is a brief breakdown of the main changes (❗ denotes a breaking change): ❗ Node.js 22 Support Zapier Platform v18 runs on Node.js 22 runtime. This is a breaking change as it may affect compatibility with older Node.js versions and dependencies. ❗ Schema Changes TheskipCleanArrayInputData experimental flag has been replaced with cleanInputData. This provides more consistent data cleaning behavior across the platform. This change is breaking only if you’re using skipCleanArrayInputData.
See cleanInputData flag documentation for more details on how to configure this behavior.
❗ New Throttling Middleware
A new throwForThrottling middleware has been added to prevent afterResponse middleware from suppressing 429 (throttling) responses. This ensures proper handling of rate limiting scenarios. This change is breaking if you want to handle 429 responses in your afterResponse. See v18.x and above: the built-in throwForThrottling middleware for how to handle 429s yourself.
New Executable Name zapier-platform
The CLI now includes a new executable name zapier-platform while deprecating the old zapier command. Both will work for now, but zapier-platform is the recommended command going forward.
Apart from these major changes, here are the detailed release notes for this release (note that ❗ denotes a breaking change): cli
- 🎉 Add executable name
zapier-platformand deprecatezapier(#1181) - 🔨 Update outdated dependencies with security vulnerabilities (#1111)
- 🔨 Apply prettier formatting to generated auth files since gen.fs.write bypasses transform streams
- 🔨 Add ESM wrapper improvements for better module support
- ❗ Add Node.js 22 support (#1078)
- 🎉 Add
throwForThrottlingmiddleware with backward-compatible default behavior (#1151) - 🐛 Add better error message for 413 responses (#1110)
- ❗ Replace
skipCleanArrayInputDatawithcleanInputData(#1183) - 🔨 Add global
cleanInputDataflag for consistent data cleaning behavior
- ❗ Major dependency updates across all packages (#1079)
- 🔨 Update CI configuration for Node.js 22 support
- 🔨 Pin exact xmldom version for security
Looking for older news? 2026, 2025, and old changelogs prior to v17