Mendix Studio pro

10.18.0
Stable
December 18, 2024
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: December 18, 2024** ### New Features #### Version Control: Size Pre-Check of the MPR File We introduced a new step during a commit process that checks for a large MPR file. We want users to be informed about large MPR files as can it become problematic for git. #### Version Control and Storage Format With Studio Pro 10.18, we are releasing a public beta of [MPRv2 format](https://docs.mendix.com/refguide/version-control/#mpr-format), a new storage format for Mendix apps that ensures a good performance over time. Version Control systems, like Git, store changes in your files with each commit. An app modeled in Mendix is traditionally stored in a single *.mpr* file, which is essentially a database that contains data for all documents, such as microflows, workflows, pages. Git is not well-equipped to determine and store the differences in this case, which leads to rapid repository growth. This in turn can lead to longer download times when cloning your app. With MPRv2 the key difference is that all documents, such as microflows, will no longer be stored as part of the *.mpr* file but as separate files in the *mprcontents* directory. The *.mpr* file will function as an index file pointing to all the different files on disk. This means that when you change one document, for example, a page, that only a small file representing that page will change on disk. This allows Git to calculate an efficient delta, which results in a more appropriate repository growth compared to MPRv1. Upgrading to the new format is optional and can be done per branch. #### Security Overview (Beta) We are introducing a new beta feature that provides an overview of your app’s security. You can now get an overview of access rules across your application, making it easier to review and ensure the correct security setup for user roles in each module. Access this overview from the **App** menu by selecting **Show Security Overview**. Currently, this feature supports entity access rules, and we will extend support to page, microflow, and nanoflow access rules soon. For more information, see [Security Overview](https://docs.mendix.com/refguide/security-overview/). #### Other New Features - We introduced [UI Recommender](https://docs.mendix.com/refguide/ui-recommender/) to the page editor, which allows users to easily add new widgets to a page without having to lose context of what they are currently working on. - The React client is now generally available. For more information, see [Mendix React Client](https://docs.mendix.com/refguide/mendix-client/react/). For more guidance on upgrading widgets, see [Widget Conversion Limitations](https://docs.mendix.com/refguide/mendix-client/widget-conversion-limitations/). - We added [Maia Learn](https://docs.mendix.com/refguide/maia-learn/), a way for new developers to get quickly up to speed with Mendix core concepts. It is available through the toggle button in Maia Chat. - We added a welcome page to Studio Pro that opens on every new version installed. It contains links to the release notes, Mendix platform blog, links within Studio Pro to Maia Learn and Maia Chat. - We added the ability to view file changes and resolve conflicts directly from the **Changes** pane in Studio Pro. You can now open the file comparison tool to review modified files or navigate to the folder containing any changed file listed in the **Changes** pane. To resolve conflicts, simply choose to keep your local version or accept the incoming server version. This update streamlines the management of both project and disk files. For more information, see the [Status](https://docs.mendix.com/refguide/using-version-control-in-studio-pro/#status) section in *Using Version Control in Studio Pro*. - We added a new option: [Generate Bill of Materials](https://docs.mendix.com/refguide/app-menu/#generate-bill-of-materials) that is now available under **App** > **Tools**. - We added a new setting called [Editor Tabs Closing Policy](https://docs.mendix.com/refguide/preferences-dialog/#closing-policy) that allows to limit the amount of concurrent working area tabs. - We added the ability to export the translatable text in your app and re-import it using `mx.exe`. Use `mx.exe translate --help` for an overview of the command line options. For more information, see the [mx translate Command](https://docs.mendix.com/refguide/mx-command-line-tool/app/#translate) section in *App Commands*. - We added consistency checks for custom *index.html* files to inform developers in case they accidentally hard-code templated values. - Data Importer now allows Excel and CSV files to be used as a source for creation of Import Mapping, which further can be used to leverage all the benefits of Import Mapping. - We introduced Native Template 11 for native apps in 10.18 and above. This upgrade disables support JavaScriptCore (JSC) in favor of Hermes. For details on migrating and resolving breaking changes, see the [Native Template 11 release notes](https://docs.mendix.com/releasenotes/mobile/nt-11-rn/#jsc-hermes). ### Improvements - [Maia Domain Model Generator](https://docs.mendix.com/refguide/domain-model-generator/), a way to generate domain models using natural language, is now enabled by default while it was previously hidden behind a **New Features** setting. It is now also supported in existing domain models. It is still, however, in experimental phase. - We added various UI improvements to Consumed REST service for better user experience. - We added progress indicator while sending a request in Consumed REST service document. - We added progress indicator while validating JSON body in Consumed REST service document. - It is now possible to rename, delete, and duplicate a request in the Consumed REST Service editor by clicking the button with three dots next to the request name. - We switched to Hermes as the default JavaScript engine for all native mobile applications. This change enhances performance, reduces memory usage, and speeds up start times for mobile apps, leading to a smoother user experience. - We added a logger which logs to a console in JSON format. - We added the `WebSocketEndpointConfiguration` interface to the Mendix Runtime API. An implementation of this interface can be passed to the [`Core.addWebSocketEndpoint`](https://apidocs.rnd.mendix.com/10/runtime/com/mendix/core/Core.html#addWebSocketEndpoint(java.lang.String,javax.websocket.Endpoint)) method to configure subprotocols and modify the handshake for web sockets. Modifying the handshake can be used to update response headers. - We implemented a new method, [`getDatabaseSettingAsString()`](https://apidocs.rnd.mendix.com/10/runtime/com/mendix/core/conf/Configuration.html#getDatabaseSettingAsString()) in the Mendix Runtime API to access database settings. - We now use the `ApplicationRootUrl` setting to determine if application cookies should be marked as `Secure`. Previously, we were only checking `X-Forwarded-Proto` and `X-Forwarded-Scheme` headers. - We improved the naming of *mine/theirs* in the **Changes** pane when merging or rebasing to more clearly describe whether changes are coming in from the server or have been made locally. For more information, see [Combining Changes and Conflict Resolution](https://docs.mendix.com/refguide/merge-algorithm/). - We improved accessibility for the **Close** button in delete confirmation dialog boxes. It can now be reached with tab, and has a better `aria-label`. - We increased the coverage of localization of the Studio Pro user interface by 25%. - We improved the quality of Japanese translations based on feedback from users. - Data Importer now supports new-line characters in Excel headers while importing. ### Fixes - We fixed a [known issue](https://docs.mendix.com/releasenotes/studio-pro/10.0/#css-ki) where Studio Pro theme files (such as *theme-cache/theme.compiled.css.map*) showed up as changed. This situation was caused by incorrect generation of line endings in automatically generated content. For existing apps that have mixed line endings possibly on different branches, the file can show up as changed again. To correct the issue for your app on the opened branch, commit the change. - In the logic editors, we fixed an issue when extracting a submicroflow with annotations that were not in the same looped activity as other objects. (Ticket 207767) - We fixed an issue in the logic editors where using the middle mouse button to pan the canvas did not work when the mouse was over connection points, error handler icons, resize handles, and Bézier curve handles. (Ticket 224031) - In the logic editors, extracting a microflow did not create parameters for variables that were created inside the new microflow. (Ticket 226919) - In the logic editors, we fixed the displayed output variable type for retrieve actions when following a self-association. (Ticket 227953) - In the logic editors, we fixed the generated return values when extracting submicroflows. (Ticket 229998) - We fixed the issue where localization errors were reported while running command line tools. (Ticket 230517) - We fixed an issue where apps could not be opened after a merge conflict was resolved. (Ticket 233793) - We fixed an issue where cyclic snippet calls caused a crash in Studio Pro when Strict Mode was enabled. - We fixed an issue where pasting widgets from one document template to another threw an error. - We fixed an issue in the error check that led to a crash when a document was changed again after an earlier change introduced errors because selected elements could not be found. - We fixed Studio Pro freezes that might happen when editing pages. - In the **Message Definitions** editor we now warn the user to refresh when the previously configured structure no longer matched the selected entity. - We fixed the sync issue between the Consumed REST service editor and the domain model, now Consumed REST service document does not need to be reopened to reflect changes in the domain model. - Now the correct request is visible in the Consumed REST Service editor when you open the editor starting from a request error or warning, or when you press **Show** from a **Send REST Request** microflow activity. - We fixed an issue in consumed OData services where using large metadata files caused an exception when finding associations (called *partners* in OData). - In the logic editors, we no longer open property dialogs when ctrl+Enter, alt+Enter, or shift+Enter are pressed, only Enter without additional keys. - We fixed several issues in the Offline Profile validations where an **Oops** pop-up window appeared. - We fixed an issue in the new entity access rules editor on high DPI screens, where icons sometimes appeared blurry and content peeked through borders during scrolling. - We fixed an issue where user tasks from excluded workflows did not get properly converted when updating a Mendix app to 10.12. ### Deprecations - We no longer support Gradle versions below 8.5. - We deprecated a few legacy setter methods from the public API: `ISession.setTimeZone` and `ISession.setUserAgent`. - We deprecated a few classes and interfaces in our internal M2EE API library: `com.mendix.m2ee.api.AdminAction`, `com.mendix.m2ee.api.AdminException`, `com.mendix.m2ee.api.IAppContainer`, `com.mendix.m2ee.api.IMxRuntime`. We also deprecated the methods `com.mendix.m2ee.api.IMxRuntimeRequest.getContext` and `com.mendix.core.conf.Configuration.checkConfig`. - We deprecated `com.mendix.core.actionmanagement.CoreAction` class. You can use `com.mendix.systemwideinterfaces.core.UserAction` instead. - We deprecated `IContext context()` method in `com.mendix.systemwideinterfaces.core.UserAction`. You can use `IContext getContext()` instead. - We deprecated the method `IMendixObjectMember getMember(IContext context, String memberName)` in IMendixObject interface. You can use `IMendixObjectMember getMember(String memberName)` instead. - We deprecated `String getUnhashedValue()` method of `MendixHashString`. The method was meant for internal use only. - We deprecated `getClonedContext` methods in `CoreActionHandler` and `InternalCoreAction`. - We deprecated `Boolean isValid(IContext context, String identifier)` method in `com.mendix.core.objectmanagement.member.MendixEnum` and provide an alternative version that does not require `IContext` parameter.