This document lists breaking changes and deprecations in Signal K Server.
Signal K Server now defaults to Node.js 24 and requires Node.js 22 or later.
| Setting | Before | After |
|---|---|---|
| Recommended | 22 | 24 |
| Minimum required | 20 | 22 |
Node.js 24 drops support for the following platforms:
The Admin UI has been upgraded from React 16 to React 19. This is a significant update that may affect embedded webapps and plugin configuration panels.
| Component | Before | After |
|---|---|---|
| React | 16.14.0 | 19.x |
| React DOM | 16.14.0 | 19.x |
| React Router | 4.x | 6.x |
| Language | JavaScript | TypeScript |
If your webapp uses Module Federation to share React with the Admin UI:
Singleton sharing is now required - Your webapp must configure React and ReactDOM as singletons with requiredVersion: false. See vite.config.js for the current configuration.
React 19 compatibility - If your webapp bundles its own React, it should be compatible with components rendered by the host. Most React 16/17/18 code works unchanged in React 19, but some deprecated APIs have been removed.
String refs removed - React 19 no longer supports string refs (ref="myRef"). Use useRef() instead.
defaultProps on function components - Deprecated. Use JavaScript default parameters instead.
Plugin configuration panels using ./PluginConfigurationPanel export continue to work. The props interface remains the same:
configuration - the plugin's configuration datasave - function to save configurationWhen security is first enabled on a new installation, allow_readonly now defaults to false. Previously it defaulted to true, meaning anyone could read all Signal K data without authentication.
allow_readonly value is already written explicitly in security.json and will be preserved.During initial security setup, the Enable Security dialog offers an "Allow Readonly Access" checkbox to opt in. Alternatively, you can enable it at any time in Security > Settings.
The following changes have been implemented with the introduction of Resources API and apply to applications using the ./signalk/v2/resources endpoint.
Note: These changes DO NOT impact applications using the ./signalk/v1/resources endpoint.
The version 1 specification defined resource Ids with the following format urn:mrn:signalk:uuid:<UUIDv4>.
e.g. urn:mrn:signalk:uuid:18592f80-3425-43c2-937b-0be64b6be68c
The Resource API has dropped the use the prefix and ids are now just a uuidv4 value.
e.g. 18592f80-3425-43c2-937b-0be64b6be68c
This format is used for both accessing a resource e.g. /signalk/v1/api/resources/waypoints/18592f80-3425-43c2-937b-0be64b6be68c as well as the value within an href attribute.
Example:
{
"name": "...",
"descripton": "...",
"href": "/resources/waypoints/18592f80-3425-43c2-937b-0be64b6be68c",
...
}
The Resources API has updated the definition of the following resources and may break applications that simply shift to using the v2 api without catering for the changes:
start, end properties.position attribute, added name, description and type attributes.geohash attribute, added name and description properties.geohash and region attributes, added href and properties attributes.Please see the Resources OpenAPI definition for details.
With the introduction of the Course API the following paths should now be considered deprecated:
/signalk/v1/api/vessels/self/navigation/courseGreatCircle/signalk/v1/api/vessels/self/navigation/courseRhumblineNote: The Course API does currently maintain values in these paths for the purposes of backward compatibility, but applications and plugins referencing these paths should plan to move to using the equivalent paths under /signalk/v2/api/vessels/self/navigation/course.