10.18

Last modified: December 18, 2024

10.18.0

Release date: December 18, 2024

Go to Marketplace

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, 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.

Other New Features

  • We introduced 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. For more guidance on upgrading widgets, see Widget Conversion Limitations.
  • We added 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 section in Using Version Control in Studio Pro.
  • We added a new option: Generate Bill of Materials that is now available under App > Tools.
  • We added a new setting called Editor Tabs 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 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.

Improvements

  • Maia 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 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() 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.
  • 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 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.