Breaking Changes
Last updated Sep 28th, 2026 | Page history | Improve this page | Report an issue
Support the team building MODX with a monthly donation.
The budget raised through OpenCollective is transparent, including payouts, and any contributor can apply to be paid for their work on MODX.
Backers
Budget
$195 per month—let's make that $500!
Learn moreAs a major release, MODX 3.0 comes with a number of breaking changes. There is always a balance to be kept between breaking changes that cleanup technical debt, and not breaking things unnecessarily.
Most important breaking changes¶
The biggest breaking changes can be summarised as follows:
- Minimum supported PHP version was increased to 7.2 in 3.0, and again to 8.1 in 3.2
- It's no longer possible to use a custom core folder/path
- sqlsrv support has been removed
- A large number of (previously unnamespaced) classes have been renamed and moved, including processors and model classes.
- Checklist for Extra authors updating 2.x packages
- xPDO 3 ships via Composer with PSR-4 models; migrate custom packages
- All processors have been renamed, including base processors
- modAction and related functionality has been removed
- modRestClient has been removed #15781 and has been replaced with a new PSR-7/17/18 HTTP service
Legacy functionality cleanup¶
-
modResource->contentTypefield has been removed. Use thecontent_typeinteger field (FK tomodContentType) instead. #14057Before (legacy / broken in 3.0):
$mime = $resource->get('contentType'); // removed fieldAfter:
$contentTypeId = $resource->get('content_type'); $contentType = $resource->getOne('ContentType'); // or $modx->getObject(modContentType::class, $contentTypeId) $mime = $contentType ? $contentType->get('mime_type') : ''; -
modParser095,modTranslate095, andmodTranslatorhave been removed. They only helped migrate Evolution (0.9.x) tag syntax into Revolution. Do not call them for Evo→Revo migrations anymore: convert templates to standard[[...]]tags manually or with your own tooling, then rely on the normalmodParser. #14133 -
Flash-based copy-to-clipboard in ExtJS has been removed. Manager copy actions use the browser clipboard APIs instead. #13697
-
/manager/min/directory has been removed; was unused since 2.5. #12778, #13194, #14416 -
Unused ExtJS grids have been removed: assets/modext/widgets/resource/modx.grid.resource.security.js, assets/modext/widgets/security/modx.grid.role.user.js, assets/modext/workspace/lexicon/language.grid.js, assets/modext/workspace/lexicon/lexicon.topic.grid.js #14895
-
@EVALbinding has been removed from TVs #13865
Support the team building MODX with a monthly donation.
The budget raised through OpenCollective is transparent, including payouts, and any contributor can apply to be paid for their work on MODX.
Backers
Budget
$195 per month—let's make that $500!
Learn more










