8.0

Last update: Download PDF Edit

8.0.0 Beta 1

Release date: May 2nd, 2019

Download

New Features

Native Mobile

Mendix now enables you to build true native mobile apps as easily as you build other apps with Mendix. These native apps offer fast performance, smooth animations, natural interaction patterns (like swipe gestures), and improved access to all native device capabilities. Mendix native mobile apps are offline-first, which means they work regardless of their internet connection. For more information, see Offline First.

Native mobile is a new navigation profile type added next to Hybrid mobile, which is still supported and available.

The native theme and styling is part of the Mendix Atlas UI framework. This means your app will look great out of the box, while you will still fully control your app’s styling. Note that native styling is based on JavaScript instead of SASS/CSS. For more information on styling, see Native Styling.

To start creating a native mobile application, we recommend creating a new project based on the Native Mobile Quickstart app. This starter app contains everything you need to quickly get started: a preconfigured native navigation profile, a large variety of mobile-specific widgets, and nanoflow activities that let you leverage your device’s capabilities.

The Mendix Make It Native app is currently in beta phase as part of the Mendix 8.0.0 Beta. The app is available from Google Play and Apple TestFlight. Throughout the beta phase, we will continue to improve and extend the functionality. However, you may encounter some limitations:

  • Mendix native mobile apps can only be viewed using the Make It Native app. Throughout the beta program, we will add support to create standalone apps (for example, Android APK or iOS IPA) that can be distributed using your preferred distribution channel (for example, Google Play or the Apple App Store).
  • Running and testing native mobile apps is currently only supported locally (meaning, from Mendix Studio Pro). Currently, app projects with a Native phone profile cannot be deployed to the cloud. This will be fixed with the next beta release.

JavaScript Actions

Extensibility is an important capability of Mendix, and JavaScript actions is a powerful new feature for Mendix 8. Studio Pro 8 now supports extending the platform via JavaScript actions that allow you to write custom activities for nanoflows in JavaScript. This can be used to leverage device or browser APIs, extend nanoflows with custom logic, perform complex calculations, and explore many other possibilities.

In addition to being awesome, JavaScript actions are already quite familiar to Mendix developers, because they are similar to Java actions. You will find the most-loved features of Java actions available: different parameter types, exposing as a nanoflow activity in the Studio Pro Toolbox, and packaging and distributing through the (public or private) Mendix App Store.

What really makes JavaScript actions stand out is that you can edit them without leaving Studio Pro. There is a powerful editor integrated right inside the Code tab of the JavaScript action document. This is based on the Monaco Editor, which is the editor that powers the most popular IDE, Visual Studio Code. This editor delivers a great experience, as it supports smart context-aware auto-completion, embedded documentation on web and Mendix APIs, correct indenting, and code-friendly shortcuts.

Pluggable Widgets

This version introduces a new way of building widgets called pluggable widgets. This allows you to create widgets with React and use the simpler yet more powerful Mendix APIs. The main benefit of the new pluggable widget API is that it is truly reactive.

To support Mendix developers even more, we released a Yeoman generator that can be used to easily generate a widget project. This will get you quickly started via a fast and easy developer flow.

You can use this generator to create widgets for web and hybrid apps as well as native mobile apps based on JavaScript or TypeScript. The generator includes various options like creating an empty project, using a template, and generating test cases.

Moreover, pluggable widgets are able to use new and more powerful property types, such as the following:

  • A textTemplate property type allows you to select text templates. The widget will receive a property where the arguments in the text template are already expanded.
  • An action property type allows you to select an action like call-microflow or open-page (in a way similar to the on-click of an action button). The widget will receive a callback to execute the configured action.
  • The icon property type allows you to configure an image or a glyphicon. We added a helper component to make rendering this property easy.
  • The expression property allows you to configure an expression. The widget will get the result of that expression as an property.
  • The systemProperty with the key Label indicates that the widget can have a label similar to that of the text box. No additional code is needed in the widget for client-side support.

