2025.03
Release Notes
2025.03
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
orPromise.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.
Note:
JavaScript's BigInt supports whole numbers only, not decimals.
Future updates will explore additional methods and potential workarounds to handle numeric precision more comprehensively.
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.
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 OnBeforeRecordChange 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.
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.
Note: These are major releases, and all related packages will likely require updates, especially if using packages from source.
The shipped Java version remains at 21.0.5. Future releases may require this version or higher (currently, Servoy supports Java 17 or higher).
The embedded PostgreSQL database shipped with Servoy Developer has been upgraded to version 17.2.
Known problems:
If your workspace path contains spaces, the Form Editor and/or the Servoy Package Manager may fail to initialize correctly. Workaround: Remove spaces from the workspace's full path.
Case List
2025.03.0-RC1
Last updated
Was this helpful?