10.9

Last modified: April 2, 2024

10.9.0

Release date: March 27, 2024

Go to Marketplace

New Features

X-Ray Mode (Beta)

We are adding a feature to Design mode: X-Ray mode. X-Ray mode allows you to see certain structural elements of your page while still in Design mode. This feature adds a special border to certain widgets, such as layout grids and containers. You can also change their sizes.

When the X-Ray mode feature is enabled, the X-Ray mode itself can be toggled on or off with a button on the top bar. Turning X-Ray mode off returns the page to the WYS/WYG editor of Design mode.

As Structure mode is not supported on Mac, we are enabling X-Ray mode on Mac by default.

On Windows, X-Ray mode can also be enabled in the New features section of Preferences. You can opt out of the beta by disabling the feature in Preferences.

For more information, see X-Ray Mode.

Session and Login Token Improvements

We introduced authentication token support for applications, allowing users to stay logged in until their token expires.

Offline-first apps will use authentication tokens by default, providing compatibility with long-lived sessions in previous Mendix versions.

You can also use the new core client API, login2, with the useAuthToken argument, which allows you to specify whether to generate an authentication token for long-lived sessions. This can be used for both online and offline-first apps.

See Session Management for more information on how this works.

WebSQL replacement

We introduced an alternative for WebSQL with this release. After upgrading to this release, opening your offline PWA in your browsers automatically upgrades your WebSQL database to a new SQLite-based database. For this to function correctly, the browser must run in a Secure Context, which means either an HTTPS connection or by accessing your offline PWA via localhost. All functionality will remain functioning as is.

Other New Features

  • We added a Continue All button to the debugger. When there are multiple paused microflows, nanoflows, or rules, then they can all be continued by pressing a single button instead of having to continue them individually.
  • You can now indicate that a constant value is private (rather than shared). Studio Pro will store encrypted value in the user settings (instead of the app model). For more information, see the Constants section in Configurations.

Improvements

  • We now use a fully qualified name for the Override annotation in generated Java proxy code. This reduces name clashes with the user code. (Ticket 210053)
  • We improved the XPath constraint Visual Builder in a number of ways:
    • it now formats the XPath whenever a change is made.
    • it provides better feedback when unsupported association or attribute references are used in the XPath expression editor.
    • it provides better feedback when advanced token expressions are used in the XPath expression editor.
    • the order of the drop-down list items matches the autocomplete list in the XPath expression editor more closely.
  • We now support the copy, cut, paste, and delete actions in MendixChat through a right-click context menu.
  • We updated the fonts for MxChat, data filters, and Start from spreadsheet to those native to the operating system the app is currently running on.
  • We extended logging during synchronization by tracking execution time of database commands. Warnings are printed when a command takes a long time, which is controlled with the custom runtime setting LogMinDurationQuery. A history of all commands is logged when an exception occurs during synchronization.
  • In the Mendix React Client, we shortened the time it takes to bundle when rerunning an app.
  • After changing the entity of a data source, we now update the attribute paths of the widgets within it with the new entity if the attribute exists in the new entity’s type.
  • In the Mendix React Client, we shortened the building time by exporting nanoflows in parallel. Moreover, when rerunning an app, nanoflows are selectively exported based on changes.
  • The behavior of the autocomplete for editing page and microflow URLs was improved to suggest parameters and attributes more often.
  • We improved Studio Pro general performance: simple object moves no longer trigger consistency checks in the logic editors.
  • We improved positioning and layouting after Decisions are inserted via MxAssist.
  • We added support for query string parameters to microflow URLs. When configuring the URL of a microflow you can check the checkbox in the parameter table to configure that parameter as a query string parameters. Query string parameters are only supported for primitive microflow parameters.
  • In the microflow, nanoflow, and rule editors, when dropping an object on a flow that is not vertical or horizontal, it will be positioned at the drop point instead of aligned to one of the adjacent objects.
  • We added a Show button to the Select {Document Type} dialog box in Studio Pro to quickly open the selected document.
  • We have removed react-native-code-push dependency. We recommend migrating to Mendix OTA instead.
  • Context menu options are now provided for the widgets that can be converted to the modern (Mendix React Client compatible) counterparts. The following conversions are now possible: data grid widgets can be converted to data grid 2 widgets, static and dynamic image widgets can be converted to image widgets, and drop-down widgets can be converted to combo box widgets. The conversion might require the latest modern widget versions from the Marketplace. For more information, see Mendix React Client’s Migration Guide.
  • We changed the button captions for the data grid 2 generate columns dialog box to make it clear that the generation can be skipped when selecting a data source.
  • We now support HTTP Method DELETE in a consumed REST service (beta).
  • We now support multiple parameters for values of request headers in a Consumed REST service.
  • You can now prevent published OData Actions from including a @context attribute in the response by specifying metadata=none in the Accept header of the request.
  • The request body for OData actions are now marked as required in OpenAPI if it has at least one required parameter.
  • We improved the CORS settings for published REST services. Studio Pro now requires a constant for Allowed origins. The previous default of All origins is not the right value in most scenarios.
  • We added the com.mendix.core.ScheduledEventsCleanupBatchSize and com.mendix.core.ProcessedTasksCleanupBatchSize runtime settings to configure the batch size for the periodic cleanup of ScheduledEventInformation and ProcessedTasks.
  • We now support calling stored Procedures with no parameters using the External Database Connector. You can browse through all Procedures in the Browse database tab. We also added a Refresh button to provide to quick access to the updated data.
  • The External Database Connector is now available for Studio Pro on Mac (Beta).
  • Data Importer is now available for Studio Pro on Mac (Beta).

