NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
npm · #3496 most downloaded on npm
JSON schema-based messages for Cucumber's inter-process communication
Last release 2 months ago
05 Aug 2026
Ships fairly regularly
a new release about every 3 weeks
Nearly every release is documented
notes for 59 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
7 years old
83 releases · first in 2020
One column per quarter.
[Java] Use version range for org.jspecify:jspecify
org.jspecify:jspecify[dart] Add equals, hashCode, and toString to generated messages
[Ruby] Re-added a new improved #seconds_to_duration method using strings to correctly determine floating point amounts.
[cpp] Add deserialization using from_json.
[Dart] Fix automated release process?
[Dart] Add initial cucumber_messages package. (#431, #470)
DataTable and DocString. (#468)[JavaScript] Update static version file at release time
[Ruby] Added #type classification (Returning hashified response), for all messages (Including envelopes)
[.Net] Fix release workflow filename
[JavaScript] Fix release process
### Fixed - [Java] Fix broken Javadoc
[Java] Annotate constructor arguments with property names (#399
[JavaScript] Add export path for bundled schema
### Added - Generated bundled JSON schema
Fix field order for ExternalAttachment
Deprecate Attachment.url and Attachment.source
[Java] Add NdjsonToMessageReader
[Ruby] Add a way to analyse and compare the strength of TestStepResult messages (To be used in query)
TestStepResult messages (To be used in query) (#365)TimeConversion helper file generating a non-conformant Timestamp messageTimeConversion helper for translating back from a Timestamp by avoiding a rounding errorTimeConversion helpers that did not serve a purpose in message buildingRemoved circular dependency between messages and compatibility-kit
### Added - Add location to Pickle
location to Pickle (#308)### Added - [Java] Add OSGi metadata
[Ruby] Updated minimum Ruby version to 3.2 (#346 luke-hill)
[JavaScript] Include schemas in npm package
Add workerId to TestRunHookStarted
[java] Add comparators for comparable objects
Add Attachment.testRunHookStartedId for traceability of attachments to test run hooks
Attachment.testRunHookStartedId for traceability of attachments to test run hooks (#301)Attachment.timestamp (#305)[python] Added Python implementation
[cpp] use VERSION file to version ABI and shared libraries #268
### Fixed - [Elixir] Fix release process
[Elixir] Restored test and release process
BREAKING CHANGE: Add id property to TestRunStarted, optionally reference in TestCase, Attachment and TestRunFinished
[Go] Switch to Google's UUID module
Internal breaking change The code generation has undergone a large refactor (No visible changes expected). All new code generation logic is now contai…
[Php] Fixed a workflow issue with publishing the package
[Ruby] Breaking change Messages are now altered to be 1 message class per file (#225 luke-hill)
java: include stacktrace in Convertor.toMessage(Throwable)
### Fixed - Update repo URLs
Add stackTrace prop to Exception message
stackTrace prop to Exception message (#182)[Ruby] Updated minimum Ruby version to 2.5 - (#177 luke-hill)
Added source reference to parameter type
[Java] Suppress warnings for missing javadoc
Add exception to TestStepFinished TestRunFinished
BREAKING CHANGE: Add workerId field to TestCaseStarted message
### Changed - Update dependencies
Add name field to package.cjs.json
[Javascript] Schema was still missing in 19.1.1 due to how npm manages the files attribute in package.json
[Javascript] Schema are actually missing from 19.1.0
[Javascript] Adding the json schemas of the messages to the NPM package
Expand the messages protocol with keyword types
PickleStep constructor has changed - it now needs an extra PickleStepType argument.Step constructor has changed - it now needs an extra StepKeywordType argument.Support for EcmaScript modules (aka ESM)
name property on the Hook schema (#1914)array fields now have "minItems": 1.Optional in getters.of methods for each field.
(#1858 aslakhellesoy)Perl: incorrectly included null values & guaranteed field order (#1727 ehuelsmann)
null values & guaranteed field order
(#1727 ehuelsmann)Initial Perl implementation (#1670 ehuelsmann)
[Ruby] seconds_to_duration convert nanos to an integer to match the json schema
seconds_to_duration convert nanos to an integer to match the json schema
(#1655)Added Ci#buildNumber field (#1632 #1606 aslakhellesoy)
Ci#buildNumber field
(#1632
#1606
aslakhellesoy)JSON to work with streams efficiently[JavaScript] addDurations works with legacy messages that represent seconds as a string.
addDurations works with legacy messages that represent seconds as a string.[Ruby] The generated code is added to Git. (#1461 aslakhellesoy)
getWorstTestStepResult function (moved from @cucumber/query)string properties are set to "" rather than being omitted.Array properties are set to [] rather than being omitted.seconds property on Timestamp and Diration is now a number rather than a string.import * as messages from '@cucumber/messages'[All] Added tags to Rule node (#1356 [sebrose], [gasparnagy], brasmusson, [WannesFransen1994])
@cucumber/message-streams[JavaScript] revert breaking changes in 14.1.1
The 14.1.0 release failed half way through due to build script problems.
[JavaScript] Remove Long from function signatures in TimeConversion
Long from function signatures in TimeConversionYour coding agent can read these notes before it upgrades. Set up the MCP server →