Jump to main content Jump to doc navigation

Changes from MODX Evolution to MODX Revolution

Much has changed from MODX Evolution in the new Revolution release. This document will attempt to address some of the major ones.

Tag Syntax

Tags have changed their basic syntax. You can view the Tag Syntax changes here.

Parsing Order

In Evolution, pages were parsed via eval and done as a whole - in Revolution, we implemented "Source Order" parsing. This means tags are parsed in the order that they occur.

So what does that mean? Well, a few things:

  • Don't put Snippet calls that assign placeholders at the end of a Resource, or after the Resource. The placeholders will simply be blank, since the Snippet haven't executed yet.
  • Tags can now have tags within their properties. [[mySnippet? &tag=test[[call]]``]] is now 100% a-okay.
  • _Using =,?,!,* is now OK in a Snippet property.

No More 5000-Document limit

Although this has been mostly remedied in later versions of Evolution, there is still a performance hit in those versions. This, caching-wise, has been fixed in Revolution.

That said, if you're creating a site that has over 10,000 Resources, chances are you're not designing it right. Consider writing custom Snippets that pull from custom database tables instead for similar pages (such as inventories or e-commerce).


The access permissions system has been completely rewritten into a new ABAC-based system. You can read more about it here.

Error Page vs Unauthorized Page

This is a change from MODX Evolution. In Revolution, if a web page is protected in the front end so that only logged-in users can see it, the default behavior is for anonymous users to be redirected to the Error (page not found) page rather than the Unauthorized page when they try to access the resource. In Revolution, if Users don't have the "load" permission for a resource, it's as if it doesn't exist — thus the "page not found" response. If you would like them to be sent to the Unauthorized page instead, you can do the following:

  • Create a new Access Policy called "Load" and add a single Permission: Load.
  • Create a new Context Access ACL entry for the anonymous User Group with a Context of "web," a Role of "member" and an Access Policy of "Load."

(credit to Bob's Guides)

FURL Suffixes and Prefixes -> Content Types

The settings friendly_url_prefix and friendly_url_suffix are no longer applicable, as Revolution handles those now through Content Types.

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.



$0 per month—let's make that $500!

Learn more