Fixes

  • We fixed a known issue on macOS where context actions in the App Explorer and the Edit menu were not properly registered for the currently selected element.
  • We fixed a known issue in the logic editors where sometimes the type of an output variable of an activity was showed as Not set. (Tickets 205751, 207251)
  • We restored the original functionality in Azure file storage, where a container name can be specified in com.mendix.storage.azure.BlobEndpoint runtime setting. This fixes a known issue. (Ticket 210679)
  • We fixed an issue where a concurrency error happened when retrieving a session while optimistic locking was enabled. (Tickets 183769, 198138)
  • We fixed an issue where a generic unique constraint validation error was thrown instead of a user defined one when multiple objects were committed at the same time. (Ticket 201463)
  • We fixed an issue where download file was not working on Android if the files encryption was enabled. (Tickets 204783, 204891, 211451)
  • We fixed an issue with breaking glyph fonts on some machines. (Ticket 206544, 207012)
  • We fixed an issue where dependency synchronization would fail with a CE9803 error when Gradle could not choose between different version variants (for example: guava:##.##.##-jre/guava:##.##.##-android) for certain libraries. We added a Gradle core plugin (jvm-ecosystem) to the buildscript to resolve this issue. (Ticket 206976)
  • We fixed an issue where the entered text does not get saved in the Text editor control. (Ticket 207346)
  • We improved the memory consumption in Studio Pro by resolving a memory leak caused by checkable menu items. (Ticket 207357)
  • We fixed an issue where using an object type decision in nanoflows it did not fall back to a generalization in case there was no path for the real entity type. (Ticket 207594)
  • We fixed an issue where custom content in pluggable widgets, e.g. Data grid 2 or selectable objects for the Combo box, were including the objects of the data source in Save changes and Cancel changes actions, even when it was only used for display. (Ticket 207911)
  • We fixed an issue where importing a JSON string with a length greater than 20000000 resulted in a runtime exception. We added the mapping.import.MaxJsonReadingLength runtime setting to manually configure the maximum length of a JSON string to resolve this issue. (Tickets 208462, 211077)
  • We fixed an issue when an entity with validation rules could not be moved from module to another module via Move to operation. (Ticket 208691)
  • We added a workaround for an issue in the Oracle JDBC driver that caused an exception about incorrect data types during object creation. (Ticket 209513)
  • We fixed an issue when the text box has an invalid layout in the SQL query editor dialog box. (Ticket 209558)
  • We fixed an issue where an unnecessary Widget must be read-only consistency error was triggered. (Ticket 209851)
  • We fixed an issue when the Oops pop-up window appeared when trying to move a remote entity with one-way navigable associations. (Ticket 210793)
  • We fixed an issue when the expression editor option does not get saved in the preference dialog.
  • We fixed an issue where inserting an external action from an OData source into a microflow did not add the correct entities to the domain model.
  • We fixed an issue with opening multiple pages in a microflow that have a custom URL when also using a custom URL prefix in the Mendix React client.
  • In the Mendix React Client, we fixed an issue where bundling happened twice.
  • The template placeholder for page templates now no longer throws a consistency error when using the Mendix React client.
  • We fixed an issue where the workflow engine might fail with an IllegalArgumentException while persisting the workflow to the database.
  • We now show a proper user facing error when you try to set an outcome for an already completed multi-user task in workflows.
  • We fixed some spurious foreign key constraint violation errors when using the built-in database (HSQLDB) and foreign key constraints.
  • We introduced more consistency checks for Send REST Request (beta).
  • We fixed an issue where resolving a consistency error for mapping document ran the whole consistency check instead of only the impacted documents.
  • We now let a consumed REST service skip response elements that are not supported, like arrays with items that are not all the same type. When this happens a warning is shown.
  • We fixed a bug related to the published REST services not specifying the wrong method in case of a 405 response.
  • We fixed an issue in the microflow, nanoflow and rule editors where some combination of splits, merges, and events was connected incorrectly when dragged onto a flow.
  • We reintroduced dropping documents from the App Explorer onto related actions in the logic editors. For example, now dropping a microflow onto a Call microflow action changes this action’s target to the dropped microflow.
  • We now render the task queue icon on Microflow call actions and Java action call actions when they are executed in a task queue.
  • We fixed some features of resizing objects in the logic editors. Resizing from the center with the Shift key is back. The minimum step size for resizing is increased. Snap corner to corner while resizing is available now.
  • We fixed an issue that prevented the display of the icon for commit actions with event handlers in the logic editors.
  • In the logic editors, we re-added the initialized and changed attribute names to the default captions of Create object and Change object actions.
  • We fixed an issue where double-clicking on a newly added microflow object opened the microflow properties dialog box.
  • We fixed invalid placement of a moved object in a loop when moving the object causes the loop to resize in the logic editors.
  • We fixed an issue where, if the call microflow activity of the sub-workflow fails, the parent workflow still remained in progress. The parent workflow will now fail when any activity in a sub-workflow fails.
  • We fixed the problem that anonymous user objects were kept in the database when their associated anonymous sessions were deleted on application startup after a model update.
  • We fixed an issue where conflicts were being shown on Studio Pro auto-generated content ( example on vendorlib-sbom.json) during rebase and merge.

Known Issues

  • Line endings in CSS files are not being handled properly, so when using Revert All Changes or performing other version-control operations, CSS files appear in the Changes on Disk dialog box.
    • Workaround: For details, see this section in Troubleshooting Version Control.
  • A finished parallel split path that is removed from a running workflow instance wrongly leads to a versioning conflict. Please note that “path” was called “branch” in earlier versions.