ThingsBoard 3.9.0 release ThingsBoard 3.9.0 release

ThingsBoard 3.9.0 release: High-performance SCADA HMIs, mobile apps center, JS library, Angular 18, and more

We are excited to introduce ThingsBoard version 3.9.0! This release includes high-performance SCADA HMIs, a new mobile apps center, reusable JavaScript resources, and more.

High-performance SCADA HMIs

Responding to valuable community feedback, we’ve launched high-performance SCADA Human-Machine Interfaces (HMIs). These interfaces are designed for simplicity and functionality, adhering to industry standards. They use neutral color schemes to reduce visual distractions and highlight essential information, enhancing alarm management. While ThingsBoard will continue to support both traditional and high-performance SCADA HMIs, our development efforts will now focus more on enhancing high-performance SCADA symbols.

New “Get alarm status” action

We’re excited to introduce the “Get alarm status” action for configuring SCADA symbols. This feature enables real-time visualization of alarm statuses, filtered by type and severity. You can also use this functionality to set up behavior of other widgets like switches and buttons.

Mobile center

Users can now customize their mobile applications effortlessly using simple UI forms. The customization options include setting up OAuth 2.0 clients and arranging the layout of mobile app pages. The Professional Edition also provides a self-registration settings feature, allowing the setup of new customers directly via the mobile app. These settings are applicable to both Android and iOS apps, which are now organized into application bundles. Additionally, you can modify these settings in real time, without the need to release a new version of the app.

You can now configure multiple OAuth 2.0 clients to authorize mobile app users. Once set up, the corresponding authorization buttons will instantly become available for users within the mobile app.

The Layout step enables you to personalize the bottom menu bar by rearranging and modifying the content of the pages. You can choose to hide some default pages from the end users and even add your own custom page to display a specific dashboard.

In this update, we’ve enabled the self-registration settings for mobile app users. Now, you can configure the signup form fields, captcha properties, and define user privacy policy and terms of use. Additionally, you can specify the roles that will be assigned to new users upon registration.

We are pleased to announce that support for Enterprise Captcha is now available exclusively in our mobile apps.

JavaScript library

We’re excited to introduce a new JavaScript library in the Resources section. This library features two types of resources: Modules and Extensions. Extensions, which are Angular components, have been part of previous releases and have now been migrated to the new JavaScript library.

Modules are a new addition that allows the reuse of custom JavaScript logic throughout different parts of the application. To leverage this functionality, users need to add a new JavaScript resource of the module type.

Once a module type JavaScript resource is added, you can reuse this code in any JavaScript editor within the platform, such as data post-processing functions, cell content functions, and custom actions. To do this, simply click on the “modules” icon, select your JS module, provide an alias, and then use this alias in the JavaScript editor to reference your module. Below is a simple example:

Note that you may also use the widget context inside the module to execute API calls.

Extended Time window visibility parameters

We’ve enhanced the Time window functionality to give dashboard developers greater control. You can now restrict the visible time intervals, aggregation functions, and grouping intervals available to dashboard end-users. This update ensures more precise control over the time window settings that end-users can access.

Debug configurations in Rule nodes, Integrations, and Converters

We have upgraded the debug configuration to enhance the troubleshooting process. To prevent a flood of debug events, you can set the debug mode to log only failure events. There’s also an option to capture all debug events within a specified time frame, safeguarding against accidentally leaving the debug mode active and hitting event rate limits. By default, the full debug mode is active for 15 minutes, but you can customize this duration using the DEBUG_MODE_MAX_DURATION_MINUTES environment variable.

Gateway management dashboard

The ThingsBoard Gateway management dashboard has been relocated to a dedicated menu item under the Entities section. This allows us to update the gateway management dashboard independently of the core ThingsBoard release cycle, ensuring that users always have access to the latest features, bug fixes, and optimizations. If your ThingsBoard instance is connected to the internet, dashboard updates will be automatically applied.

The source code for the gateways dashboard is now stored in the Gateway Management Extensions Repository. Updates are fetched from branches that correspond with the ThingsBoard release versions, such as release/3.9 or the main branch for ongoing development.

Please note that the previous Gateway dashboard is now obsolete and may not function correctly. For an optimal user experience, we strongly recommend transitioning to the new Gateway page and discontinuing the use of the old dashboard. You can fork our Gateway Dashboard repository and configure your ThingsBoard instance to sync the Gateway Dashboard from your fork using the TB_GATEWAY_DASHBOARD_SYNC_REPOSITORY_URL environment variable.

Updated QR code widget configuration

Integrating a custom QR code into your app has become more convenient. Now you just choose the bundle from the application center that you would like to use to get the QR code.

Single storage for domains

We have successfully migrated all domains from the White labeling and Self-registration settings into single storage under OAuth 2.0 –> Domains, making domain audit more convenient.

Improved resource handling for dashboards and widgets

Exporting dashboards or widgets now automatically includes all associated resources, like images, SCADA symbols, and JavaScript modules. When importing, these resources are automatically resolved—either by reusing existing ones or creating new ones—making dashboard transfers between accounts and environments much easier. This update ensures dashboards and widgets are ready to use immediately. Additionally, we’ve implemented deduplication of resources during export, significantly reducing the file size when images are referenced multiple times.

Deprecation of third-party technologies

As we prepare for the upcoming ThingsBoard 4.0 release, we are making strategic changes to the technologies we support. Firstly, we will no longer support Timescale and have opted for using plain PostgreSQL for smaller setups and a combination of PostgreSQL + Cassandra for larger setups. We believe this approach will be more efficient for our use cases.

More critically, we are narrowing our supported queue types for inter-service communication to only Kafka (micro-services and monolith setup) and the in-memory queue (monolith setups only). This decision stems from the need to utilize unique capabilities of Kafka that are essential for several new features in ThingsBoard 4.0—capabilities not offered by other technologies like Pub/Sub, RabbitMQ, AWS SQS, and Azure Service Bus. Starting with version 4.0, these other queue technologies will no longer be supported. Given Kafka’s status as a widely adopted standard and its ease of deployment across various cloud infrastructures, we anticipate a smooth transition for our users. A detailed blog post about this transition will follow.

Please note that this update does not affect any existing integrations or rule nodes. You may continue using RabbitMQ, SQS, Service Bus, and PubSub for rule nodes and integrations.

Angular 18

We have upgraded ThingsBoard from Angular 15 to Angular 18, resulting in a notable performance improvement due to optimized rendering. This upgrade enhances compatibility with newer versions of libraries and third-party dependencies, ensuring the platform stays current and prepared for future updates.

For developers using Angular Flex-Layout in custom widgets or actions, we advise transitioning to Tailwind CSS or utilizing ThingsBoard extensions for enhanced functionality.