Release matter.js 0.16 from 12.01.2026 #2976
Apollon77
announced in
Announcements
Replies: 1 comment
-
|
Could we get this post linked in the Release, so if one subscribes to Releases they can get this link directly in their inbox? Unfortunately one can´t subscribe to a category tag in github discussions. |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
matter.js 0.16 - Matter 1.4.2 Support, Scenes, OTA Updates, and New JavaScript Runtimes
We're excited to announce matter.js 0.16, bringing Matter 1.4.2 specification support, OTA software updates, and expanded runtime compatibility to the JavaScript Matter SDK.
What's New in Version 0.16
This release adds support for all new device types, clusters, and data types introduced in the Matter 1.4.2 specification, enabling the development of Matter-compatible devices, bridges, and controllers. The long-awaited Scenes Management feature, previously provisional, is now fully integrated and ready for ecosystem adoption.
A major addition in this release is full support for OTA Software Updates and BDX file transfers for matter.js controllers and devices. This feature required extended development time but delivers significant value. Updates can be queried from official Connectivity Standards Alliance sources via the Distributed Compliance Ledger, or provided directly for testing purposes. For controller developers, matter.js provides a convenient API to manage updates and consents for all connected nodes.
Last but not least, this version supports two new JavaScript runtimes, expanding matter.js use cases. You can now implement cross-platform desktop applications using the Electron framework and bring Matter into React Native-based mobile applications. Both additions demonstrate the flexibility of JavaScript as a platform for IoT development.
Beyond new features, this version includes numerous stability and reliability improvements to the Matter protocol stack.
Looking ahead, we'll focus on adding support for Matter 1.5.0, expanding support for remaining Matter protocol features, and finalizing the new Controller API. Stay tuned—more is on the way!
Breaking Changes
This version introduces several breaking changes that might affect your applications:
Matter Specification Changes
Runtime Requirements
Epoch Time Handling
Storage Backend Changes
Controller API Preparations
Examples Package
@matter/examplespackage is no longer published to npmjs as our examples collection has grown significantly. Examples remain available in the main repository'sexamplesdirectory and can be used to initialize new projects vianpm init @matter.Additional Changes
Please refer to the full Changelog below for complete details.
Get Involved
Update to matter.js 0.16 on npm, and share your feedback, experiences, and questions with us on GitHub or Discord—we're here to support you!
For a complete list of changes, see the Release Notes below.
Changelog
Breaking: matter.js now requires node.js 20.19+ or 22.13+ or 24.0+ (LTS versions). Node.js 18.x is no longer supported.
Breaking: Because of the upgrade to TypeScript 5.9, all usages of Uint8Array were changed to use a more convenient own type alias Bytes
Breaking: Matter 1.4.2 no longer specifies reasonable defaults for many fields, so you may find new places where you need to manually supply an attribute value
Breaking: The default Node.js storage manager (
StorageBackendDisk) was optimized for performance which requires not opening multiple storages for the same ID at the same time. So check your usage ofStorageService, if you use it directly too.@matter/*:
@matter/examples
examples/directory. Simply use the project creatornpm init @matterto create a new project based on one of the examples.@matter/general
delay: Seconds(1)rather thandelayMs: 1000.nowMs()(a function) tonowMs(a property).camelize()to stop processing when $ is reached to better handle special names for custom clusters@matter/model
minOfandmaxOf@matter/node
EndpointandNodeinitialization values now require the correct type for some time values and IDs. So for example,VendorId(1234)instead of just1234SubscriptionBehavioris renamed toSubscriptionsServerwith corresponding ID change to "subscriptions". This means in part that matter.js will ignore saved subscriptions, but devices will recreate them automaticallyagentFormethod ofActionContexthas moved toEndpoint. You likely do not use this directly but if you do you must changecontext.agentFor(endpoint)toendpoint.agentFor(context)ActionContextclass to better delineate fields that apply to operations triggered locally vs those triggered by authenticated peers.ActionContextmay be aRemoteActorContextorLocalActorContext. You can determine the actor type and access relevant fields using new type guardshasRemoteActororhasLocalActorand new type assertionassertRemoteActor. These replace the formerofflinefield ofActionContextFabricActionenum emitted by CommissioningServer is replaced with a simple string typeHttpServer,WebSocketServerand/orMqttServerto yourServerNodeto enable HTTP, WebSocket, and MQTT access respectivelyBehaviorimplementationStateStreamcomponent offers a high-level API for monitoring changes across multiple nodesThermostatcluster according to Matter 1.4.2 specification. All features except MSCH and SB (which is considered provisional) are implemented. See theThermostatServerclass for details.Scenes Managementcluster according to Matter 1.4.2 specification.Endpoint#set()method with attribute ids instead of attributeNames@matter/nodejs
StorageBackendDisk) was optimized for performance which requires not opening multiple storages for the same ID at the same time. So check your usage ofStorageService, if you use it directly too.@matter/general@matter/nodejs-ble
@matter/nodejs-shell
certcommand for DCL certificate management with subcommands: list, details, as-pem, delete, and updateotacommand for OTA update management with subcommands: info, extract, verify, list, add, delete, and copy for managing OTA image files in storagenodecommands to check, download and apply OTA updates for nodes@matter/protocol
MdnsBroadcaster,MdnsInstanceBroadcasterandMdnsScannerare replaced byMdnsServer,MdnsAdvertisementandMdnsClientBle.get()singleton is removed; components now instead retrieve theBleservice from the environmentInteractionClientis always reading the data from the device and no longer enrich the result with already known data (optionenrichCachedAttributeDatais no longer supported). Ideally, use ClusterClient or new Node-based APIs to access the already stored data.@matter/react-native
@matter/types
EventPriorityis deprecated; use the generatedPriorityenum instead@project-chip/matter.js
PairedNode.staterenamed toPairedNode.connectionState!changedandoldValueproperties anymorenode-<ID>.*in the main storage) are now located innodes.peerX.endpoints.*because they are now managedcredentials.*) are now located incertificates.*enableOtaProvidertoCommissioningControllerOptionsto enable OTA Provider functionalityPairedNode.node- some convenience methods are also dorectly mapped on the PairedNode itself (see below). initial connection and reconnection management is still handled by PairedNode and will move later.Endpoint.stateproperty for attributes for all clusters in generic way andEndpoint.stateOf()for typed access for a defined Client behaviorEndpoint.commandsproperty for commands for all clusters in generic way andEndpoint.commandsOf()for a types access for a defined Client behaviorPairedNode.partsandEndpoint.partsas Map property to access all endpoints of a nodePairedNode.state,PairedNode.stateOf(),PairedNode.commandsandPairedNode.commandsOf()to access all endpoints of te root endpoint in a more convenient way@matter/mqtt
@matter/mainMQTT abstraction using MQTT.js@matter/nodejs-shell
@matter/nodejs-ws
@matter/mainWebSocket abstraction using ws package and Node.js HTTP serverExample Applications
Other
About matter.js
matter.js is an open-source JavaScript SDK that implements the Matter IoT standard, developed by the Connectivity Standards Alliance and its members. It simplifies the process of building Matter-compatible devices, bridges, and controllers.
Built on a Node.js-based architecture, matter.js runs on any operating system that supports Node.js and other compatible JavaScript frameworks like Bun, Electron, or React Native. The included shell application allows developers to easily explore and interact with Matter devices during development and testing.
While still evolving toward full specification coverage, matter.js already supports key functionality. Some devices built with it have been officially Matter-certified, with more certifications underway.
Tens of thousands of users are already using matter.js in open-source (though uncertified) smart home projects, demonstrating interoperability with major ecosystems such as Amazon, Apple, Aqara, Google, SmartThings, and Home Assistant.
matter.js is an open source project maintained by the Open Home Foundation.
Beta Was this translation helpful? Give feedback.
All reactions