8 New Themes Released!

PHP 8.0 is a major update of the PHP language.
It contains many new features and optimizations including named arguments, union types, attributes, constructor property promotion, match expression, nullsafe operator, JIT, and improvements in the type system, error handling, and consistency.

A hospital simulator is not something you might consider a good theme for a game but the guys from Bullfrog Productions were famous for creating innovative and fun titles from the craziest idea-and Theme Hospital no exception. This game is a piece of art and definitely the best 'hospital' simulation so check it out. Our diagnosis: fun! To give Windows 8 users a little bit more choice when personalising the OS, Microsoft is releasing new themes and wallpapers for you to download through the Windows Store. The Halo 4 theme In a.

Named arguments RFC

htmlspecialchars($string, ENT_COMPAT ENT_HTML401, 'UTF-8', false);
  • Specify only required parameters, skipping optional ones.
  • Arguments are order-independent and self-documented.

Attributes RFCDoc

class PostsController
* @Route('/api/posts/{id}', methods={'GET'})
public function get($id) { /* ... */ }
class PostsController
#[Route('/api/posts/{id}', methods: ['GET'])]
public function get($id) { /* ... */ }

Instead of PHPDoc annotations, you can now use structured metadata with PHP's native syntax.

Constructor property promotion RFCDoc

class Point {
float $x;
float $y;
float $z;
public function
float $x = 0.0,
float $y = 0.0,
float $z = 0.0
) {
$this->x = $x;
$this->y = $y;
$this->z = $z;
class Point {
public function
float $x = 0.0,
float $y = 0.0,
float $z = 0.0,
) {}

Less boilerplate code to define and initialize properties.

Union types RFCDoc

class Number {
/** @var int float */
private $number;
* @param float int $number
public function __construct($number) {
$this->number = $number;
Number('NaN'); // Ok
class Number {
public function
intfloat $number
) {}
Number('NaN'); // TypeError

Instead of PHPDoc annotations for a combination of types, you can use native union type declarations that are validated at runtime.

Match expression RFCDoc

switch (8.0) {
$result = 'Oh no!';
$result = 'This is what I expected';
//> Oh no!
echo match (8.0) {
'8.0' => 'Oh no!',
8.0 => 'This is what I expected',
//> This is what I expected

The new match is similar to switch and has the following features:

  • Match is an expression, meaning its result can be stored in a variable or returned.
  • Match branches only support single-line expressions and do not need a break; statement.
  • Match does strict comparisons.

Nullsafe operator RFC

$country = null;
if (
$session ! null) {
$user = $session->user;
if (
$user ! null) {
$address = $user->getAddress();
if (
$address ! null) {
$country = $address->country;
$country = $session?->user?->getAddress()?->country;

Instead of null check conditions, you can now use a chain of calls with the new nullsafe operator. When the evaluation of one element in the chain fails, the execution of the entire chain aborts and the entire chain evaluates to null.

Saner string to number comparisons RFC

When comparing to a numeric string, PHP 8 uses a number comparison. Otherwise, it converts the number to a string and uses a string comparison.

Consistent type errors for internal functions RFC

strlen([]); // Warning: strlen() expects parameter 1 to be string, array given
array_chunk([], -1); // Warning: array_chunk(): Size parameter expected to be greater than 0
strlen([]); // TypeError: strlen(): Argument #1 ($str) must be of type string, array given
array_chunk([], -1); // ValueError: array_chunk(): Argument #2 ($length) must be greater than 0

Most of the internal functions now throw an Error exception if the validation of the parameters fails.

Just-In-Time compilation

PHP 8 introduces two JIT compilation engines. Tracing JIT, the most promising of the two, shows about 3 times better performance on synthetic benchmarks and 1.5–2 times improvement on some specific long-running applications. Typical application performance is on par with PHP 7.4.

Relative JIT contribution to PHP 8 performance

Type system and error handling improvements

  • Stricter type checks for arithmetic/bitwise operators RFC
  • Abstract trait method validation RFC
  • Correct signatures of magic methods RFC
  • Reclassified engine warnings RFC
  • Fatal error for incompatible method signatures RFC
  • The @ operator no longer silences fatal errors.
  • Inheritance with private methods RFC
  • Mixed type RFC
  • Static return type RFC
  • Types for internal functions Email thread
  • Opaque objects instead of resources for Curl, Gd, Sockets, OpenSSL, XMLWriter, and XML extensions

Other syntax tweaks and improvements

8 New Themes Released Date

  • Allow a trailing comma in parameter lists RFC and closure use lists RFC
  • Non-capturing catches RFC
  • Variable Syntax Tweaks RFC
  • Treat namespaced names as single token RFC
  • Throw is now an expression RFC
  • Allow ::class on objects RFC

New Classes, Interfaces, and Functions

  • Weak Map class
  • Stringable interface
  • str_contains(), str_starts_with(), str_ends_with()
  • token_get_all() object implementation

Better performance, better syntax, improved type safety.

For source downloads of PHP 8 please visit the downloads page. Windows binaries can be found on the PHP for Windows site. The list of changes is recorded in the ChangeLog.

The migration guide is available in the PHP Manual. Please consult it for a detailed list of new features and backward-incompatible changes.

8.0.0 General Availability

Release date: August 1st, 2019


For more information on this release, see the General Availability of Mendix 8 Arrives — with Native Mobile, AI-Assisted Development, and More! blog post.

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

The new Native mobile navigation profile type has been 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 the Native Mobile Styling Reference Guide.

To start creating a native mobile application, we recommend creating a new project based on the Native Mobile Quickstart app. This app template 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.

Make It Native

The Mendix Make It Native app is the companion app for Mendix native developers who want to streamline their development process. The Make It Native app allows you to preview your apps while still in development. This speeds up communication, debugging, and allows ideas to become reality more quickly. For an introduction to the Make It Native app, see Get Started with Native Mobile. For advanced information on debugging with the Make It Native app, see Debug Native Mobile Apps (Advanced)

The Mendix Make It Native app is available from Google Play and Apple App Store. We will continue to improve and extend their functionality.

Native Builder

The Native Builder is a command line input tool which helps you build your Mendix native mobile app. After the Native Builder simplifies your build process, you can do what you want most: test and publish your app. The Native Builder uses MxBuild, GitHub, and App Center to simplify the app building process. We are heavily invested in streamlining the experience of building your apps and are continuously improving upon the tool’s capabilities.

Mendix Native App Template

Advanced users can now make direct use of our Mendix Native App Template. This repository acts as a template for building Mendix native mobile apps, and as a guide for users who want to include native Mendix functionality in their own apps.

The Mendix Native App Template is used by the Native Builder which means it will be consistently updated to support the latest native Mendix features.

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.

Kudos to Marcel Groeneweg for his upvoted idea about this on the Mendix Idea Forum!

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 parameters 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 a button). The widget will receive a callback to execute the configured action.
  • 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.


Nanoflows are widely popular, and as the need to share logic becomes more important, their usage increases. So, we are happy to release the Call nanoflow action, which lets you call a nanoflow within a nanoflow.

With this action, you can easily configure which nanoflow to call, fill in the parameter values, and capture the return value. Or, you can just drag and drop a nanoflow from Project Explorer in the nanoflow editor, and you are good to go!

Microflows in the Connector Kit

You can now expose your microflows as Toolbox actions, as is already available for Java and JavaScript actions.

AI-Assisted Development in Studio Pro

We added support for Mendix Assist in Studio Pro. For more information, see Mendix Assist in the Studio Pro 8 Guide.

Error Codes in the Errors Pane

You are now able to see error codes in the Errors pane. You can navigate to the corresponding documentation (if available) by clicking the error code.

In addition, you are now able to see enhanced error messages.

Subversion Upgraded to Version 1.9

We upgraded the Apache Subversion library used in Studio Pro to version 1.9. The previous version (1.7) is no longer supported in Studio Pro. Apache Subversion 1.9 brings improvements to performance, functionality, and network connectivity.

However, the new version uses a different working copy format, which means that you will not be able to use TortoiseSVN 1.7.15 on those working copies.

The recommended setup for now is to keep TortoiseSVN 1.7.15 to use with app projects from Mendix versions 5, 6, and 7, and to install SmartSVN to use with Mendix 8 projects.

For more information, see Subversion 1.9 in Mendix 8 Beta 2 on the Mendix Forum.

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!


  • We improved the visualization of self-referencing associations in the domain model editor. You will now find them much easier to select! As a bonus, the cardinality numbers are now displayed on the line as opposed to next to it.

    This is based on upvoted ideas from Nikolaus Weiss, Dion Witteveen, and Ronald van Puijenbroek (with 44 votes in total!) submitted to the Mendix Idea Forum. Thanks everyone!

  • When performing a version control operation such as Update, Commit, or Merge, we now check if your working copy is locked. If it is, you can unlock it before continuing. (Ticket 84321)
  • We renamed the Create snippet context menu item to Extract snippet and the Extract snippet context menu item to Inline snippet in order to be consistent with Mendix Studio.
  • As the DOM output has been improved and old Atlas UI modules of version 1.x.x are not compatible with Studio Pro 8, we have implemented an automatic migration to Atlas UI 2.1 if you are using a non-modified version of Atlas UI.
  • We have updated the build in the Blank app template to the latest updated Atlas UI framework resources, so you can still start building a new Mendix app when you are offline.
  • We made the experience of creating new objects inside loops way easier. Now, when you create a new object by dragging it from another object in the loop, the loop automatically expands to accommodate the newly created object.
  • We added the Mendix Assist status in the bottom-right corner of the microflow editor to make server interaction with it clearer. When Mendix is performing any server requests, the status text says Thinking, when Mendix Assist is ready for action, it says Ready, and if you are offline or Mendix cannot reach the server, Mendix Assist status will say Offline.
  • Instead of forcing you to migrate to the new code generation style for Java actions straight away, we are introducing a deprecation warning and an option to control the generation mode. When the option is “on,” Studio Pro 8 will append postfixes to your Java action parameters (as it did in the Desktop Modeler) if it encounters name clashes. This allows for a smoother migration.
  • We improved the content that clients receive when calling a published OData service. When you do not have access to an association, you will no longer see a link to that association.
  • If you use S3 storage, you can (and should) now configure the S3 storage region using the com.mendix.storage.s3.Region custom setting.
  • We upgraded the Azure storage .jar from 8.2.0 to 8.3.0, and we upgraded jackson-databind and jackson-core from 2.9.8 to 2.9.9.
  • We added the create-module-package option to mxutil.exe to export modules from the command line. The option accepts parameters to provide exclusion filters for the app project files and has a built-in filter to add only the required libraries from userlib when they are accompanied by a .[ModuleName].RequiredLib marker file.
  • We added support for placeholder text in date picker widgets for the iOS and Android mobile platforms.
  • We improved web accessibility to make Mendix apps more accessible for end-users working with screen readers:
    • The data grid pagination is now properly accessible for screen readers and provides the paging button that is in focus and the current page that is selected.
    • The data grid now has a new attribute named Caption, which can be used to describe the content and is only visible for screen readers.
    • Drop-down buttons are now accessible by screen readers, and end-users can use the keyboard to navigate and select a value.
    • For each input widget, we improved the validation message, so screen readers will start reading the error when added.
    • Tab containers can now be seen by screen readers, and end-users can use the keyboard to select the visible tab.
  • The context menu of layout grid columns in Design mode now offers the options to add and remove rows.
  • The types float and currency have been deprecated since Mendix 6. In Mendix 8, using these types is no longer allowed. If your app project still contains a lot of those types, we now help you more in getting rid of them. By right-clicking an error message and selecting Convert all Float/Currency to Decimal, you can quickly fix almost all float-related errors.
  • We improved the markup of pages generated by Mendix. These changes make widgets more accessible and consistent, and they give you a cleaner markup to work with. However, these changes this might affect your styling. If you are using Atlas UI, you should upgrade to the latest version. To see the exact changes we made to the markup, see Troubleshooting DOM Changes. If you have any custom styling in Atlas UI or if you created your own theme from scratch, you need to check and adapt your styling using Troubleshooting Atlas UI Changes.
  • To avoid confusion, we changed the naming of variables and objects in the microflow editor. Previously, the term “variable” could be used in different ways: as a name for a list of objects or as an object itself. This has now been cleared up. There are some outstanding changes that will be addressed in future.
  • Exclusive split and inheritance split have been renamed to Decision and Object type decision, respectively.
  • You can make many native widgets conditionally editable in Studio Pro.
  • Mendix Assist now takes the return type of a microflow into account when providing recommendations.
  • In published OData services, you can now specify the path. It always starts with /odata/, but after that, you can specify more than just the service name. Use this, for example, to make the version a part of the URL.
  • In the Studio Pro user interface of published OData services, we renamed Entity set name to Exposed set name in order to clearly express that this is an exposed name.
  • We added a documentation/help button to the dialog box for editing a message definition.
  • In the Call REST action, we added support for posting form data to a REST service.
  • We upgraded Swagger UI (used in the interactive documentation of published REST services) from 3.4.3 to 3.22.2.
  • Because this is Mendix Studio Pro, the executable file is now named studiopro.exe.
  • We improved logging to better diagnose problems with staying signed in to Studio Pro.
  • If critical messages have been logged, the echo action now only returns the first 10 messages. It also reports the total number of critical messages logged.
  • Averages of integer attributes are now calculated using decimals instead of floats.
  • The custom runtime property DataStorage.CountOnAttribute has been removed.
  • Stricter type-checking is now applied on query parameter values: arbitrary arrays are no longer allowed to be passed, and passing null as an argument of RANGEBEGIN/RANGEEND now results in an error.
  • In the OpenApi 2.0 (Swagger) documentation of a REST operation based on a message definition, we now use the exposed single name as the definition name. This is a better choice for the title than the name of the message definition.
  • We introduced the NoClientCertificateUsagescustom setting, in which you can specify web services.
  • We improved the UI for published OData services. It is now a tab instead of a pop-up window.
  • In published OData services, you can now specify the names of associations to be used in the metadata.
  • Successful login, user session creation, reuse of an anonymous session, and session destroy events are now logged in the trace log.
  • We improved the performance of showing bulk log lines in Studio Pro. Log lines are now shown more quickly when they are received from a running server.
  • We upgraded the AWS Java SDK For Amazon S3 from 1.11.525 to 1.11.534.
  • 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.

    This is based on an upvoted idea from Sander Wamelink submitted to the Mendix Idea Forum. Thanks, Sander!

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

Nanoflow Improvements

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!

These are the general improvements to nanoflows:

  • Date expression functions can now be used in nanoflows. Note that these functions use the time settings of the user’s browser instead of the server settings. Parsing and formatting time zones is not supported in nanoflows.
  • With this release, nanoflows have received custom error-handling functionality. The experience is similar to what you are used to in microflows: you can select Custom error-handling from the context menu of an activity, and then use the $latestError variable in your error flow.
  • This functionality can come in handy when, for example, you are synchronizing in an offline app while the app has no network connection. By default, such synchronization used to fail the nanoflow and show a message to the user. Now, you have the power to adjust that behavior.

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.

Database Improvements

We updated database vendor versions described below.

  • We added support for the following:
    • Oracle 12.2
    • MariaDB 10.2, 10.3
    • MySQL 8
    • PostgreSQL 11
  • We dropped support for the following versions no longer supported by vendors:
    • Oracle 11, 12.1
    • MySQL 5.5, 5.6
    • MariaDB 10.0
    • PostgreSQL 9.2, 9.3
    • SQL Server 2008, 2008r2, 2012
  • We dropped support for versions that will no longer be supported by Q4 2019:
    • PostgreSQL 9.4
    • SQL Server 2014

Published OData Service Improvements

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.

Input Widget Improvements

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 Improvements

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 Improvements

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 Improvements

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.
Drop-Down & Radio Button Improvements

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

8 New Themes Released June

Date Picker Improvements

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.


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


  • We deprecated the following Client API methods:
    • mx.baseUrl
    • mx.session.getUserAttribute
    • mx.session.getUserClass
    • mx.ui.action
  • We deprecated the CoreAction.setSystemAction Java method.

Breaking Changes

  • Using system entities other than User, FileDocument, or Image as generalizations is no longer allowed. Using other system entities was deprecated in Mendix version 5.15.
  • We are now using a newer version of CLDR specifications (release 33) for representing dates and numbers. Starting with Java 9, the JVM prefers CLDR locales over built-in JRE ones. We are using Java 11 starting with Mendix 8.0.0, so this means that some locales will have different configurations (for example, date time formatting). Here are a few examples of the changes you can expect:
    • Some locales now format dates with a comma between the date and time (for example, 6/19/2019, 9:43 AM instead of 6/19/2019 9:43 AM).
    • Some locales now add a period at the end of an abbreviation (for example, jan. instead of jan, or mon. instead of mon).
    • Where previously we only had a subset of locales (for example, just a single one for all Arabic locales), we now have specific ones (as in, for different Arabic regions).
    • In microflow expressions, functions like formatDateTime as well as toString that are called on a MendixDateTime object using a default pattern might return a different result.
  • We changed the date formatting API for custom widgets, and some parameters are no longer supported. The updated parameters are documented in Namespace: parser in the Mendix Client API.
  • It is no longer possible to use the Arial and Tahoma fonts in document templates. These fonts will be automatically replaced with Helvetica when you upgrade. As an alternative, you can provide custom fonts (for details on how to do this, see the Custom Fonts for PDF Documents section of Style).
  • Session removal is now logged at the DEBUG level, not at the INFO level.
  • We removed the following methods that do not have alternatives, as we determined there were no valid use cases for them:
    • MendixHashString.setInitialHash
    • IContext.addFeedback
    • IContext.getFeedbackList
    • Configuration.getConstantValue(Object component, String key)
  • We removed the deprecated retrieveXPathQueryEscaped and retrieveXPathSchemaEscaped methods from the Runtime API.
  • We removed the deprecated ISession.getLanguage() method. Use Core.getLanguage(IContext) instead.
  • We removed the deprecated ISession.getUser() method. Use ISession.getUser(context) instead.
  • We removed the deprecated Core.addListener Java method. Use Core.getListenersRegistry().addListener() instead.
  • We removed the deprecated ObjectState.COMMITTING Java enum value.
  • We now require Java 11 as the minimum Java version for compiling and running Mendix applications.
  • We removed the code, permanent, eden, survivor, and tenured fields from the memory section of the runtime_statistics admin action’s result. They had already been reported as 0 in Mendix 7.
  • The com.mendix.core.conf.Configuration interface’s getCACerficates and getClientCertificates methods as well as the com.mendix.core.conf.WebServiceCertificateInfo class’s getCertificateInputStream method now throw IOException instead of FileNotFoundException. As these are checked exceptions, if you use these public API methods, you should adapt your code.
  • We migrated our navigation library for native mobile apps from React Native Navigation to React Navigation. The React Navigation API is not exposed for direct usage in Javascript actions or widgets. If you leveraged the exposed React Native Navigation APIs from a widget or Javascript action, you will have to remove this usage from your code.
  • We upgraded to React Native 0.59.9. You will need to update the Make It Native app from Google Play or the Apple App Store.
  • We dropped support for the float and currency types. For more information on this change, see the improvement documented above.
  • Updates to Atlas UI and the DOM may cause breaking changes. To resolve these issues see Troubleshooting Atlas UI Changes or Troubleshooting DOM Changes, respectively.
  • After being deprecated for years, cross-module associations to System with owner Both are no longer supported.
  • We rely on the default locale preferences of the Java Virtual Machine (JVM). Since Java 9, the JVM prefers Common Locale Data Repository (CLDR) locales over built-in Java Runtime Environment (JRE) ones. This means that some locales will have different configurations. For example, in an en_US locale, the default date time format is different. As a consequence, in microflow expressions, functions like formatDateTime as well as toString calling on a MendixDateTime object using a default pattern might return a different result.
  • We now require Java 11 as the minimum Java version for compiling and running Mendix applications.
  • We stopped including Bootstrap JavaScript code in resources under the lib/bootstrap/js path. If your theme’s HTML page still imports these files, you must include them in your theme explicitly.
  • We migrated Studio Pro to .NET Framework 4.7.2. This adds more security, performance, and stability, and it includes better support for viewing Studio Pro on high DPI screens.
  • MxBuild now requires Mono 5.20.x to run.
  • We fixed the annoying behavior where the name of an entity or enumeration caused compiling errors in your Java action user code or dataset proxies. This is a breaking change in Java-code generation. Studio Pro no longer adds _ParameterX to Java action parameter names in the generated code. (Tickets 55605, 55688, 55997, 56002, 56250, 59735, 59943, 67995, 69693, 80018, 81150)
  • Previously, the Mendix Client put a lot of effort into adding mx-focus to an element that received focus and removing it when the element lost the focus. Because all supported browsers now have proper support for the :focus pseudo-class, it is no longer necessary to do that. If you are using this class in your theme, replace it with the :focus pseudo-class.
  • We blacklisted a number of custom widgets which were using deprecated APIs that got removed upon this release.
  • 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 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.
  • 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 8.0.0 and above cannot be deployed to Mendix Cloud v3.

Known Issues

  • The first deployment of a project with a native mobile profile takes up to approximately one minute longer than usual, as it needs to build up a cache. On consecutive deployments, this time is reduced.
    • Fixed in 8.10.0.
  • MySQL 8.0 cannot be used with the default authentication plugin as of this moment. Mendix uses the open-source MariaDB driver to connect, which has not yet added support. We will include the updated driver as soon as it is released. To resolve this issue, you may consider using the previous default plugin until the driver has been updated.
    • Fixed in 8.7.0.
  • Downloading private content in the App Store available in Studio Pro has been temporarily disabled due to a security risk. Please see this issue described in the App Store release notes for more information, details about where to find your private content, and plans for future version-specific fixes.
    • Fixed in 8.6.4.
  • In native mobile apps, the back button text changes to Back in the case of longer page titles. This is currently not translatable.
    • Fixed in 8.2.0.
  • When opening .mpr or .mpk files from File Explorer, you may see the message “Please wait while Windows configures Mendix Version Selector.”
    • Fixed in 8.1.0.
  • In native mobile apps, bottom bar captions and page titles are currently not translatable.
    • Fixed in 8.1.0.
  • Azure SQL Database currently identifies itself as a variant of SQL Server 2014, even though it supports newer features. As SQL Server 2014 is not supported, Mendix Runtime refuses to connect to this database.
    • Fixed in 8.1.0.
  • Studio Pro returns incorrect results for XPath queries when the same entity member (either an attribute or an association) is compared against different values.
    • Fixed in 8.1.0.

8 New Themes Released Releases

8.0.0 Beta Releases

Release date: July 9th, 2019

8 New Themes Released 2019

Studio Pro 8.0.0 Beta app projects that are converted to 8.0.0 General Availability can no longer be opened in 8.0.0 Beta versions. Support for 8.0.0 Beta versions is dropped with the release of 8.0.0 General Availability.

8 New Themes Released 2020

  • We fixed an issue where changes rolled back in a microflow were not reflected in the client when run asynchronously.
  • 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 resolved the issue where cross-module associations pointed the wrong way. (Ticket 85966)
  • We resolved the issue where the Ctrl + Tab keyboard shortcut failed to switch to another tab. (Tickets 84573, 85938)
  • We resolved the issue where retrieving data over an association contained duplicate data in offline apps.
  • We fixed an issue where the Save button did not save the objects of a nanoflow-sourced data view on native.
  • We fixed an issue where you could not search for changes introduced in nanoflows from convenience methods in the domain model. For more information, see Search for Nanoflow action on the Mendix Forum. (Ticket 77034)
  • We fixed an issue where searching for texts in expressions only showed texts used in microflows, not in pages. For more information, see Search for Nanoflow action on the Mendix Forum.
  • We fixed an error that occurred when switching back and forth between return types in Java and JavaScript actions.
  • We fixed a problem where Studio Pro froze when switching between networks.
  • We fixed an issue in import mappings in Studio Pro where using a parameter as a key moved that parameter away from the top, resulting in a consistency error that could only be resolved by mapping the entity again.
  • We fixed an issue introduced in the Mendix 8.0.0 Beta 2 release where setting access rules on non-persistent entities was no longer possible (you could only set them if you temporarily changed the entity to persistable). (Ticket 848984)
  • We fixed an issue introduced in the Mendix 8.0.0 Beta 2 release where saving files in the Mendix Cloud resulted in an error. (Tickets 84685, 84862, 84961, 85137, 85156, 85372, 85733, 85734, 85800, 85899, 86135)
  • We fixed an issue in published OData services where the example location of a resource included an extra slash.
  • We fixed the sorting when using multiple sort directions in an XPathBasicQuery.
  • We fixed an exception in the database model synchronization where an entity derived from another module was changed at the same time as that module was renamed. (Ticket 77644)
  • The date picker widget on iOS web and hybrid applications can now select a valid data-time and clear the date value without receiving validation errors. (Ticket 83433)
  • We improved the editing behavior of the data grid widget so that when an on-change microflow is slow, it no longer resets to the old values. (Ticket 84282)
  • We fixed an issue where Windows 7 users where not able to sign in into Studio Pro.
  • We fixed an issue that prevented some users from merging specific revisions from another branch. (Ticket 85619)
  • We now prevent you from opening a non-versioned app project that happens to be located in a directory that is under version control. This situation can occur if an app project was accidentally created inside the folder of a versioned app project. In this scenario, it is best for you to clean up your directory, even if Studio Pro no longer throws an exception.
  • The check box in the Constrained by dialog box is now visible on high DPI screens. (Ticket 82461)
  • We fixed an issue where the error check progress bar remained stuck. (Ticket 69295)
  • Design mode now properly supports all the changes made to custom widget properties and no longer displays an eternal loading spinner for pages that contain them. (Ticket 82615)
  • Previously, you could select the user role token in nanoflow XPath retrieves, resulting in an invalid token error. This is now updated, and the user role token is no longer selectable here. (Ticket 83007)
  • SVG support has been fixed. (Tickets 84976, 84989, 85358)
  • We made it possible to have more than one thousand documents at the same level in Studio Pro, but please try to avoid that situation anyway. (Ticket 82990)
  • We noticed that Mendix Assist was rather slow on big microflows, which made it rather unusable in that context. Well, not anymore!
  • We fixed an issue where log messages were truncated if they contained null characters.
  • We fixed an issue where pasting a Model Share into the System module resulted in an error.
  • We added checks that warn you when you create a validation rule that will crash when running your app. (Tickets 82448, 46497)
  • We fixed an issue where there was a difference between JSON validation in Studio Pro and MxBuild on Linux. (Tickets 61771, 62022)
  • We fixed an issue in the metadata of published OData services where if you published associations as links and gave the same exposed name on both sides, the metadata was invalid. This was because it used the same role on both sides.
  • We fixed an issue in validation rules for the the domain model editor where the minimum and maximum values were shown in the wrong order.
  • We fixed an issue in consumed REST services where encoded URLs were decoded too early. We upgraded httpclient.jar from 4.5.7 to 4.5.8. (Ticket 83346)
  • We fixed an issue where the Progress pop-up window was too small to show the progress bar when the message was long.
  • We fixed an issue where some Client APIs were not available to JavaScript actions on native mobile app projects.
  • We fixed an issue where a dynamic image using an object over an association did not show on a native page.
  • We fixed an issue where the on-click nanoflow of a dynamic image widget on a native page did not receive a parameter object.
  • We fixed an issue where the Design mode did not correctly load when the app project contained native custom widgets.
  • 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)
  • Most Viewed News

    • Choose Your Countryeffective Curriculum Ideas
    • 2017 Statsthe Initials Game
    • Lazerman
    • Scoring Scripts Updated