matter.js: a second Matter implementation in TypeScript, uncertified by CSA
A complete typescript implementation of the Matter protocol specification (https://buildwithmatter.com). Includes full support for controller, device, commissioning, secure communications, device types, and cluster definitions.
At a glance
- What is it?
- matter.js is a TypeScript implementation of the Matter smart home protocol, built as pure JavaScript base packages with Node.js native add-ons for networking and BLE. It is deliberately positioned for prototyping and testing, and the project states plainly that it is not certified by the Connectivity Standards Alliance.
- Who is it for?
- matter.js is the right choice for testers, smart home enthusiasts and OS based product teams who want to prototype Matter devices, bridges and controllers in JavaScript or TypeScript without writing native networking code, and the wrong choice for anyone who needs a certified stack on day one, since the library itself carries no CSA certification and the repository is still publishing 0.18.0 alpha builds.
- Can I use it commercially?
- Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository received new commits within the last day.
- What is it written in?
- Mainly TypeScript, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 23, 2026, and from our analysis. They are not legal advice.
Editorial analysis
A second implementation of Matter, written to be read
Matter is a secure, reliable and local standard protocol for smart and IoT devices, launched at the end of 2022 by the Connectivity Standards Alliance. matter.js is a TypeScript and JavaScript implementation of that complete protocol, and the stated goal is a library that lets people build Matter compatible devices, bridges, controllers and a shell application. The audience is named in the README: testers, smart home enthusiasts and developers of OS based IoT products. The reason to care about a second implementation is not competition for its own sake. A protocol with one implementation has one set of bugs, and an independent implementation gives the standard a second point of comparison. The project is hosted under the matter-js organisation, the licence field on the repository says Apache-2.0, the repository is not archived, and the last push was on 2026-10-19.
Pure JavaScript at the base, native code only where the platform demands it
The architecture is split in a way that pays off when you port the library somewhere unusual. The base of matter.js is a set of pure JavaScript packages with no native dependencies, implementing the Matter protocol and its required interfaces, together with extensive typings for both the Matter standard and the matter.js APIs. Platform specific work, in practice networking and other native features, is layered on top in the packages/nodejs workspace, and Bluetooth support lives in packages/nodejs-ble. The monorepo workspace list in package.json shows the full shape: general, model, types, protocol, testing, node, matter.js, nodejs, nodejs-ble, mqtt, main, thread-br-client, nodejs-shell, react-native, cli-tool and nodejs-ws. That separation is the practical point. If your product runs on Node.js, the native packages are already there. If it runs somewhere else, the README says you must implement the platform specific parts yourself, and asks you to contact the project so your platform can be added to the supported list.
Code generation is how clusters stay in sync with the spec
The cluster and device type model is generated rather than hand written, and this is the part of the project that most directly affects how you work. The codegen tooling under support/codegen produces a comprehensive model of all Matter clusters and, according to the README, soon of device types as well. The output is typing and documentation that show up inside your IDE, so conformance information is available while you are writing the code instead of in a separate PDF you consult later. The same mechanism is what keeps the project aligned with the standard as it moves: adding a new cluster or device type is a matter of regenerating rather than hand maintaining hundreds of definitions. The repository also keeps model data under support/models and a test harness under support/tests, with chip related testing under support/chip-testing. For a team that already knows Matter, that combination is what removes most of the typing work that a protocol implementation normally costs.
Node.js 20 for consumers, 22.12 for contributors
The version requirements are specific enough to trip people up, so read them before you set up a workspace. At least ES2022 has to be used as the build target for your project. The published packages support all LTS Node.js versions starting with 20.x. Developing matter.js itself needs Node.js 22.12 or newer, because the build toolchain declares that range, and the README notes that Node.js 20 still builds and passes the tests but that npm install reports an engine warning. TypeScript specifics are pointed at the TypeScript notes in packages/main, and the repository root carries tsconfig.json, tsc and an .oxlintrc.json configuration, with a .devcontainer directory for containerised development. A practical note on upgrade cost: the published versions are still 0.x, with the recent tags reading v0.18.0-alpha.0, so a dependency on this library is a dependency on a pre 1.0 API surface that can still change shape.
The examples directory is the real feature list
The examples workspace reads like a catalogue of what the library can actually produce, and it is the fastest way to judge scope. There are the minimal ones, device-simple and device-onoff, then progressively more specific device profiles: device-onoff-light, device-onoff-advanced, device-onoff-sensor-binding, device-multiple-onoff, device-air-quality-sensor, device-smoke-co-alarm, device-measuring-socket and device-robotic-vacuum-cleaner. Bridge and composed device cases are covered too, through device-bridge-onoff and device-composed-onoff and device-composed-wc-light. On the controller side there is examples/controller and examples/controller-shared-fabric, plus examples/electron-matter-controller for a desktop controller, and examples/mqtt-device and examples/web-socket-device for connecting to outside systems. Node.js example scripts implement CLI scripts for devices, bridges or controllers. The point for an engineer is that the building blocks are already demonstrated as code rather than described in prose, and the README recommends JavaScript testing frameworks for trying different feature combinations and endpoint structures.
The Matter Shell turns a controller into a command line tool
The packages/nodejs-shell workspace is a Matter Shell application that lets you act as a controller and interact with Matter devices over a CLI interface, and the README positions it for ad hoc testing of real hardware as well as development work. A separate packages/cli-tool workspace exists for command line tooling in general. For a tester, this is often the fastest possible entry point: no product code, no build of your own stack, just a shell that can commission and drive a device while you watch. It also gives you a reference for how a controller is expected to behave in practice, which is useful when you later write your own. The protocol details are worth noting too: controllers can access all data from devices and control them after commissioning, including BLE support, and the API supports known typings of all clusters when endpoints and device types are known at development time, with generic programmatic access to clusters and attributes otherwise.
The certification boundary is the constraint that shapes adoption
The README states the limit plainly in a highlighted note: matter.js, the Shell app and the examples are not certified by the Connectivity Standards Alliance, and they exist to demonstrate capabilities and support testing and development. Using the library does not certify your product. Releasing an official Matter device, bridge or controller requires CSA membership and product certification, and that requirement is independent of which implementation you use. The project says it has already been used in certified products, but also that important considerations and discussions remain for anyone planning certification, and it asks such teams to make contact for current compliance status, supported and pending features, and guidance through the process. Two things are worth verifying before you commit. The README does not state which Matter specification version the current release targets, and the recent tags are 0.18.0 alpha builds dated 2026-10-17 and 2026-10-19, so a plan that depends on a particular cluster being present should be checked against the release notes rather than assumed.
Editorial conclusion
matter.js is the right choice for testers, smart home enthusiasts and OS based product teams who want to prototype Matter devices, bridges and controllers in JavaScript or TypeScript without writing native networking code, and the wrong choice for anyone who needs a certified stack on day one, since the library itself carries no CSA certification and the repository is still publishing 0.18.0 alpha builds. Before adopting it, check the Node.js version you have against the stated requirements and read the certification sections of the Matter Handbook, then confirm with the project which clusters and device types are pending before you plan a release.
Frequently asked questions
Is matter.js certified by the Connectivity Standards Alliance?
No. The README states that matter.js, the Shell app and the examples are not certified by the CSA and are provided to demonstrate capabilities and support testing and development. Releasing an official Matter product requires CSA membership and certification, and using matter.js does not certify your product.
What Node.js version do I need to use matter.js?
The published packages support all LTS Node.js versions starting with 20.x, and at least ES2022 must be used as the build target for your project. Developing matter.js itself needs Node.js 22.12 or newer, because the build toolchain declares that range.
Can I use matter.js outside Node.js?
Yes, but you have to supply the platform specific parts yourself. The README says that to use matter.js in your own non-Node.js based projects you need to implement the platform specific parts, and it asks you to contact the project so your platform can be added to the supported list.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/matter-js-matter-js)Was this useful?