2025.06
Release Notes
Last updated
Was this helpful?
Release Notes
Last updated
Was this helpful?
The with the property of the solution create new Events dialog now can create UI Events This means that a module can create an UI Event for a Form or a Solution and that is then shown the the developers properties view for a form or solution. A Servoy developer can that attach a function to that event (just like button onclick). And the system will register and deregister those events when the form is created and destroyed.
Example Use Case: A module can define custom event types and fire them whenever significant actions occur. The developer then sees those events in the properties view of the Form or Solution and can attach (that registers and event handler) declaratively instead of doing it by code.
The rhino javascript engine did get a major update from a 1.7.x version to 1.8.0. This does result in a lot better support of certain We will be supporting in our javascript editor more and more of those features, which is needed if they are syntax changes, if they are just api changes you could already use those even if there is a warning reporting that you call an unknown function or property (please report those so we can generate codecompletion/doc for it)
Introduced a Less/Css tab in the form editor, when you give a form css styling there then those classes are specific to the form they are encapsulated so only valid for those forms, this holds true through the form hierarchy so a .myclass {background:red} will be tied to that forms elements, another .myclass in another form will not influence each other. This means that you can make css grid or flexbox layouts for your forms that holds the layout data specific for that form. We will continue to build on this to so we can generate stuff in this in future releases.
If a database has support for Array type columns currently only postgresql and hsqldb (inmem), then these can now be used directly as is in Servoy
so if you have a table like:
CREATE TABLE arraytable (name TEXT PRIMARY KEY, int_array INTEGER[], text_array TEXT[])**
then you can do stuff now like:
and use those dataproviders directly as arrays.
potentially these could be used as N-M tables but we only support currently a = where you have to specific the exact array We need to see if there is demand for it to search for 1 value.
Introduced for all components that have the visible and/or enabled property also 2 dataprovider properties besides those: visibleDataprovider and enabledDataprovider, this means that all those properties can be handled by dataproviders, so a component is only visible if the visile property is true and the visibleDataprovider if set is also returning true. This way you can control more dynamically the enabled or visible flag of a component through data (like a calculation)
So no need to have code that walks over compopnents to toggle the visible or enabled flag, but the calculation is just toggling it for you.
Permissions are now an Enum in the developer under the node: JSPermission.XXX so that you get warnings when you use permission that are not there.
Added a Less tab in the FormEditor where css can be typed.
Various improvements in the developer for the new Menu system.
Many small improvements in the developer (at lot nested property related in the properties view)
Last release we had initial support for BigInt of javascript. After investigation this BigInt is very limited for the Servoy environment (only integer numbers). And you can't really calculate with it, so mixing it up with normal numbers. So what we did is also improved the Rhino engine underneath so big numbers in java that are stored in a BigDecimal are now get in the rhino engine as is. And we can use that to calculate (sum, extract multiply) with those. So those numbers are now not converted to a double notation where you can loose precision. And those numbers can be as big as you want like a sql DECIMAL(100,10) that means up to 100 numbers before the decimal separator and 10 after it. And the 10 after it are always exactly what you typed in.
We also extended this support all the way up the the TiNG client in the browser, big numbers are now also supported there, it could be that those numbers have a little bit worse formatting support, but the basics should work fine. This is because the lib we use (Numbro) doeshave internally support for BigNumbers but doesn't use it fully...
The JavaScript builder/parser can now handle more stuff that the (new) Rhino javascript engine also now supports.
catch (of try/catch) doesn't need to have a (e) to get the parameter/value in the catch block if you are not interessted in that anyway (so try {} catch {} will work also)
Because Arrow Function are more and more used, we relaxed a bit the function passing to Servoy that this must be a top level function (form or scope) This does give a bit more responsibility to the Developer because if you give Arrow functions to the scheduler of that are defined in a form. Then it possible that this form is destroyed and then the function is called by the scheduler, make sure you clean these situations up in the ondestroy of a form For scopes this is not a problem because the live in a ngclient instance forever.
Also this has a bit of side effect in the developer when changing the script itself, because in a running client this script is updated to the latest code but the arrow function you used as a listeren or callback is not updated, so that will keep executing the old code until you do the register again or restart the client.
You can now limit the file size of the showFileOpenDialog (file plugin) this will now by default use the servoy.webclient.maxuploadsize property, but in the with file.setMaxUploadFileSize this can be overwritten and then it will be used for most uploads (also file upload component besides the showFileOpenDialog of the file plugin itself)
Also the (Multi)FileUpload do have options to set a max upload size, to let the user quickly know this is the max size, the multi file upload only uses the servoy.webclient.maxuploadsize for now server side, file upload will use both. We could introduce a sensible default value so you can't push by default GB's of files.
Rhino is updated to 1.8.0 from 1.7.15, this is a major update that brings log more support for newer ECMA features done for this or future releases.
Eclipse updated to version 2025.03 (4.35)
Angular updated to latest 19.2 and AGGrid updated to version 33.3.
The shipped Java version updated to 21.0.7. This releases will also now require this version for the developer or server, so Java 21 is from 25.06 on mandatory.
The shipped NodeJS version updated to 22.15.1.
Various java depedencies, of java plugins or eclipse plugins (maven dependencies) are also al updated to the latest releases.
JSFoundset update small behavior change when perform() is called: it really only saved records now of that datasource not all records that where in edit over all datasources.
Developer: The default key binding for 'Locate Servoy Resources' was changed to Ctrl + Shift + K (initialy was set to Alt + Shift + K, but for some reason those type of keybindings are not set correctly)
Add an overloaded method to set a logger's log level using one of the LOGGINGLEVEL enum values
Add support for autocomplete/suggest on Array.flat() method
Add "deprecated" property of a form to JSForm and solution Model so we can access it programatically
clean out constants/api that is only used for Smart or WebClient
ResponsiveContainer should be accessible via solutionmodel
I would like to use isEnableDataprovider/isVisibleDataprovider on components
login.html generation fails
Form less file does not get duplicated when form is duplicated
Error on first show of a Data Grid form set into grouping mode
Hidden context menu and/or bad positioning
cannot add menuitem to a menuitem from property view using small "+"
Error when running svykanbanexample - parser error
Browser error when dragging a formcomponent that has a formcomponent inside
stateless login - regression due to the big refactor when using oauth with a custom api
Browser error from in datagrid sometimes when selection changed
Make permissions an enum that can be used in scripting
Mac property configurator isn't showing correctly the first time
Missing keybinding 'Locate resource'
ClassCastException in the canvas when selecting the new "-none-" item that was added in the imageLoader
Unique ids for menuitems
Ecma parser fails to parse code with the if & comment combination
Add support for Async & Promise with datasets
Add support for Async & Promise with rawSQL plugin
When adding a new column in the datagrid with the first '+' button, it adds the item at the end
create UI level events, ask in the new event type dialog if it is an ui event, signature
Servoy Developer
Upgrade Eclipse (and tycho) and all java mvn dependencies
Allow reordering the menuitems of a menu in Solex
Unhandled event loop exception
Servoy Menu - Menu Editor versus Properties View : Navbar isDivider property
Servoy Menu - Menu Editor versus Properties View : Permissions
Servoy Menu - Menu Editor versus Properties View : Text and toolTipText
Warning on this
when using it in nested arrow functions
Make it easier to see if an element has designtimeProperties or not
When you duplicate a media file inside a subfolder, it places the file in the main folder
Selection is not visible in Variables view on Servoy dark theme
Dragging elements in outline gives very strange behaviour
Variant does not show the correct preview
Open (default) external browser for the links in the tooltips
Copy property value from datasource
introduce a css/less file tab in the form editor to have css specific for the form
ResponsiveContainer is missing the formIndex property
Select tab form dialog issue
Restore do default in properties doesn't visually set handlers back to -none-
Cannot type Map and Set
infinite loop in the parser because the exp expression is not fully implemented
Handle missing exception object in catch block (visitors and dltk model)
Fix parser warning when calling the operator ~~ to return Number
ES6 allows function parameters to have default values
Support ES Object Method shorthand syntax
DOCS Generator: Server Plugin Settings should be auto generated
Wrong doc for setExtraProperty
Remove Smart Client references in the docs
overload support in our doc file for createPopupMenu
Foundset does not track difference with high precision floats
DBTreeview: elements.file_treeview.setExpandNode(elements.file_treeview.getSelectionPath(), true) throws error
select2tokenizer not showing dataprovider-changes from outside [SERVOY]
httpclient multipart error
agLargeCellTextEditor - Z-Index in Modalforms is broken [SERVOY]
onColumnDataChange in NG Grid returns the display value instead of the real value if the valuelist is using Global Methods [SERVOY]
[jwt plugin] allow acceptNotBefore when verifying web tokens
Grouping on optional fields on datagrids doesn't work as intended
event property missing in onSelectedRowsChanged
Sidenav getSelectedMenuItem() returns a selected item but the sidenav UI does not reflect it
svyGMaps not loading on Android devices
Form with Navbar with Servoy menu throws errors
UDP Plug-in enhancements
Evaluate the possibility to add a shortcut feature for the HTML area component
create cypress component test for bootstrap extra components
create cypress component test for servoy extra components
2025.06RC - LFC cardview does not calculate rows taking into account CSS and throws other errors
Solution using form less do not start when running in Safari
Limit file size and restrict file type on file.showFileOpenDialog plugin
The property “resultDisplayTimeout” is ignored
Popup menu
aggrid onDrop doesn't receive enough information about the data received and the column it is dropped onto
maxRecIndexPropertyValueListener in DAL is always removed in any removeDataLinkedProperty, not just in some
TypeError: Cannot read properties of null (reading 'script')
TypeError: Cannot read properties of undefined (reading 'querySelector')
createPopupMenu is duplicated in the DOM
Augment plugins.http.Request API
stateless login - oauth + deeplink
tabpanel form not layouting well when tabindex is changed from scripting
stateless login - regressions due to the big refactor
Listform component throws internal error when using inmem and responsive paging
Numbers: Incorrect thousands separator for fr-ch
sidenav npe
update Fabricjs to V6 in svycanvas
Support serializing CustomEvent instances from the clientside into JSEvent's serverside
Ability to specify the 'type' when creating JSEvents (in the serverside of Web Components)
Individual document name for Servoy PDF Viewer download
imageUrl for lightboxgallery
Servoy Default label has different styling in TiNG
select2tokenizer missing essential functionality
Foundset retains multiple selected indices after sorting/filtering in multiselect grid
svyCanvasExample doesn't work with images, although it has that option
Error when launching client/page expired
Google Maps Component Warnings
Unable to Drag Components into CSS Position Container in Servoy 2024.3
Memory issues NGDesktop file service
NGDesktop failed printing after update to 2024.12
svywebcam switch camera for Android
SQL is unintentionally adding alias
check the rhino 1.8 unit tests
Global method valuelist with a large dataset take forever to load since new Servoy version
Support array columns for some databases
FoundsetUpdater also saves other pending records.
databaseManager.getFoundSetCount() to support ViewFoundSets
FunctionDefiniton should be relaxed a bit so you can give arrow functions to it
Update to Rhino 1.8.0
Handle bigints (java/javascript) to be able to send to the client (json doesnt directly support this)
handle bigint support in java (Database -> java , Java -> Scripting, Scripting -> Java , Java -> Database)
Multi solution breaks with different login types
I would like to use utility modules ( without resource project ) in pre-import-hook
stateless login - what happens if the authenticator does not find the user
component doesn't refresh when adding a new slide array
CLONE - plugins.jasperReports.relativeReportsDirectory returns an empty string
Grid scrolls back to top if scrolling without previously focusing the grid
aggrid-groupingtable - LocaleText dateFormatOoo doesn't seem to work
Row selection column should be pinned to the Left.
DBTreeview: not refreshing context when autoRefresh is enabled
DBTreeview: Rightclick doesn't highlight the selected node / element in the tree
Select2Tokenizer gives an error when valuelist is based on globalMethodValuelist
Select2Tokenizer TAB jumps to unknown place
Allow footer form to be pinned to the bottom of the sidenav
Treeview (dataset) lacks possibility to set column width
in function parameters
object method syntax
code completion.
(Better) Support for the or CSSContainer in the solutionModel, JSForm now has or to get a responsive container from a css positioned form.
databaseManager gets async variants of the like
Last release the HTTPPlugin did get some async Promise API now the RawSQL plugin also got Async variants of there or methods, so you can call them and just get notified when the result is there.
,
,
, ,
,
,
,
, ,
, ,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,