Mendix Studio pro

March 28, 2023
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: March 28th, 2023** ### New Features #### Custom Icon Support We added the ability to use custom icon fonts in your apps. This gives you the freedom to choose between using your own icons and Mendix's own glyph icons Custom icon support allows you to do the following:. * Create icon collections * Import icons from icon font files (*.ttf*) * Add tags to invidual icons * Choose a name for each icon * Bulk import icon tags and names from a CSV file * Configure icon collections to use a specific class name and a dedicated prefix for the icons * Use the icons in widgets, page navigation, pages, building blocks, page templates, snippets, and custom widgets For more information, see [Icon Collection]( in the *Studio Pro Guide*. #### Other New Features * We added a new feature that allows you to convert a microflow into a nanoflow and vice versa. You can easily convert between the two by right-clicking in the microflow/nanoflow editor. For more information, see the [Converting a Microflow to a Nanoflow]( section in *Microflows* and the [Converting a Nanoflow to a Microflow]( section in *Nanoflows*. This is based on an idea from Luke Sheldon submitted to the [Mendix Idea Forum]( Thank you, Luke! * We added a way for you to create a new app from a spreadsheet and import your own data. You can choose the **App from spreadsheet** template when creating a new app. This functionality generates entities, associations, attributes, and data for the app. For more information, see [Starting with App from a Spreadsheet]( * We introduced a new synchronization mode: **Never**. When you set synchronization to Never for an entity, its objects will not be synchronized between the Mendix Runtime and the offline database during a **Full synchronization**. The objects can still be synchronized using **Sync-to-device** or **Selective synchronization**, but you will be in control of what is synchronized and when. For more information, see the [Customizable Synchronization]( section of *Offline Synchronization*. * We added a new [Range]( operation action to the **List operation** activity. * We added a new setting in **Preferences** > **Advanced** that allows you to [Enable software rendering mode]( This can help to to work around hardware and driver issues and to improve performance when such issues exist. ### Improvements #### Performance Improvements * We reduced the CPU usage of Studio Pro that occurs when the application is idle. #### React Native Upgrade We updated our core libraries React Native to v0.70.7 and React to v18.2.0. This update brings many improvements to stability, performance, and security for all Mendix native mobile apps. Due to some breaking changes in React Native, mobile extensions such as JavaScript actions and widgets might need to be updated. Please test any third-party extensions before updating your app. #### Inline Snippet The context menu option to inline a snippet call has been vastly improved. Leveraging the full power of multiple snippet parameters, **Inline snippet** now replaces all references to a snippet parameter with the corresponding mapping in the [Snippet settings]( of the snippet call when inserting the content of the snippet. For more information, see the [Inline Snippet]( section of *Snippet Call*. There are a few cases where a widget cannot be correctly represented when inlining a snippet, and these now trigger a warning pop-up window that lists the affected widgets and asks you if you want to continue. This makes it significantly easier to inline a complex snippet without introducing errors. #### Selecting Attributes We made the following improvements for selecting attributes: * In conditional settings, it is now possible to select an attribute from any surrounding data widget when configuring conditional visibility or editability. This includes snippets with multiple parameters. * For the parameters of text templates, it is now possible to select an attribute path from any surrounding data widget or snippet parameter. * In association widgets, the reference selector and input reference set selector can now select an attribute from any surrounding data widget. This also allows them to be used in snippets with multiple parameters. #### Business Events We made a major update to your business events modelling experience: * Business event service creators and users can now configure [multiple event publishers and subscribers]( This means you get the full power of asynchronous communication across your enterprise landscape. * You can now create [business events]( within the service document itself. Based on the definition of the events and the implementation, entities are created for you automatically. * Published business event service and consumed business event service options have been combined into [one menu item]( to help you get going quickly. #### Other Improvements * We updated the [Make It Native]( app to make it compatible with this Studio Pro version. This means it is no longer compatible with older Studio Pro versions. We recommend upgrading your app to 9.24 or [building a custom developer app]( * We added support for the following database versions: * MariaDB 10.11 * Microsoft SQL Server 2022 * Oracle 21c * PostgreSQL 15 * Studio Pro now builds apps using Gradle. You can switch back to Ant if you disable building using Gradle in [Preferences]( * We added a button to the App Selector dialog box that opens the **Open App** help page. * We now provide more accurate drag-and-drop feedback on domain model and navigation editors, and we fixed the incorrect feedback for a few controls. * We updated the data grid and tree controls to allow for scrolling the containing dialog box using the mouse wheel when the cursor is over the controls and the controls do not have a vertical scroll-bar. * We improved the resizing behavior of the **Entity Access Rules** dialog box so that the **Documentation** field no longer takes a lot of space. Instead, the grid with **Member Rights** settings adjusts itself to the available space. * The Mendix Client now now retrieves non-persistable objects over a direct association without sending a request as long as they have no virtual attributes. * We revised MxAssist Performance Bot best practice [MXP015]( for XPath ordering to avoid false positives. * We extended MxAssist Performance Bot best practice [MXP003]( for a non-indexed attribute used in sorting to include the Integer type. * We added a general note to the MxAssist Performance Bot recommendation pop-up messages. * Private Git is now always enabled, so there is no need to enable it in the Studio Pro **Preferences**. * It is no longer possible to create new apps with SVN for the version control. You can still download existing SVN-controlled apps. * We added support to [ML Kit]( for importing an ONNX file with all static input shapes but some dynamic output shapes. * We aligned the status codes and error messages that a published OData service returns for a number of cases where the resource is either not existing or not accessible. In these cases, we now return the status 404 "resource not found." * It is now possible to use enum attributes in consumed OData entities. * A solution upgrade is now possible on all branches. * We made **Count** the default aggregate list function. * A workflow user task that has failed due to no users targeted by a microflow can now be retried after users are assigned manually. * We updated the Dojo library to version 1.17.3. ### Fixes * We fixed a [known issue]( with opening or creating layout documents where an "Oops" pop-up window was produced. You can now safely enable the [New Properties pane preview]( setting in **Preferences** > **New Features**. * We fixed a [known issue]( where generating task pages for [user tasks]( that had outcomes with captions defined on them resulted in outcome buttons with empty captions on the generated page. * We fixed a [known issue]( with the M2EE Admin Console start-up when running from Eclipse. * We fixed an issue where a data grid column with an attribute from a reference set showed empty entries for inaccessible objects in the comma-separated cell output in the client. (Ticket 141001) * We fixed an issue where [Data Grid 2]( became slower with pagination. (Ticket 164178) * We fixed an issue where icons on the document changer and on document tabs were missing. The icons are now displayed again. (Ticket 171390) * We fixed an issue where fields in the **App Settings** dialog box were not visible when the dialog box opened. (Ticket 172556) * We fixed a bug that occurred when opening the properties of the **Show message** activity in the microflow editor. (Ticket 174522) * Whe fixed an issue where calling a microflow or nanoflow after selecting a file in the [file manager]( cleared the file. (Ticket 176285) * We fixed an issue that occurred when the **Export to image** option was not enabled for the domain model, workflow, microflow, nanoflow, rule, and document template editors. (Ticket 177392) * We fixed an issue with consumed OData services where retrieving the associated entities that had equivalent key fields and values led to unpredictable query results. (Ticket 177537) * We fixed an issue where the sorting of a microflow or association data source in a pluggable widget (for example, Data Grid 2) resulted in unnecessary network requests. (Ticket 177792) * We fixed an issue in published web services where a client addressing a service with a slash logged an error. Such a URL is always incorrect, so this now results in a client error and a debug log message. (Ticket 178489) * We fixed an error that was shown when modifying excluded document templates. (Ticket 178508) * We fixed an issue where templating was not being applied to JavaScript files in the **theme** folder, making it difficult to set up a content security policy (CSP) properly. (Ticket 178688) * We fixed a bug in MxAssist Performance Bot where the missing index best practices [MXP003]( and [MXP007]( did not successfully complete the inspection, causing recommendations to be hidden. * We fixed a bug where MxAssist Performance Bot recommendations were not marked as read when they were opened from inside a document. * We fixed an issue where importing a module from Studio Pro [9.20]( or below did not correctly convert a snippet entity to a snippet parameter if the entity was defined in a domain model outside of the imported module. * We fixed an issue where importing a module from Studio Pro [9.17]( or below did not correctly convert a page parameter if its entity was defined in a domain model outside of the imported module. * We fixed an issue where after double-clicking a module in **App Explorer** and then quickly doing a right-click in another part of the UI that showed a context menu, the wrong context menu was displayed. * We fixed the visual presentation of focus on toolbar items so that it looks consistent with other UI controls in Studio Pro. * We fixed an issue where the icons of excluded documents were not semi-transparent in the **Go To** dialog box. * We fixed an issue where elements on a properties dialog box were not positioned correctly when the dialog box was maximized. * We fixed a bug in the grid control where copy-pasting a row in the grid only yielded partial results (meaning, it skipped values from drop-down columns). * We fixed an issue where information dialog boxes stated that the selected document was missing or ambiguous but did not mention the type and name of the object. * We fixed an issue where pressing Delete deleted a row in a data grid when a cell was in edit mode. * We fixed an error in the text editor that occurred after adding a character like `&` and then immediately selecting a value to autocomplete. * We fixed an erratic instance of text selection behavior that occurred in a disabled text box. * We fixed an error that appeared after a validation message in the **Properties** dialog box of a workflow activity. * We fixed an error that appeared after clicking **OK** in the **JSON structure** dialog box. * We fixed an error that appeared when you changed the access rules of an entity. * We fixed an issue where double-clicking the scroll bar in the **Branch Lines** grid led to opening a branch. * We replaced a third-party dependency to prevent a potential security vulnerability. * We fixed an error that was shown when a settings file was copied from another computer or a user. * We fixed an issue in the logging of calls to external services, which displayed the timeout setting as the remote port number. The logs now explicitly state the timeout value in seconds. * We fixed an issue where an error in the expression editor was not shown upon opening a dialog box. * We fixed the inconsistent behavior of selecting rows while holding Shift in the grid control. * We fixed an issue that occurred when adding a string attribute in an entity in the domain model where it was possible to add a default text longer than the maximum text supported. ### Deprecations In the [Runtime API](, we did the following: * We deprecated `Core.isSubClassOf` method variants. You can instead use the `IMendixObject.isInstanceOf(IMetaObject)`, `IMendixObject.isInstanceOf(String)`, `IMetaObject.isSubClassOf(IMetaObject)`, or `IMetaObject.isSubClassOf(String)` methods to achieve the same result. * We deprecated the setter methods that were for internal use. We have provided constructors as an alternative for these methods wherever applicable. * We deprecated the `com.mendix.core.Core.deleteAsync` methods. You can use the synchronous version or run the synchronous version in a task queue if needed. In addition, we introduced a delete method with events and with the `useDeleteBehavior` parameter as a replacement for calling `deleteAsync` with `useDeleteBehavior` set to false. * We deprecated the async methods from `com.mendix.core.Core(changeAsync, commitAsync, instantiateAsync, rollbackAsync)`. These operations directly influence transactional behavior, for which the behavior is not stable if done asynchronously. If you do need to interact with the transaction, do so synchronously using the change, commit, instantiate, and rollback methods in the existing context. ### Breaking Changes * We removed support for the `FileID` parameter in the File API.