2025.03 (LTS)

Release Notes

2025.03.3 LTS

See the case list below for a few fixes that where done since the 2025.03.2 LTS release.

2025.03.2 LTS

This is the first LTS release of the 2025.03.

it has security fix for the fileupload (upgraded from 1.5 to 1.6)

A few cases where fixed since the 2025.03.1 release, see the case list below.

2025.03.1

Stateless Login page enhancements and security hardening:

  • If you're using custom Stateless Login HTML files placed in your media directory, it is recommended to let Servoy regenerate a default login page and then reapply your customizations to ensure compatibility and security.

Medium-severity security fix addressing a Cross-Site Request Forgery (CSRF) issue on the login page.

Several additional medium-severity security fixes addressing OWASP-related vulnerabilities in other areas of Servoy’s codebase.

Changes to the handling of server-side URL rewriting:

  • Previously, parameters resulting from server-side URL rewrites (e.g., rewriting https://host/someniceurl to https://host/solution/yoursolution?param1=1&param2=2) were automatically sent to the index page and transmitted via websocket to the client.

  • This behavior is now controlled by a new property: servoy.ngclient.output.querystring.for.url.rewrite, which is set to false by default.

Note This does not impact Servoy-managed deep links such as https://hostname/solution/mysolution/some/nice/url/with/params, which will continue working without issues.

Updated the embedded Chromium browser:

  • Fixed an issue where two instances of the Servoy 2025.03 Developer could not run simultaneously without manually specifying JVM arguments.

Restored the functionality for text searches within Servoy files (.frm, .rel, .val, .dbi):

  • These files were previously incorrectly treated as binary, disabling text search and causing unintended side effects. The issue has been resolved, restoring full search capability within these file types.

2025.03

Introduced native Windows ARM64/AArch64 support with a dedicated Servoy Developer build.

The final release includes further fixes and improvements related to the newly introduced Events Manager and the enhanced OAuth configuration features.

Features:

Events Manager:

A new Events Manager top level node has been introduced, allowing developers to register for events EventType.XXX and fire custom events.

With the Events Manager, you can:

  • Register for built-in events EventType.XXX and handle them globally.

    • Built-in events EventType.XXX are fired automatically by Servoy. For example, whenever a form is shown or hidden, Servoy triggers events internally. With the Events Manager, you can listen to these events globally (across all forms) or specifically for individual forms. This complements existing form-level events (like onShow and onHide), allowing more flexible and centralized event handling.

  • Define and trigger custom events, enabling modules or solutions to communicate effectively.

    • Custom event types can be defined using the solution or module property Solution.eventTypes. For example, one module can trigger a custom event when specific business logic occurs, and other modules or forms can respond by registering listeners for these events.

Example Use Case: A module can define custom event types and fire them whenever significant actions occur. Other modules or parts of the application can then register listeners to react appropriately, promoting a clear separation of concerns and decoupled functionality.

Developer:

Outline Enhancements - responsive forms

You can now expand or collapse all nodes in the Outline View when working with responsive forms.

Promise API

Added a new Promise API node, currently used only by the HTTP Plugin, which now includes new methods returning promises instead of using callbacks.

  • The asynchronous methods on the Request object now include a promise-based method: executeAsyncRequest(): Promise<Response>.

  • You can execute multiple asynchronous requests concurrently and use standard JavaScript methods such as Promise.all or Promise.allSettled to handle the completion of these requests.

  • Additionally, the HttpClient class now provides a single method to execute multiple asynchronous requests: HttpClient.executeRequest(requests: Array<Request>): Promise<Response>. This method accepts an array of requests, executes them asynchronously, and returns a promise that's resolved when all requests complete, either successfully or with errors.

BigInt Support

Basic support for BigInt has been introduced. BigInt provides support for arbitrarily large integers (whole numbers), essential when standard numeric precision is insufficient.

Code Completion Enhancements

Added for...of code templates for iterating over datasets and foundsets to streamline scripting and reduce boilerplate.

Servoy Menu Editor

A dedicated Menu Editor has been introduced, allowing visual configuration of menus and their menu items directly within the Servoy Developer IDE. You can now easily define a menu structure and set properties of individual menu items directly within this editor.

Custom Foundset Base Types

Introduced new base Types for JSFoundset and JSRecord, like JSBaseFoundset. This base type is essential when working interchangeably with different foundsets, such as ViewFoundsets, MenuFoundsets, and regular JSFoundsets, enabling cleaner, more generic coding patterns across various foundset implementations.

Possible breaking changes

Due to several issues, it's no longer permitted to delete or reorder columns or tabs (custom component types) from a base component. From now on, you can only add new items or change properties of existing ones, but you can no longer delete or reorder them.

Known issues

If you want to run 2 instances of the 25.03.0 release at the same time then it will crash because of a shared directory that the embedded chromium browsers uses. For this you need to change the servoy.ini file (besides resides the executable) add add a system property: -Dchromium.cache_path=<point_to_a_unqiue_dir>

When using the stateless OAuth the deeplinks that you give are lost when the oauth service is called to login. This will be fixed for a 25.3.1 release.

Improvements

ECMA Parser Enhancements

The JavaScript builder/parser (used for validation and code completion) has been significantly improved, resulting in greater stability and reduced memory consumption. Numerous smaller improvements have been made, enhancing overall performance and accuracy of code validation.

OAuth Authentication Flexibility

Added the OAuth Authenticator option to the Stateless Login functionality. This allows you to dynamically choose an OAuth provider at runtime instead of being restricted to a single predefined OAuth configuration. It offers greater flexibility when implementing Stateless Login, enabling multiple OAuth providers or dynamic configurations based on some query parameters.

Form Event Enhancements

The onBeforeRecordSelection event, previously introduced as an entity-level event in the 2024.12 release, is now also available at the form level, allowing finer control over record selection behavior.

API

clientutils has now a getUserAgent() method, which returns the user agent string of the client.

Plugins

HTTP Plugin Enhancements

  • The HttpPlugin now includes a new method: executeRequest, which accepts an array of requests, allowing you to execute multiple HTTP requests asynchronously.

  • The async execute calls on the Request object now have besides the callback method also the promise one that has no callback but returns a Promise

  • HTTP responses may now include large data handled through temporary files. The returned Response object provides the method getFileUpload(), which returns a JSFile pointing to the temporary file, or null if no temporary file was generated.

Security

The Stateless Login page now uses the global Content Security Policy (CSP) settings. This means it follows the CSP configuration defined for the NGClient, restricting external resource access according to your CSP settings.

If you're using custom login pages or need to reference external resources (e.g., scripts, styles, or images from other domains), ensure that your CSP settings are updated accordingly. By default, the CSP settings restrict external resources, so you'll need to explicitly allow these resources in your CSP configuration if necessary.

Dependency updates:

  • Eclipse updated to version 2024.12 (4.34)

  • Angular updated to 19.2 and AGGrid updated to version 33.x.

  • The shipped Java version updated to 21.0.6. Future releases will require this version or higher (currently, Servoy 25.03 needs Java 17 or higher, 25.06 needs Java 21 or higher).

  • The shipped NodeJS version updated to 22.14.0.

  • The embedded PostgreSQL database shipped with Servoy Developer has been upgraded to version 17.2.

Case List

2025.03.3 LTS

2025.03.2 LTS

2025.03.1

2025.03.0-RC2

2025.03.0-RC1

Components
Key
Summary

Last updated

Was this helpful?