Mendix Studio pro
10.20.0
Stable
February 26, 2025
Mendix Studio Pro is our low-code IDE for professional developers. It's a powerful visual model-driven development environment to build apps on the Mendix Platform. With Studio Pro you can easily create, change, integrate, test and deploy your applications, all in one place. Moreover, you can manage branch lines and security as well as extend your app with custom code using the built-in editors.
Click 'Download Studio Pro' to get the installer for free (Windows OS required*). Learn more about the installation and the Studio Pro capabilities in our documentation.
Not a professional developer? Learn How Mendix supports different developer profiles
.Before installing, please read the Release Notes to learn about improvements, bug fixes, backwards compatibility, breaking changes and known issues.
*If you are using a Mac, check out these instructions first.
Release Notes -
**Release date: February 26, 2025**
### New Features
#### Interrupting Timer Boundary Events (Beta)
Following the general availability (GA) release of non-interrupting timer boundary events in Studio Pro 10.16, we have now introduced interrupting timer boundary events as a beta feature. With interrupting boundary events, you can abort the parent activity and initiate an alternative path. However, in the current version, it is not yet possible to jump back to the parent path. For more information, see [Boundary Events](https://docs.mendix.com/refguide/workflow-boundary-events/).
#### Other New Features
- We added CPU, GPU, memory, and additional information to the **Collect Support Information** tool. It is also now possible to save a copy of the support information for ease of use so users can simply send the information directly to Mendix Support, if needed.
- The conversion between Microflows and Nanoflows has been improved with two options: Duplicate, which creates a copy without modifying usages, and Convert, which replaces all possible usages of the microflows and nanoflows in the project. Additionally, a warning dialog will be shown if the conversion is not possible to unsupported usages, for example, a Microflow cannot be replaced with a Nanoflow if it is used as a homepage.
- We added several new features to the Security Overview:
- We now show the pages, microflows, and nanoflows accessible to a selected user role in a selected module.
- We added a module roles tab – this tab provides an overview of all module roles assigned to a user role within the selected module.
- We added an Excel export – this export contains all access rules, the access to pages, nanoflows and microflows, and the module role mapping.
- We are releasing a new client API for JavaScript Actions. The new API follows modern practices, is promise-based, is more consistent, and does not rely on global objects. Thus, the new API offers greater flexibility for integrating Mendix apps inside other applications. It supports React client, Dojo client, and native mobile. For more information, see [Client API](https://docs.mendix.com/apidocs-mxsdk/apidocs/client-api/).
### Improvements
- We now update the System attributes changedDate and changedBy on commit, instead of after every change. This will make the `IMendixObject.hasChangedMemberValue` method more useful. (Ticket 152057)
- We improved the performance of published OData services that use a **Read** microflow. When the client asks to expand associations, the runtime now performs a database query per association, rather than per object. (Ticket 234607)
- The *openapi.json* document of a published REST service using a message definition mapping indicates that it can return both *xml* and *json*. It now lists *json* first, making that the default choice in the interactive documentation (Swagger UI) page. (Ticket 236715)
- We added the [sync-java-dependencies command](https://docs.mendix.com/refguide/mx-command-line-tool/app/#java-dependencies) to the mx command-line tool. Using this command you can synchronize managed Java dependencies.
- We improved deployment speed for non-progressive web applications.
- We now use generated BOM-refs for managed dependencies in the SBOM.
- We improved the synchronization of scheduled events that happens at startup: the updates are now performed as cluster management tasks, so they can be performed by any node in the cluster.
- We made several improvement to the **Integration** pane in Studio Pro:
- OData services are now indicated with the subtitle *OData*, and business event services are indicated with the subtitle *AsyncAPI*.
- Associated entities that are used in the app now show a green checkmark.
- Searching the Catalog and clicking **Show more** now shows actions and allows you to drag them to a microflow.
- In the logic editors, we made improvements to the **Logic Recommender**:
- It is now less intrusive: the blue plus is hidden when the flow is too short to allow the flow to be selected. It is also hidden when the flow is selected to allow the Bezier handles to be adjusted. To show the Logic Recommender in this case, we added a context menu option.
- When a flow, **empty** looped activity or **new** flow is selected, the Logic Recommender will now open with Ctrl + Enter.
- In the logic editors, we added validation the return variable name in the **End event properties** dialog box to ensure no invalid name can be specified.
- Maia chat references are now collapsed by default. Also, Maia chat maximum width was removed and a reference toggle was updated according to the new design.
- We reduced the number of service calls required to fetch necessary information, enhancing and optimizing performance during VCS operations.
- We have added a runtime setting `MaxRetrieveSize` that limits the maximum amount of objects the client can retrieve in a single retrieve operation. The default value of this settings is `1000`.
- We improved the names of **View** entity associations. If you specify an alias in the OQL column, it will now use that alias as the association name.
- We added support to the External Database Connector to enable saving SQL queries without running the query, which allows users to switch between queries without completing the workflow.
- We added support for merging the module roles.
- We added a new menu option **Help** > **Support Tools** > **Refetch Repository** to fix the corrupted repository due to the *LibGit2Sharp.NotFoundException* exception.
### Fixes
- We removed the consistency error when an association data source had steps traversing from a local to an external entity. (Ticket 203958)
- We fixed an issue in the *Call external action* activity where the runtime only serialized the creatable and updatable attributes for object arguments. Now the runtime serializes attribute regardless of these capabilities. (Ticket 224173)
- In the logic editors, we disallow creating variable names that clash with predefined variables, e.g. '$CurrentUser'. (Ticket 225275)
- We fixed an issue where Chrome incorrectly displayed a prompt to install a progressive web app (PWA) for non-PWA apps. (Ticket 230439)
- We fixed an issue where disabling actions that had custom error handling did not work correctly. (Ticket 231341)
- We fixed an issue with batch text translations and widgets: after translation widgets were prompted to be updated, this resulted in some translations being reset. (Ticket 233401)
- We fixed an issue where retrieving an external entity with a non-sortable key attribute resulted in an error. (Ticket 236093)
- We fixed an issue where structure mode went blank after making changes, or showed an **Oops** pop-up window mentioning *no undo context*. (Ticket 239410)
- We fixed an issue in the **Call REST** action where using a file document as the request body resulted in an HTTP request without a `Content-Length` header. (Tickets 237320, 237839, 239208)
- We fixed an issue when using a private value for a Boolean constant, the build in the Mendix cloud gave an error that the value was incorrect. (Ticket 237857)
- We fixed an issue where the creation of an index fails when one of its attributes is not available on the offline database (Ticket 239701)
- We fixed an issue in external entities that have an unlimited string as part of their key. Studio Pro supports this as long as you set a maximum length on the attribute. Upgrading an app to version 10.12.11 or above caused the runtime to not be able to start because it detected a change in the length of the database column. Now the app starts without changing the length of the database column. (Ticket 239892)
- We fixed an issue where Studio Pro crashed when working with the clipboard. (Ticket 240122)
- We moved the menu item for **OpenAPI Documentation** in the **View** menu to its correct alphabetical position.
- We fixed a class-loading issue when starting automatically from a configuration file.
- We fixed an issue in the workflow engine where it was impossible to continue a failed workflow that became incompatible, when event handlers were not set.
- In the logic editors, we fixed a case where recommendations could not be generated for associations without a child entity.
- We fixed an issue where closing the beta version of the mapping editor showed an error.
- We fixed the following issues affecting [tab attributes](https://docs.mendix.com/refguide/tab-container/#attribute):
- We fixed an issue where configuring the default tab attribute with a page parameter resulted in a deployment error. The selector of this attribute no longer allows selecting a page variable directly. Now, the attribute must be accessed via a data view.
- We fixed an issue where the default tab attribute was not being properly validated, and thus lead to incorrect behavior during deployment or at runtime. These scenarios are now correctly checked, and if applicable result in a consistency error.
- We fixed an issue where a number for the default tab attribute larger than the number of tabs resulted in an error when rendering the tab container.
* We fixed the double-click behavior of consistency errors for XPath expressions on NPEs.
- We fixed an issue where Studio Pro crashed when selecting an element in the App Explorer while closing the app in Studio Pro.
- We fixed an issue in view entities where CASE expressions resulted in an incorrect attribute type for numeric expressions in THEN and ELSE clauses.
- We fixed an issue where using Long literals in OQL resulted in an error.
- In the logic editors, we fixed a bug where we translated variable names which resulted in error messages.
- We fixed an issue where the folders and modules did not expand when a new document was created through the modernized App Explorer.
- We fixed an issue where an **Oops** pop-up window was shown while setting *None* for a text template parameter.
- We improved the provision of the internal id attribute for remote entities, to avoid failures when subsequently creating associated object(s) via the **Send external object** activity.
- In the logic editors, we made some more texts translatable.
- We fixed an issue where an incorrect homepage was briefly displayed before the one configured by a nanoflow action finished loading.
- We fixed the issue with the pull operation when setting up the PMP configuration.
* We fixed an issue where attempting to convert nanoflow or microflow in the System module resulted in an error. This option is now disabled for the System module.
- We fixed an issue where startup images were not exported for PWAs using the React client.
- We fixed an issue where certain JavaScript actions that were meant for both web and native platforms failed to bundle when using the React client.
- We fixed the React client bundling issues that occurred during the creation of the deployment package and deployment for Eclipse.
- In the new access rule editor, attributes and associations from the generalization entity are correctly included now.
- We removed the space from the caption of the buttons column while generating the contents of the Data Grid 2.
### Deprecations
- We have deprecated the `com.mendix.core.CoreComponent` class from the public API. This was an internal class that was not meant to be public.
- We deprecated `IDataType.checkTypeForValue` and `IDataType.getTypeOfValue` in the public API. There are no replacements for these methods.
- We deprecated `IMendixObjectMember.MemberState`. You can use `IMendixObjectMember.isChanged` instead.
- We deprecated the `enterRuntime` and `logClientData` methods that use `JSONObject`. We added alternative `enterRuntime` and `logClientData` methods where the JSON object is passed as a `String`, please use these methods instead and parse the JSON object yourself.
### Breaking Changes
We fixed an issue in the runtime where published OData and REST services accepted the credentials of Mendix web service users. The intended purpose of web service users is for them to be able to access [Published web services](https://docs.mendix.com/refguide/published-web-services/) only. Role-based access was still applied, but for web service users that had roles with access to OData and/or REST services, this allowed them to access these services, which they should not have access to. Apps that currently have web service users accessing published OData and/or REST services should delete these web service users and recreate them as regular users. In cases where this is not feasible, we have introduced a runtime setting `com.mendix.services.publish.AllowWebServiceUserBasicAuthenticationInODataAndREST` (default: *false*). Setting it to *true* reverts to the existing behavior.
This setting is relevant only for apps that:
1. Were first built in Studio Pro 10.2.0 or later, because this issue was introduced in Studio Pro 10.2.0,
2. Have users that are marked as web service user, and
3. Have clients accessing published OData and/or REST services using the credentials of one of these web service users,
4. Are unable to delete these web service users and recreate them as regular users.