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 and Test-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 return null values. However, you can fetch data for another type of published item that includes information about its template, as shown in the following example:

    A sample GraphQL query that fetches the ID of a specified item plus the ID of that item's template. Alongside it is the query response, which includes both IDs.
  • 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

    RequestResponse
    query MyQuery($hasLayout: String!, $parent: String!) {
      search(
        where: {
          AND: [
            { name: "_hasLayout", value: $hasLayout }
            { name: "_parent", value: $parent }
          ]
        }
      ) {
        total
      }
    }
    RequestResponse
    query MyQuery($parent: String!) {
      search(
        where: {
          AND: [
            { name: "_hasLayout", value: "true" }
            { name: "_parent", value: $parent }
          ]
        }
      ) {
        total
      }
    }

Do you have some feedback for us?

If you have suggestions for improving this article,