2025.09

Release Notes

2025.09.1

See the case list below for the cases fixed in this release.

2025.09

Breaking changes

Move to Jakarta API

Servoy has migrated to the Jakarta API, which requires Tomcat 10 or higher. The bundled version is Tomcat 11.0.8, which we recommend for optimal compatibility. As a result of this change, any custom server plugins that expose servlets or filters will no longer function unless they are updated to use the Jakarta API namespace (jakarta.servlet.* instead of javax.servlet.*)

Features:

Form-Specific Less/CSS Support

In the previous release of Servoy (v2025.06) , we introduced Form-Level CSS and we have extended this feature in the current release. Form-level LESS files may now use solution-level LESS properties. This means that, in each form, you can easily reuse, override and extend the top-level LESS, including the properties declared in the Servoy Theme.

circle-info

Structural Change

Prior to Servoy Version 2025.09, the built-in Servoy Theme was implemented by including the custom_servoy_theme_properties.less file, which included both CSS classes and LESS variables.

As of v2025.9, this file is split into 2 files: servoy_theme.less (which has the classes) and solution_properties.less (having only properties). Therefore, If you have the older setup, nothing is changed, however, you should adopt the new setup, if you are using form-scoped LESS files to avoid having all the classes included in every form.

Cancel long-running queries

Support has been added for canceling long-running queries directly from the Admin Page. This allows administrators to more effectively manage system performance by terminating problematic or stuck queries. Additionally, when a client session is shut down, any active queries associated with that client will now automatically be flagged for cancellation, helping to free up database resources more efficiently.

Audit log improvements

A new flag has been added to table columns to exclude their values from being recorded in the audit log. This is especially useful for fields that may contain sensitive information, such as passwords or personal data, ensuring better compliance with privacy and security requirements. When this flag is enabled, changes to the column are still logged, but the actual data values are omitted.

Developer Enhancements

Experimental: Developer-Time Solutions

Servoy can now have DeveloperSolutions, these are solutions that are only there in the developer and can extend the developer to add context menus where you can do stuff on the selection. For this the developer solution has to have a onsolution open, and then with the api on the toplevel node "developerBridge" you can register menu items that appear then in the developer context menu(s) and those get the state of the selection where they then can work on (Like solutionmodel API). This is an experimental feature, so we are looking forward to your feedback on this. By default it is disabled and you can enable it in the preferences (General -> Servoy -> Solution Explorer section). A simple example would be:

File Format Change

All solution files—such as forms, relations, and value lists—are now saved as proper JSON objects. This means each file consistently starts and ends with {}, all keys and values are properly quoted, and embedded JSON structures (like customProperties) are stored as actual JSON rather than as stringified JSON. Files are also indented for improved readability.

Updating the Files These files will be automatically converted to the new format when they are touched and saved. Alternatively, you can proactively convert all files at once using the new menu item Upgrade solution files to new JSON format option available in the Solution Explorer.

AI Tooling While this change has no direct impact on application behavior, it was implemented to align with standard JSON formatting. This makes solution files more compatible with AI-assisted development tools—such as GitHub Copilot—and opens the door to improved tooling and automation in the future.

small changes:

  • A new convert component context menu action in the designer where you can quickly convert a component to another typing (mapping the property values)

  • Properties View of components does support now basic properties for categorizing certain properties of components together to the top.

  • Chromium browser now also can be used as the default browser inside the developer (so also for tooltips). For example for the MAC running on Arm64 do have a problem because of a Apple bug, this can be worked around in different ways. But you can now also use the shipped chromium browser for that, by default it is disabled in the servoy.ini file: -Dchromium.integration.eclipse.disable=true, this can be set to true to enabled it, but this has some different behavior compared to the default one.

Improvements

ECMA Parser Enhancements

The JavaScript parser in Servoy has been improved to support more modern ECMAScript features:

  • Destructuring Assignment is now supported, allowing developers to extract values from arrays or properties from objects into distinct variables in a cleaner and more concise way. Learn more about destructuring on MDNarrow-up-right.

  • Typed Map and Set Support: You can now use generics-like syntax to specify key and value types for Map and Set objects (e.g., Map<String, Number> or Set<Date>). This enhances code clarity and enables better tooling support, such as improved autocomplete and type checking.

These enhancements make it easier to write modern, maintainable JavaScript within Servoy solutions.

API

Enhanced Data Typing on QBSelect API

The Query Builder API has been enhanced by adding strongly-typed versions of the QBColumn class, including:

  • QBTextColumn

  • QBNumberColumn

  • QBIntegerColumn

  • QBDatetimeColumn

  • QBMediaColumn

This provides better code complete and type-checking when using the Query Builder API. For example, a QBTextColumn exposes a string function, substring, but a QBNumberColumn does not.

Plugins

RabbitMQ plugin

New properties added to the RabbitMQ plugin configuration:

  • amqpbroadcaster.queuetype: What type of queue algorithm will be used, quorum or classic (default classic)

  • amqpbroadcaster.singleactiveconsumer: Single active consumer allows to have only one consumer at a time consuming from a queue and to fail over to another registered consumer in case the active one is cancelled or dies. (default false)

Security

Dependency updates

  • Eclipse updated to version 2025.06 (4.36).

  • Angular updated to 20.2.

  • AG Grid updated to 34.1.x.

  • Shipped Java updated to 21.0.8. Starting with this release, Java 21 is required for both the Developer and Server environments.

  • Several Java and Eclipse plugin dependencies have been updated to their latest stable versions.

Behavior changes

Known issues

Case List

2025.09.1

Components
Key
Summary

2025.09.0

2025.09.0-RC2

2025.09.0-RC1

Components
Key
Summary

Last updated

Was this helpful?