Mendix Version Compatibility
Supported Mendix Studio Pro versions, feature availability matrix, and known limitations.
Supported Versions
mxcli supports Mendix Studio Pro versions 9.x through 11.x. Development and nightly testing targets three versions:
| Studio Pro Version | MPR Format | Nightly Tested | Status |
|---|---|---|---|
| 9.x | v1 | No | Read-only support |
| 10.0 – 10.17 | v1 | No | Supported |
| 10.18 – 10.23 | v2 | No | Supported |
| 10.24 (LTS) | v2 | Yes | Supported |
| 11.0 – 11.5 | v2 | No | Supported |
| 11.6 | v2 | Yes | Primary development target |
| 11.9 | v2 | Yes | Latest tested |
MPR Format Versions
v1 (Mendix < 10.18)
- Single
.mprSQLite database file - All documents stored as BSON blobs in the
UnitContentstable - Self-contained – one file holds the entire project
v2 (Mendix >= 10.18)
.mprSQLite file for metadata onlymprcontents/folder with individual.mxunitfiles for each document- Better suited for Git version control (smaller, per-document diffs)
The library auto-detects the format. No configuration is needed.
Feature Availability Matrix
The tables below show exactly which features are available on each Mendix version. Data is sourced from sdk/versions/mendix-{9,10,11}.yaml.
Domain Model
| Feature | MDL Syntax | 9.x | 10.0+ | 10.18+ | 11.0+ |
|---|---|---|---|---|---|
| Persistent entities | CREATE PERSISTENT ENTITY | Yes | Yes | Yes | Yes |
| Non-persistent entities | CREATE NON-PERSISTENT ENTITY | Yes | Yes | Yes | Yes |
| Calculated attributes | CALCULATED BY Module.Microflow | Yes | Yes | Yes | Yes |
| Entity generalization | EXTENDS Module.ParentEntity | Yes | Yes | Yes | Yes |
| ALTER ENTITY | ALTER ENTITY ... ADD/DROP/RENAME | – | Yes | Yes | Yes |
| View entities | CREATE VIEW ENTITY ... AS SELECT | – | – | Yes | Yes |
Microflows
| Feature | MDL Syntax | 9.x | 10.0+ | 10.6+ | 11.0+ |
|---|---|---|---|---|---|
| Basic microflows | CREATE MICROFLOW ... BEGIN ... END | Yes | Yes | Yes | Yes |
| Loop in branches | LOOP inside IF/ELSE | Yes | Yes | Yes | Yes |
| SEND REST REQUEST | SEND REST REQUEST Module.Service.Op | – | 10.1+ | Yes | Yes |
| Execute database query | EXECUTE DATABASE QUERY ... | – | – | Yes | Yes |
| Show page with params | SHOW PAGE ... WITH PARAMS | – | – | – | Yes |
| REST query parameters | SEND REST REQUEST with QUERY params | – | – | – | Yes |
| DB query runtime connection | EXECUTE DATABASE QUERY CONNECTION ... | – | – | – | Yes |
Pages
| Feature | MDL Syntax | 9.x | 10.0+ | 10.18+ | 11.0+ |
|---|---|---|---|---|---|
| Basic pages | CREATE PAGE ... { ... } | Yes | Yes | Yes | Yes |
| ALTER PAGE | ALTER PAGE ... SET/INSERT/DROP | – | Yes | Yes | Yes |
| Pluggable widgets | DATAGRID, GALLERY, COMBOBOX, IMAGE | – | Yes | Yes | Yes |
| Conditional visibility | Visible: [xpath] | – | – | – | Yes |
| Conditional editability | Editable: [xpath] | – | – | – | Yes |
| Responsive column widths | TabletWidth: 6, PhoneWidth: 12 | – | – | – | Yes |
| Page parameters (entity) | Params: { $Item: Module.Entity } | – | – | – | Yes |
| Page parameters (primitive) | Params: { $Qty: Integer } | – | – | – | 11.6+ |
| Page variables | Variables: { ... } | – | – | – | Yes |
| Design properties (Atlas v3) | DesignProperties: [...] | – | – | – | Yes |
- ::: tip Widget Templates Pluggable widget templates are currently extracted from Mendix 11.6. When used on 10.x projects, the MPK augmentation system reconciles property differences. Some CE0463 (“widget definition changed”) errors may still occur.
- ::
Security
| Feature | MDL Syntax | 9.x | 10.0+ |
|---|---|---|---|
| Module roles | CREATE MODULE ROLE | Yes | Yes |
| User roles | CREATE USER ROLE | Yes | Yes |
| Entity access rules | GRANT READ/WRITE ON ... | Yes | Yes |
| Demo users | CREATE DEMO USER | Yes | Yes |
Integration
| Feature | MDL Syntax | 10.0+ | 10.1+ | 10.4+ | 10.6+ | 11.0+ |
|---|---|---|---|---|---|---|
| OData client | CREATE ODATA CLIENT | Yes | Yes | Yes | Yes | Yes |
| Business events | CREATE BUSINESS EVENT SERVICE | Yes | Yes | Yes | Yes | Yes |
| REST client (basic) | CREATE REST CLIENT ... BEGIN ... END | – | Yes | Yes | Yes | Yes |
| REST client headers | HEADER 'Name' = 'Value' | – | – | Yes | Yes | Yes |
| Database Connector | CREATE DATABASE CONNECTION | – | – | – | Yes | Yes |
| REST client query params | QUERY $param: Type | – | – | – | – | Yes |
Workflows
| Feature | MDL Syntax | 9.x | 10.0+ |
|---|---|---|---|
| Basic workflows | CREATE WORKFLOW | Yes | Yes |
| User tasks | USER TASK ... OUTCOMES (...) | Yes | Yes |
| Parallel splits | PARALLEL SPLIT | Yes | Yes |
Navigation
| Feature | MDL Syntax | 9.x | 10.0+ |
|---|---|---|---|
| Navigation profiles | ALTER NAVIGATION ... | Yes | Yes |
| Menu items | MENU ITEM ... | Yes | Yes |
| Home pages | HOME PAGE Module.Page | Yes | Yes |
OQL (View Entity queries)
| Feature | MDL Syntax | 10.18+ | 11.0+ |
|---|---|---|---|
| Basic SELECT | SELECT, FROM, WHERE | Yes | Yes |
| Aggregate functions | COUNT, SUM, AVG, MIN, MAX, GROUP BY | Yes | Yes |
| Subqueries | Inline subqueries in SELECT/WHERE | Yes | Yes |
| JOIN types | INNER/LEFT/RIGHT/FULL JOIN | Yes | Yes |
MPR Format & Infrastructure
| Feature | Minimum Version | Notes |
|---|---|---|
| MPR v2 (mprcontents/) | 10.18 | Per-document files for Git compatibility |
| Association storage format | 11.0 | New BSON encoding for associations |
| Portable app format | 11.6 | New deployment format |
BSON Differences Across Versions
The Mendix metamodel evolves across versions. The reflection data shows ~42% type growth from Mendix 9.0 to 11.6. Key structural differences:
View Entities (10.x vs 11.x)
View entities exist in both 10.18+ and 11.x, but the BSON structure differs. In Mendix 10.x, the OqlViewEntitySource object has an Oql field that stores the OQL query inline (in addition to the separate ViewEntitySourceDocument). Mendix 11.0 removed the inline Oql field. The writer detects the project version and includes the inline field for 10.x projects.
Page Parameters (10.x vs 11.x)
Mendix 11.0 changed how page parameters are stored in BSON. The Variable property in page parameter mappings uses a different structure. Writing 11.x-style page parameters to a 10.x project causes an InvalidOperationException.
Design Properties (Atlas v2 vs v3)
Atlas UI v3 (Mendix 11.0+) introduced new design properties like “Card style” and “Disable row wrap” for containers. These don’t exist in the Atlas v2 theme bundled with 10.x, causing CE6083.
Widget Type Definitions
Pluggable widget PropertyTypes change between Mendix versions. A widget template extracted from 11.6 may have more or fewer properties than the widget installed in a 10.24 project. The widget augmentation system handles this by reconciling templates against the project’s .mpk files.
Widget Template Versions
Embedded widget templates are extracted from Mendix 11.6 and cover:
| Widget | Template | Widget ID |
|---|---|---|
| Combo box | combobox.json | com.mendix.widget.web.combobox.Combobox |
| Data grid 2 | datagrid.json | com.mendix.widget.web.datagrid.Datagrid |
| Gallery | gallery.json | com.mendix.widget.web.gallery.Gallery |
| Image | image.json | com.mendix.widget.web.image.Image |
| Text filter | datagrid-text-filter.json | com.mendix.widget.web.datagridtextfilter.DatagridTextFilter |
| Number filter | datagrid-number-filter.json | com.mendix.widget.web.datagridnumberfilter.DatagridNumberFilter |
| Date filter | datagrid-date-filter.json | com.mendix.widget.web.datagriddatefilter.DatagridDateFilter |
| Dropdown filter | datagrid-dropdown-filter.json | com.mendix.widget.web.datagriddropdownfilter.DatagridDropdownFilter |
MPK Augmentation
When opening a project, mxcli checks the project’s widgets/ folder for .mpk packages. If a widget’s installed version differs from the embedded template, the augmentation system:
- Extracts the XML property definition from the
.mpk - Adds properties found in
.mpkbut missing from the template - Removes properties in the template but not in the
.mpk - Preserves the BSON structure (IDs, nesting, cross-references)
This reduces CE0463 (“widget definition changed”) errors from widget version drift. See Widget Templates for details.
Version Gates in MDL Scripts
MDL scripts can use -- @version: directives to conditionally execute features based on the target Mendix version. This is used in the doctype integration tests to skip features incompatible with older versions:
-- Runs on all versions
CREATE ENTITY MyModule.Customer (Name: String(200));
-- @version: 11.0+
-- Only runs on Mendix 11.0 and later
CREATE VIEW ENTITY MyModule.ActiveCustomers (...) AS
SELECT c.Name FROM MyModule.Customer AS c WHERE c.IsActive;
-- @version: 10.6..10.24
-- Only runs on Mendix 10.6 through 10.24
CREATE ENTITY MyModule.LegacyConfig (...);
-- @version: any
-- Resets to unconditional (runs on all versions)
CREATE ENTITY MyModule.Universal (...);
Directive formats:
-- @version: 11.0+– minimum version (run on 11.0 and later)-- @version: 10.6..10.24– version range (inclusive)-- @version: ..10.24– maximum version only-- @version: any– reset to unconditional
The directive applies to all lines until the next -- @version: directive.
MxBuild Compatibility
The mx validation tool must match the project’s Mendix version:
# Auto-download the correct MxBuild version
mxcli setup mxbuild -p app.mpr
# Check the project
~/.mxcli/mxbuild/*/modeler/mx check app.mpr
MxBuild is downloaded on demand and cached in ~/.mxcli/mxbuild/{version}/.
Platform Support
mxcli runs on:
| Platform | Architecture |
|---|---|
| Linux | amd64, arm64 |
| macOS | amd64, arm64 (Apple Silicon) |
| Windows | amd64, arm64 |
No CGO or C compiler is required – the binary is fully statically linked using pure Go dependencies.