Mendix Studio pro

10.19.0
Stable
January 28, 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: January 28, 2025** ### New Features #### Online Synchronization Mode (Beta) We introduced a new feature for offline apps, [Online Synchronization Mode (Beta)](refguide/mobile/building-efficient-mobile-apps/offlinefirst-data/online-sync-mode/), that allows app developers to define specific entities as **online available**. Defining an entity as **online available** means that the offline app will execute queries on these entities on the Mendix Runtime Server instead of the offline database. Of course, this is only possible when the app has an internet connection. Employing this feature reduces the need to have to synchronize more data then strictly necessary for offline apps as certain parts can become only available when having a connection. These entities can be configured as online available by configuring the synchronization mode in the offline navigation profiles. A new option has been introduced (**Online**) to be selected per entity that you want to have this functionality for. There are a couple of limitations on mixing online and offline entities in an offline app: * Offline entities can associate online entities, but online entities cannot associate offline entities * XPath constraints on offline entities cannot include associations to online entities (and note that XPath constraints on online entities that include associations from offline entities in the constraint, will be fully executed on the Mendix Runtime Server and not take the offline database into account!). * Online and offline entities can be defined in the same inheritance hierarchy, however list queries on generalizations are not allowed (as that may result in mixed online and offline entity instances). This feature is currently in Beta. It has to be explicitly enabled via the **Edit** menu > **Preferences** > **New features** tab > **Offline** section. #### View Entities (Beta) We added **View Entities** to the domain model editor. A view entity represents the result set of a named OQL query and can be used similarly to a persistable entity. This concept is similar to the function of views in general database technology. Whenever a view entity is retrieved via a page or a microflow, the corresponding OQL query executes to fetch the relevant data, meaning the results are calculated dynamically and are not stored in a table. View entities can also reference other view entities, allowing for more complex structures and better data organization. The **View Entity Edit** dialog box helps you write correct OQL queries by validating your query as you write, and by displaying a preview table that allows you to preview the resulting shape of your view entity using live data. For more information, see [View Entities](https://docs.mendix.com/refguide/view-entities/). #### Other New Features * We introduced OQL version 2, which contains changes in the OQL engine. For the list of changes, see [OQL version 2 features](https://docs.mendix.com/refguide/oql-v2). By default, OQL v2 is disabled. It can be enabled by setting the [OQL version 2](https://docs.mendix.com/refguide/app-settings/#oql-version-2) app setting to *Yes*. You will have to switch to OQL v2 in order to use [view entities](https://docs.mendix.com/refguide/view-entities/). * We added a feedback message for when users copy-paste interrupting boundary events. This message appears if an activity has reached its maximum allowed boundary events and the user attempts to add another one. * We introduced a new feature for the External Database Connector that uses an updated approach for connecting to databases during design time. This functionality enhances consistency between design time and runtime environments. Make sure to run the app locally with the latest External Database Connector before connecting to the database and running a query. ### Improvements * We added logging for an object or an attribute found in XML or JSON payload but not mapped in import mapping document. (Ticket 213729) * We added more support for SOAP arrays in **Import mapping** documents. Previously, only array objects with `item` as a name were supported. Now, any name is allowed for array objects. (Ticket 213729) * [Current object tokens](https://docs.mendix.com/refguide/xpath-keywords-and-system-variables/#object-related) in XPath constraints are now checked if the type of the current object token matches the expected type in the XPath constraint expression. (Ticket 223428) * We no longer prefix the resulting variable name of list operation actions with "new". This is based on an [upvoted idea from Maarten Bongers](https://community.mendix.com/link/space/microflows/ideas/3725) submitted to the Mendix Community. Thanks, Maarten! * It is now possible to select and wrap multiple widgets in a [container](https://docs.mendix.com/refguide/container/) by right-clicking the context menu. This is based on submitted ideas from various users: [Ceydanur Bakanoğlu](https://community.mendix.com/link/space/studio-pro/ideas/4179), [Bart Heijs](https://community.mendix.com/link/space/studio-pro/ideas/3626) and several others. Thank you all! * When double-clicking a consistency error of an access rule in the **Errors** pane of Studio Pro, we now open the access rule editor with the edit view for this access rule. This improvement is for the Beta release of the new access rule editor only. * In the new entity access rules editor, we now disable the toggles for entity rights and the member access when the entity lacks the corresponding capability. * We added support to the new access editor to set the default access level for new members. * We improved the XPath constraint syntax. A path ending with an entity can now be compared to an object variable without the need to specify `/id` on the variable. For example, `[Module.OrderLine_Order/Module.Order=$currentObject]` is now a valid constraint. * We added a progress pop-up window when renaming, including or excluding a document/module in the App Explorer. * We improved the **Move document** dialog box: * We removed the context menu from the dialog box. * We added an option to create a new module or folder in dialog box. * We removed the **Show** option. * We made Studio Pro to use the legacy Expression editor by default on Windows. The modernized version can be activated via the preferences. * We reduced the time it takes to cancel the process of building an app in Studio Pro. * Cancelling while running locally now happens faster during the *Build deployment structure* phase. * We improved the way Studio Pro opens dialog boxes, which should reduce the number of issues with Studio Pro freezing because blocking dialog boxes are not visible. Also, this fixes some issues with pop-ups and menus appearing in the wrong location. * When installing Studio Pro, the ARM version of the Java Development Kit is installed on computers with an ARM CPU. * We made the **Commit** dialog box faster and more responsive, which makes it smoother to use. * When using PostgreSQL or MariaDB/MySQL and a `DatabaseJdbcUrl` that starts with `jdbc:aws-wrapper:` we now use the [AWS Wrapper JDBC Driver](https://github.com/aws/aws-advanced-jdbc-wrapper) to connect to the database. * We have enhanced the Consumed REST Service editor on macOS by enabling copy and paste functionality via the context menu for the URL field. * We improved the **Integration** pane for macOS, which now features an improved design. It also now uses the v5 Catalog Search API and lists search results in order of relevancy, instead of alphabetically. * [Published OData services](https://docs.mendix.com/refguide/published-odata-services/) can now use an authentication microflow that takes a List of System.HttpHeader as a parameter. For newly created authentication microflows, this parameter will be added by default. * We changed the colors of the CRUD capability indicator when editing an external entity. This makes it more easy to read in dark mode. * We improved the behavior of Studio Pro when you delete a private constant value from a configuration. Studio Pro now no longer keeps the private value stored in the settings. * For mobile database library, we switched from `@mendix/react-native-sqlite-storage` to `@op-engineering/op-sqlite`. This improves the following: * Database execution are faster on Android devices * Removes the reliance of native encryption support for databases * We introduced a new method - IMendixObjectMember.isChanged. Returns `true` if the state of the member has changed. * We introduced a new method - IMendixObjectMember.isValueChanged. Returns `true` if the value of the member is different from the original value. * We introduced a new method - IMendixObject.hasChangedMemberValue. Returns `true` if the value of any member has changed from its original value. * We implemented the method `com.mendix.systemwideinterfaces.core.IMendixObjectMember.getOriginalValue` for database binary members (`com.mendix.core.objectmanagement.member.MendixBinary`). The rollback functionality will work for this member type from now on. * We added tracing information in `LogMessage` in the logging API. This can be used by log subscribers. * For the `console_json` log subscriber we now include tracing information, if `includeTracingInformation` is set to `true` when creating the log subscriber. Additionally `traceIdAttribute` and `spanIdAttribute` can be passed to configure what the attributes of the trace and span IDs should be in the output JSON log. * We changed the way that OpenTelemetry is [configured](https://docs.mendix.com/refguide/tracing-in-runtime/#min-configuration) for the tracing beta. The project should now run with the OpenTelemetry Java agent in order to configure and enable tracing. The runtime settings related to tracing were removed. * We made the usage of the [variable name](https://docs.mendix.com/refguide/java-actions/#variable-name) more consistent when adding Java or JavaScript action calls from the **Toolbox**, toolbar, App Explorer, or **Logic Recommender**. * We expanded the message that is logged when a runtime operation fails to be executed for security reasons with a short description of that runtime operation. * We updated the [widget conversions](https://docs.mendix.com/refguide/mendix-client/react/#widgets) to a combo box to include the read-only style of a drop-down, a reference selector and an input reference set selector. * We updated the External Database Connector, which now supports connecting to any database by using the Java dependency specified by the user for the respective database in the module settings. * We updated remaining button labels in the **Changes** pane to use **local** and **server** instead of **mine** and **theirs** for selecting the source when resolving file conflicts. ### Fixes * We fixed a Windows-specific issue where temporary files created for images upload were not cleaned up. (Ticket 181323) * We introduced a consistency error when the data source was an entity path with steps traversing from a local to an external entity. (Ticket 203958) * We fixed an issue in published OData services using custom authentication. The authentication microflow read the body of the request, making it unavailable to the microflow implementing the request. (Ticket 230628). * We fixed an issue where filtering over system associations **owner** and **changedBy** in a Data grid 2 column failed to render. (Tickets 231167, 233168) * We fixed an issue where list view item actions were not working correctly in the native client. (Tickets 232033, 237875, 238176) * We improved the memory usage of the Dojo client when running an app for an extended period of time by fixing several memory leaks that occurred when opening thousands of pages. (Ticket 232228) * We fixed an **Oops** pop-up window that appeared when opening the **View on Your device** dialog box while running an app with navigation profiles of the same kind. (Ticket 233598) * We fixed an issue with conversion where variables on a page were presented in a different order. This issue caused certain [widget event actions](https://docs.mendix.com/refguide/on-click-event/#actions) to change when upgrading to Studio Pro 10.4 or above. Specifically the arguments of [Call Microflow](https://docs.mendix.com/refguide/on-click-event/#microflow-arguments) and [Call Nanoflow](https://docs.mendix.com/refguide/on-click-event/#nanoflow) referring to a selection were changed if the widget was nested in another widget exposing the same entity. Note that this change does not correct previously converted apps which may now have an unintended argument configuration for Event Actions. (Ticket 233988) * We fixed an issue where the date format changed from 'dd-mm-yyyy' to 'dd-mm-y' when upgrading to Java 21. (Ticket 234598) * We fixed a bug in the text box and text area widgets where the caret sometimes jumped to the end of the text during typing when the **While user is entering data** [on change behavior](https://docs.mendix.com/refguide/text-area/#while-user-is-entering-data) option was used. This occurred when a neighboring widget used the same attribute in an expression, for example, for Conditional Visibility. (Ticket 234672) * We fixed an issue where using the S3 storage service resulted in a warning like *If you are using Java 9+, you will need to include javax.xml.bind:jaxb-api as a dependency.* (Ticket 235163, 235904) * We fixed an issue in the serialization of the request body of Call REST actions that use a custom request template and Consumed REST operations that use a fixed string body. It now uses UTF-8 encoding instead of ISO-8859-1. (Ticket 235194) * We fixed an issue where apps using the Dojo client broke due to browser extensions injecting scripts into the page. (Ticket 236663) * We fixed an error in XPath constraint processing for the web client, that caused a *System.ArgumentException: QueryConstraint not found* exception in Studio Pro. (Ticket 236719) * We fixed an issue in the task validation at the startup, which marked pending tasks with microflow arguments as *Incompatible*. (Tickets 237616, 238191) * We fixed the case where the Offline Database was not properly cleaned after sign out operation. (Ticket 237830) * We fixed the validation of pending tasks from a previous deployment, which failed in case there were optional microflow parameters. * We fixed an issue where deployment failed when an entity had one system association (**owner** or **changedBy**) already in the database and a second one was added later. * We fixed a bug in the error checking process that prevented errors for unknown model elements from being removed from the **Errors** pane. * We fixed an issue that was causing the pluggable widget previews to display incorrectly in **Structure mode**. * We fixed a bug where disposed tool windows were still considered active in the UI, causing Studio Pro to crash when the active editor changed. * We changed the Expression editor on macOS to not use smart-quotes anymore. * We fixed an error that appeared when selecting a Team Server app in the **Branch Line Manager**. * System images are no longer visible in the **Image Select** dialog box for image widgets in the page editor. * We fixed an issue with XPath collection parameters. An XPath collection parameter with a single element now has a proper type of conversion done like other parameters. This issue affected the workflow engine startup in cases where there was only a single workflow defined in the app. * We fixed an error resulting in an app getting stuck when the internet connection was unstable. * We now inform the user when sending a request in a Consumed REST service timed out instead of showing an error. * We fixed an issue when renaming a constant that had a private constant value. The constant value now also gets renamed, so you do not have to enter the value again. * We fixed an issue where the going-back behavior was not working correctly when users pressed back from nanoflow-based homepages. * We fixed an issue in Studio Pro when setting a private value for constant. When it had no value and you wanted to set the empty value, Studio Pro would not save the empty value. * We fixed an issue when rerunning an app locally from Studio Pro. Studio Pro did not recognize a change in a private constant value as significant enough to restart the app, leading to an instant update and the constant having the old value in the app. * We fixed an issue in the error details reported by published OData services. For errors containing more than one error detail, such as when a client inserts an object with multiple required attributes missing from the request body, the order in which these details were produced was inconsistent. This inconsistency meant that changing the runtime version could alter the order. * In the logic editors, we fixed an **Oops** pop-up window that sometimes occurred when deleting a microflow or nanoflow. * In the logic editors, we fixed extracting microflows to correctly create parameters when variables were used in loops. * In the logic editors, we fixed the displayed output variable name for the **Import with a mapping** action. * We fixed an issue where Java actions instantiated in the wrong class loader. This caused a problem where user Java dependencies could not be accessed in static blocks in Java actions. * We fixed an issue where if the application failed to reload, it did not restart. * We fixed an issue with the Edit/Delete buttons in the **Jar Dependency Exclusion** dialog box, these buttons caused an error if the list was empty. * We fixed an issue where using the offline web profile caused errors when sessions were being cleaned up. * We received reports of multiple tasks being scheduled for the same scheduled event. To handle this situation gracefully, we now clean up the superfluous tasks on startup. Additionally we introduced extra logging to help diagnosing these issues. * We fixed an issue where migrating a Java 21 application reset the Java version to 11. * We fixed error handling in **Sign out** actions for progressive web apps, which deleted local directories when they were empty. * We fixed the typing suggestions for JavaScript actions when autocompleting in the macOS version of Studio Pro. * We fixed an accessibility issue in tab container where if a tab was hidden, it still had an invisible tab stop. ### Deprecations * We deprecated CustomJavaAction. Please use UserAction instead. Studio Pro will now use UserAction as the base class of Java actions. * We deprecated the `Core.resolveTokens(..)` method. Please use `Core.evaluateExpression(..)` instead. * We deprecated `Core.executeVoid` method. Please use `Core.execute` instead. * We deprecated `IMendixObjectMember.getState()`. You can use `IMendixObjectMember.isChanged` instead. * We deprecated `ICore.isInDevelopment`. There is no replacement for this method. We recommend you to use constants instead. * We deprecated `ICore.buildException`. There is no replacement for this method. * We deprecated the `ActionHandler.setHandlerFactory(..)` method. It was meant for internal use only, there is no replacement. * We deprecated `UserBlockedException`. There is no replacement for this method.. * We deprecated the enum `com.mendix.m2ee.api.IMxRuntime.RuntimeState` in our internal M2EE API library. ### Breaking Changes * We reverted the fix for listening between widgets to continue after hiding the selecting widget, such as data grid 2, with conditional visibility. The issue will be addressed in a future release. (Ticket 206642)