Skip to content

Releases: RobotWebTools/rclnodejs

rclnodejs v1.5.2

13 Oct 09:29

Choose a tag to compare

🚀 Prebuilt Binaries Support

We're excited to announce that rclnodejs now ships with prebuilt native binaries for Ubuntu Linux, significantly reducing installation time and eliminating the need for build tools in most cases.

What's New

  • Faster Installation: No more waiting for node-gyp compilation—prebuilt binaries are ready to use instantly
  • Simplified Setup: No need to install build essentials, Python, or other compilation dependencies
  • Multi-Platform Support: Prebuilt binaries available for both x64 and arm64 architectures
  • ROS2 Compatibility: Supports Ubuntu 22.04 (Jammy) and 24.04 (Noble) with ROS2 Humble, Jazzy, Kilted

Supported Configurations

Ubuntu Version ROS2 Distributions Architectures
22.04 (Jammy) Humble x64, arm64
24.04 (Noble) Jazzy, Kilted x64, arm64

Force Build from Source

If you need to build from source (for debugging or custom configurations), set the environment variable:

export RCLNODEJS_FORCE_BUILD=1
npm install rclnodejs

Platform Notes

  • Linux (Ubuntu): Prebuilt binaries supported ✅
  • Windows/macOS: Automatically builds from source (as before)

This enhancement makes rclnodejs more accessible and production-ready, especially for CI/CD pipelines and containerized deployments.


