Limitations and restrictions of Experience Edge
Experience Edge has the following limitations and restrictions. Depending on your contract, additional usage limitations relating to bandwidth and storage might apply.
-
The Experience Edge Connector supports only one search provider: Solr.
-
For performance reasons, a single query can return a maximum of 1,000 entities. To fetch more, use pagination.
-
The Experience Edge Connector publishes a static snapshot of the Layout Service output for an item at the time of publishing. This means that:
-
Experience Edge does not support contextual/dynamic output from the Layout Service based on user, query strings, and so on.
-
If you change a rendering configuration or Layout Service extension that affects the output of the Layout Service, you must republish the affected items.
-
-
The LinkManager encodes spaces into dashes. So, if two items under the same parent differ only by a space or a dash (like
Test Item
andTest-Item
), they will get the same identifier. This means that only one of them will be available on Edge after publishing. -
Sitecore tracking/analytics do not reflect Experience Edge API calls.
-
Experience Edge does not enforce security constraints on Sitecore content. You must apply publishing restrictions to avoid publishing content that you do not want to be publicly accessible.
-
Sitecore language fallback rules are applied at publish time and can only be enabled/disabled on an instance and not on individual sites. If you change the language fallback configuration, you must republish the affected items.
-
Because templates are not stored as items, you can't directly fetch their data using an
item
query. Attempting to do so will returnnull
values. However, you can fetch data for another type of published item that includes information about its template, as shown in the following example: -
The value an item inherits through clones and standard values is resolved at publish time. A change to a clone source or standard value requires republishing dependent items.
-
Experience Edge only utilizes a single content scope for the whole tenant. Security tokens, query cache clearing, and webhooks cannot be limited by site.
-
The maximum size for Media items is 50MB.
-
Experience Edge supports up to 1,000 sites per tenant.
-
Experience Edge doesn't support virtual folders.
-
Experience Edge doesn't support aliases.
-
The XM Cloud Experience Edge GraphQL endpoint is rate-limited. If you are building a very large website, you must enable retries for requests to the XM Cloud Experience Edge GraphQL endpoint to complete builds. If you exceed the limit, Edge returns a 429 response. The following rate limits apply, and are visible in the header response:
Header
Description
X-Rate-Limit-Limit
The allowed requests per second. The value is 80.
X-Rate-Limit-Remaining
The number of remaining available requests in the reset timeframe. For example, if you made 5 requests in the same second, the fifth request returns
75
. This is reset every second.X-Rate-Limit-Reset
The reset time in seconds. The value is 1.
-
The mirrored schema might return inconsistent results when filtering or sorting by item text fields due to differing tokenization.
-
Layout data in Experience Edge only supports the Default device layer in item presentation.
-
Media URLs in Experience Edge are case-sensitive. For example, to reference an item in the
Images\Banners
folder, where the folder names are capitalized, use the following:https://edge.sitecorecloud.io/mainwebsite/media/Images/Banners/promo-banner.jpg
-
Experience Edge doesn't support multiple site definitions pointing to the same start item.
-
Persisted queries aren't supported.
-
Due to a known issue in the Experience Edge GraphQL schema, you must not mix literal and variable notation in your query input. If you use any variables in your GraphQL query, you must replace all literals with variables.
Correct
Incorrect
RequestResponsequery MyQuery($hasLayout: String!, $parent: String!) { search( where: { AND: [ { name: "_hasLayout", value: $hasLayout } { name: "_parent", value: $parent } ] } ) { total } }
RequestResponsequery MyQuery($parent: String!) { search( where: { AND: [ { name: "_hasLayout", value: "true" } { name: "_parent", value: $parent } ] } ) { total } }