We also gave you more control of property dialog boxes for pluggable and custom widgets in Mendix Studio Pro. We added the new propertyGroup element, which groups nested properties into a tab (for a top-level propertyGroup) or a group box (for a nested one). More than two levels of nesting is not supported.

Another powerful capability is the option to use external dependencies and install them using npm.

If you want to start on your own pluggable widget after reading this, see How to Build a Text Box Pluggable Widget: Part 1 to get you started.

Design Properties

The design properties you know and love from Mendix Studio are now also available in Mendix Studio Pro. Design properties are defined in a customizable settings.json file in your theme folder. If you are using a class name in multiple places, and afterwards decide that it makes sense to have a design property for it, you can extend the settings file and use the Project > Tools > Convert classes to design properties menu option to convert from class names to design properties. When upgrading to Mendix Studio Pro this conversion is already done for you. We also added the design properties in the Find Advanced dialog box so that you can easily find them.

Structure Mode & Design Mode

The Edit mode in the page editor has been renamed to the Structure mode, and the View mode has been upgraded to the Design mode! The Design mode is not limited to just previewing your app, as you can now edit the page without having to switch modes. Combined with significant improvements in resource management, we do not know why you would ever want to go back!

Improvements

  • When you search for unused items in Studio Pro, unused message definitions are now also reported.
  • When adding a custom setting configuration, the Name and Value fields are now required.
  • You will now be warned if you have no attribute selected while entering entity indexes.
  • We fixed a crash that you might have noticed when selecting an application from the Recent Apps screen.
  • It turned out that the fast re-run option (that is, when you re-run an app project already running locally) is too fast! Some people did not notice their browser was reloaded with new changes before they opened it, so we added an explicit notification message in the browser.
  • We improved how we generate the contents of list views (via the Automatically fill the contents option). Now, inside a read-only list view, we generate text widgets instead of input widgets.
  • We now allow you to pass a Boolean expression to a string function in microflow expressions.
  • When using the Batch Translate and Batch Replace forms, we now warn you when you have nothing selected.
  • We improved the performance of Mendix Studio Pro when you are adding or deleting documents. The algorithm ensuring consistency now performs fewer searches through the app project.
  • We changed the deprecated content type for /api-doc/fonts/OpenSans-Light-webfont.woff to font/woff.

Input Widgets

To improve the quality of the client, we rewrote the text box, text area, check box, drop-down, radio button, and date picker input widgets. For these widgets, we implemented the following improvements:

  • Widgets are shown as read-only if you try to edit an object you have no right to access due to an XPath constraint.
  • Previously, when a server side validation was set for an attribute for which the widget is conditionally hidden, the validation was not shown to a user. We now show you a validation error in a pop-up window.
  • When you enter an invalid value in the conditionally hidden widget, this value is cleared. When the widget is shown, it will contain the current valid value.
Text Box

We fixed an issue that occurred when you changed a value resulting in a validation error, you reverted the value to the original one, and the validation error was not removed.

The On change event is now triggered if you change the value of a numeric text box and press Enter. This behavior is consistent with the character and date fields.

We also made a number of improvements on the input mask of the text box:

  • It now properly supports pasting a value in the input mask.
  • Non-ASCII characters are supported.
  • Mask characters can be escaped.
  • The database value is now properly displayed according to the input mask in all the browsers supported by the client.
  • There is a consistency check for the correspondence between the maximum length of a field and the length of the entered input mask.
Text Area

We introduced the following improvements for the text area widget:

  • The counter is now always correct, even when unfocused and when special Alt sequences are typed.
  • The counter is displayed even when the read-only style is in control.
  • Auto-grow has a smoother rendering, with no more delay between the input and the actual growth of the widget.
  • A disabled text area with auto-grow and read-only style controls now actually grows.
Check Box