These are changes for rclnodejs v1.5.2 (2025-10-13).

  • Update outdated Dockerfile (#1262)
  • Add a manipulator demo using Electron + rclnodejs (#1264)
  • Add tutorial for service introspection (#1266)
  • Add tutorial for type description service (#1268)
  • Add tutorial for content filtering subscription (#1270)
  • Add README for tutorials for indexing (#1272)
  • Add README for electron demos for indexing (#1274)
  • Add README for typescript demos for indexing (#1276)
  • Update depenencies (#1278)
  • Update author email (#1280)
  • Update README for topics demo (#1282)
  • Integrate rclnodejs/ref-napi into rclnodejs (#1285)
  • Leverage prebuildify to provide prebuilt addon for npm package (#1287)

rclnodejs v1.5.1

11 Sep 08:34

Choose a tag to compare

These are changes for rclnodejs v1.5.0 (2025-09-11).

Feature added

  • Generate missing messages at runtime (#1257)

Documentation

  • Add mis-deleted docs (#1227)
  • Add tf2 electron demo (#1229)
  • Update the README for npmjs (#1233)
  • Add FEATURES.md file (#1235)
  • Add tutorial for lifecycle node (#1237)
  • Update actionlib.md file (#1239)
  • Provide parameter service tutorial (#1242)
  • Provide tutorial about basic concepts of ROS2 (#1243)
  • Add client/service example using nav_msgs/srv/GetMap (#1247)
  • Move the note to the right position (#1259)

CI

  • Separate actions for PR/PUSH (#1252)
  • Rename actions (#1253)
  • Pump setup-node & checkout (#1256)

Others

  • Re-enable benchmark (#1245)
  • Remove automated.py (#1249)

rclnodejs v1.5.0

18 Aug 04:50

Choose a tag to compare

These are changes for rclnodejs v1.5.0 (2025-08-18).

Feature added

  • Support getting logger name for subscription, publisher, service and client (#1224)
  • Add functions to run ros2 run/launch (#1222)

rclnodejs v1.4.2

31 Jul 06:25

Choose a tag to compare

Bug fix

  • Correct exmple errors (#1208)
  • Correct the parameter type of ActionServer constructor (#1210)

Documentation

  • Add a demo for actions using typescript (#1212)
  • Add a car demo for electron (#1215)
  • Add demo links to README of npm package (#1217)

rclnodejs v1.4.1

22 Jul 06:20

Choose a tag to compare

Bug fix

  • Fix example errors (#1205)
  • Correct the index.js to be required for example/ (#1203)
  • Fix test failure on rolling build (#1201)

Documentation

  • Add README for each example (#1199)
  • Add a client/service demo for typescript (#1195)
  • Add a subscriber/publisher demo for typescript (#1194)
  • Remove docs/ from develop branch (#1189)
  • Restructure current examples (#1188)

Others

  • Indicate the usage of generating messages from .idl files (#1185)
  • Pump commander (#1197)
  • Remove unnecessary files from npm package (#1191)

rclnodejs v1.4.0

07 Jul 04:50

Choose a tag to compare

Feature added

  • Support .idl files for ROS message/service/action (#1181) , like:

Input file JointState.idl:

#include "std_msgs/msg/Header.idl"

module sensor_msgs {
  module msg {
    struct JointState {
      std_msgs::msg::Header header;
      sequence<string> name;
      sequence<double> position;
      sequence<double> velocity;
      sequence<double> effort;
    };
  };
};

Output JointState.msg:

# JointState.msg
# Generated from IDL file

std_msgs/Header header
string[] name
float64[] position
float64[] velocity
float64[] effort

To generate messages from IDL files, use the generate-messages-idl npm script:

npm run generate-messages-idl

Documentation

Reorg the README structure (#1182)

rclnodejs v1.3.0

01 Jul 01:46

Choose a tag to compare

Feature added

  • Support get_type_description service via parameter (#1162)
  • Support setting domain id for Context (#1164)
  • Support creating node with ros args (#1166)
  • Support to log the state machine data (#1168)
  • Add RMW serialize and deserialize functions (#1173)
  • Support to resolve topic/service (#1175)
  • Validate and remap the topic name for publishers/subscriptions (#1177)

Bug fix

  • Fix test-type-description-service.js flakiness (#1169)
  • Fix flakiness of test-message-type.js (#1171)
  • Ensure binding method returns with undefined when error happens (#1179)

rclnodejs v1.2.0

09 Jun 05:26

Choose a tag to compare

Feature added

  • Support to get the RMW implementation identifier (#1148)
  • Implement event handler (#1159)

Others

  • Include all LTS ROS2 on develop branch (#1151)
  • Fix test-type-description-service.js flakiness (#1155)
  • Add Humble into arm workflow (#1157)

rclnodejs v1.1.0

23 May 08:19

Choose a tag to compare

This is the first version starting to support ROS2 Kilted 🎉

Feature added

  • Support type description service (#1146)
  • Add missing methods for node (#1140)
  • Support waitForAllAcked() for publisher (#1138)
  • Support getting the lifecycle state machine status (#1136)
  • [Kilted] Support to configure introspection for action client/server (#1128)
  • Add support for Kilted (#1125)
  • Add GetNumEntities() for action client (#1123)

Bug fixed

  • Fix the type error of client example (#1144)

Other

  • Support arm64 arch for ROS2 Rolling (#1130)
  • Reorg the actions badge (#1133)
  • Only run workflow on develop branch for arm64 arch (#1132)
  • Add nodejs 24 for actions (#1126)

rclnodejs v1.0.0

06 May 05:27

Choose a tag to compare

🎉Celebrating 1.0.0 Release🎉

As rclnodejs reaches this significant milestone of version 1.0.0, it's worth reflecting on the journey from its inception to becoming a robust, production-ready ROS 2 client library for JavaScript and TypeScript.

Project Evolution

rclnodejs began as an experimental bridge between the Robot Operating System (ROS 2) and the Node.js ecosystem in year of 2017, with the vision of bringing robotics capabilities to the vast JavaScript developer community. What started as a proof of concept has matured into a feature-complete, high-performance client library that stands alongside the official ROS 2 client libraries.

Core Achievements

Communication Patterns

  • Complete Implementation: Fully implemented all ROS 2 communication patterns including publishers/subscribers, services/clients, actions, and parameters
  • N-API Integration: Moved from NAN to N-API for better stability, performance, and compatibility with newer Node.js versions
  • Quality of Service: Comprehensive support for ROS 2 QoS configurations and content filtering

Language and Platform Support

  • TypeScript Integration: Added comprehensive TypeScript type definitions for enhanced development experience
  • Cross-Platform: Robust support for Linux and Windows environments
  • ROS 2 Distro Compatibility: Maintained compatibility with multiple ROS 2 releases, including Humble Hawksbill and Jazzy Jalisco

Advanced Features

  • Lifecycle Nodes: Full implementation of the ROS 2 managed node lifecycle
  • Parameter System: Complete parameter management with parameter events and callbacks
  • Time API: Flexible time abstractions including simulated time support
  • Graph Introspection: Comprehensive API for examining the ROS graph, including node counts, publishers, and subscribers

Developer Experience

  • Message Generation: Automated generation of JavaScript and TypeScript interfaces from ROS 2 IDL files
  • CLI Tools: Created rclnodejs-cli for project scaffolding and message generation
  • Extensive Documentation: Comprehensive API documentation with examples
  • Electron Support: Integration with Electron for desktop GUI applications

Technical Excellence

Throughout development, emphasis has been placed on:

  • Performance: Native bindings optimization for minimum overhead
  • Memory Management: Careful handling of resources to prevent leaks in long-running applications
  • Safety: Comprehensive error handling and validation
  • Testing: Extensive test suite ensuring reliability across supported platforms

Community and Growth

The project has fostered an active community of contributors and users, evidenced by:

  • Increasing Adoption: Growing download statistics on npm
  • Contributor Base: Diverse community of contributors bringing varied expertise
  • Integration Ecosystem: Adoption in various robotics projects connecting JavaScript applications with ROS 2

Looking Forward

After 78 releases in the past 8 years, version 1.0.0 represents a stable foundation for production use. Future development will focus on:

  1. Supporting new ROS 2 releases and features
  2. Further performance optimizations
  3. Enhanced tooling for developer experience
  4. Expanding integration with web technologies

This release marks rclnodejs as a mature client library, ready to support real-world robotics applications leveraging the power of JavaScript and TypeScript with ROS 2.