We introduced the following improvements for the check box widget:

  • When the form orientation is vertical, the error message is now correctly put after the input instead of after the label and before the input.
  • The check-box CSS class was set on the wrong div if the read-only style was set to control and the form orientation was horizontal. It was missing if the form orientation was vertical. We have fixed this.

The following improvement was introduced for the drop-down and radio button widgets: Deleted enumeration options that are still in the database are now shown correctly (but cannot be selected anymore).

Date Picker

We introduced the following improvements for the date picker widget:

  • The timestamp zero is now displayed properly.
  • The native date picker now dispatches changes on every change in the native calendar/picker.
  • Opening the calendar no longer triggers the on-change action/validation immediately.
  • Quoted characters in custom date formats are now handled correctly (for example, in the default placeholder).
  • Opening the calendar in right-to-left mode no longer messes up the page layout.
  • Opening the calendar for an empty date now correctly highlights the current date as selected date.
  • When formatting minutes, the leading zero is no longer mandatory.

Nanoflows Power-Up

A nanoflow is a powerful tool to make your offline apps really smart and also easy to build. With this major release, we are making them even better!

The following improvements close the gap between what you can model in nanoflows versus microflows:

  • The Retrieve objects activity now supports XPath constraints like microflows do. You can use familiar language to limit the data you retrieve from offline databases (or online databases, when the nanoflow is run online). For now, you cannot follow associations in these constraints.
  • The Aggregate list activity makes all your lists count! Along with List operation, this brings nanoflows up to par with microflows when it comes to working with lists.
  • We now support the Show message activity for nanoflows as well.
  • We now allow nanoflows to be used as data sources for data views. This should reduce the need to pass parameters to pages and especially help with the home pages of offline apps.
  • You can now use the simple but handy toString function in nanoflow expressions as well as in conditional visibility expressions.

Published OData Services

We made the following significant improvements to published OData services:

  • You will now see the responses to OData calls in trace logging.
  • You can now specify the version of the OData service. This is shown in /odata-doc/.
  • You can now write documentation for each resource
  • You can now choose between different authentication methods, including custom authentication using a microflow.
  • Clients can now order by the properties of associated objects.
  • Clients can now filter results based on associated data (when associations are exposed as links).
  • Clients can now filter based on many-associations using any.

Fixes

  • We fixed an issue where parsing XML with elements differing in case sensitivity failed.
  • We fixed an issue where parsing an empty date-time resulted in a default date instead of empty. (Ticket 79828)
  • We fixed an issue where offline app synchronization failed when synchronized file entities had security constraints. (Ticket 76082)
  • We fixed a bug where a data grid tooltip was displayed with missing data. (Ticket 78301)
  • The document exporter will now use country-specific currency formatting if such a language is selected. (Ticket 80402)
  • When an end-user is accessing a page URL without sufficient privileges, the login page will now show this message: “You don’t have enough permissions to access this page. You may try to log in as a different user.” (Ticket 46929)
  • When an end-user is accessing a page URL without sufficient privileges, they might want an easy way to go back to the home page. If your theme does not already contain a Go home button, you must now add a button with the goHomeButton ID in your login page in your theme. This button will only be shown when the end-user is trying to access a page URL they do not have permission to access. (Tickets 46929, 68401)
  • We fixed a bug in the Extract sub-microflow functionality for loops with objects inside. (Ticket 77673)
  • You will not encounter errors anymore when debugging an application from Eclipse with the default runtime port. (Tickets 63971, 64886, 68651)
  • We fixed an issue where you could not configure a Java action call action with many parameters. (Ticket 55350)
  • A disconnected debugger session will no longer cause crashes. (Ticket 76990)
  • The Go to microflow option now always shows up at the top of your context menu, where it belongs.
  • Several issues triggered by moving or adding page widgets were addressed.
  • We (finally) consolidated the default values for static and dynamic images. When you add an image to a page, it will now always have the same default size, regardless of its type.
  • We fixed an out-of-memory issue on cluster slaves caused by persistent session objects. (Ticket 80910)
  • We improved and fixed the documentation of the Core.commit and Core.commitWithoutEvents methods. (Ticket 80711)
  • We removed the deprecated annotation of the Core.getActiveSession(..) and Core.getActiveSessions Java methods. These methods now return the actual active sessions.
  • We fixed a situation where data set access was out of date without showing an error. (Ticket 80381)
  • We removed the Get Started page from the interface, because it is no longer actively used and under certain circumstances caused a crash. (Ticket 81645)
  • We fixed an issue where Studio Pro crashed when previewing some images that were very narrow. (Ticket 80161)
  • We fixed an issue in consumed web services where the header for SOAP 1.2 was text/xml instead of application/soap+xml. (Tickets 77527, 77867, 80167)
  • We fixed an issue in published REST services where using a custom microflow for authentication resulted in an empty request body in the operation microflow. (Tickets 80147, 81114)
  • We fixed an issue where after enabling collaborative development with Studio in the Developer Portal for an existing app project, Studio Pro suggested doing this again. (Ticket 81540)
  • We fixed the issue where debugging through the Studio Pro Console log was not possible while running an app project from Eclipse, because the Console log would only show an empty window. (Ticket 81204)

Breaking Changes

  • We removed support for running Studio Pro on 32-bit systems. Studio Pro now runs only on 64-bit systems.
  • We removed support for Windows Phone and iOS versions 9–11.
  • We removed support for the deprecated old implementation of web service calls.
  • We removed the deprecated setting WebServiceClientCertificates. Use ClientCertificateUsages instead.
  • We removed the deprecated setting com.mendix.storage.s3.PerformDeleteFromStorage. Use com.mendix.storage.PerformDeleteFromStorage instead.
  • We removed the deprecated Java methods Core.integration().executeHttpRequest(), Core.importStream(), and Core.exportStream(). Use Core.http().executeHttpRequest(), Core.integration().importStream(), and Core.integration().exportStream() instead.
  • We removed the deprecated Java methods Core.addListener, MendixHashString.setInitialHash, IContext.addFeedback, IContext.getFeedbackList, and Configuration.getConstantValue(Object component, String key).
  • We removed support for IBM swift storage.
  • We removed the Client APIs marked as to-be-removed in Mendix 8. Check the currently supported list in Mendix 8 Client API Documentation.
  • We removed support for the deprecated report chart widget.
  • We removed support for the currency and float data types.
  • We removed the deprecated Java enumeration value ObjectState.COMMITTING.
  • Session removal is now logged at the DEBUG level, not the INFO level.
  • When a custom widget is used to change the markup of an input widget that has been rewritten, the applied changes will be lost when the input widget is completely re-rendered (which might happen, for example, when it is conditionally hidden and shown). Examples of such custom widgets are the Set attribute and EnumClass widgets.
  • Apps made in Mendix Studio Pro, version 8.0 and above, cannot be deployed to Mendix Cloud Version 3.

Upgrades

We upgraded the following runtime dependencies:

  • axiom-api, axiom-dom, and axiom-impl to 1.2.22
  • azure-storage from 8.1.0 to 8.2.0
  • ttpcore to 4.4.11
  • xmlbeans from 2.6.0_2 to 3.0.2_1

Deprecations

  • We deprecated the CoreAction.setSystemAction Java method.

Known Issues

  • When you create a new project based on a blank project template, the Design mode does not work, it keeps showing a loading indicator. (Ticket 82615)
  • In some cases, while doing an error check, a progress bar starts loading and does not stop. This is a user interface problem, the error check itself is completed properly. (Ticket 69295)
  • Because the currency and float data types are no longer supported, there is refactoring available to fix all attributes of those types and change them to decimal. However, refactoring has not yet been done for other parts of Studio Pro, such as microflows and Java actions. This means manual work will be required when upgrading app projects that still use those data types. In upcoming 8.0.0 Beta releases, we will offer more automated help with this transition.