1. Experience Edge

Limitations and restrictions of Experience Edge

This topic describes the limitations and restrictions of Experience Edge. Depending on your contract, additional usage limitations relating to bandwidth and storage might apply. We also recommend you review our Experience Edge rate limits and caching recipe suggestions.

Security

Experience Edge doesn't enforce security constraints on Sitecore content. You must apply publishing restrictions to avoid publishing content that you do not want to be publicly accessible.

GraphQL API and query behavior

  • The Delivery GraphQL API endpoint is rate-limited. If you are building a very large website, you must enable retries for requests to the Experience Edge GraphQL endpoint to complete builds. If you exceed the limit, Experience Edge returns a 429 response. The following rate limits apply, and are visible in the response header:

    HeaderDescription
    X-Rate-Limit-LimitThe Delivery GraphQL API rate limit is 80 requests per second.
    X-Rate-Limit-RemainingThe number of remaining available requests remaining in the reset timeframe. The reset timeframe is one second.For example, if you made 5 requests in the same second, the fifth request returns 75.
    X-Rate-Limit-ResetThe reset time in seconds. The value is 1.
  • For performance reasons, a single query can return a maximum of 1000 entities. To retrieve more entities, use pagination.

  • 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:

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

    Incorrect:

    graphql
    query MyQuery($parent: String!) {
      search(
        where: {
          AND: [
            { name: "_hasLayout", value: "true" }
            { name: "_parent", value: $parent }
          ]
        }
      ) {
        total
      }
    }
  • The mirrored schema might return inconsistent results when filtering or sorting by item text fields due to a different tokenization method.

Publishing behavior

  • 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 doesn't support contextual or 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.
  • Sitecore language fallback rules are applied at publish time and can only be enabled or disabled on an instance, and not on individual sites. If you change the language fallback configuration, you must republish the affected items.
  • 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.
  • If content resolvers use queries to retrieve a datasource (or its children), updated content might require republishing both the datasource item (or its children) and any partial design or page that uses it. To avoid double republishing for shared components, use integrated GraphQL and follow the Getting Component Specific Data guidance.
  • The LinkManager encodes spaces into dashes. This means that if two items under the same parent differ only by a space or a dash, such as Test Item and Test-Item, they will get the same identifier. As a result, only one of these items will be available on Experience Edge after publishing.
  • Using "*" as target hostname causes errors during publishing.

Capacity limits

LimitValue
Maximum number of entities in a single GraphQL query1000
Maximum number of sites per environment1000
Maximum number of redirects9990
Maximum size of a media item50 MB
Maximum combined number of paths supplied to includedPaths and excludedPaths100

includedPaths and excludedPaths

The combined number of paths supplied to the includedPaths and excludedPaths arguments in the siteInfo.routes field is limited to 100. This limit applies to the number of path strings you provide, not the number of items under those paths. For example, the following argument is counted as 4 paths, regardless of the number of entries each path has.

json
{
  "includedPaths": ["/products""/services"],
  "excludedPaths": ["/blog""/find-trials/study"]
}

You can use the following sample query to display all available routes for a site in a specific language to ensure you're below the limit:

graphql
query ($siteName: String!, $language: String!) {
  site {
    siteInfo(site: $siteName) {
      routes(language: $language) {
        total
        results {
          route {
            id
          }
          routePath
        }
        pageInfo {
          endCursor
          hasNext
        }
      }
    }
  }
}

Content and data modeling

  • Because templates are not stored as items, you can't directly retrieve their data using an item query. Attempting to do so will return null values. However, you can retrieve data for another type of published item that includes information about its template.

    Example query:

    graphql
    query {
      item(path: "/sitecore/content/<REST_OF_PATH>", language: "en") {
        id
        template {
          id
        }
      }
    }

    Example response:

    json
    {
      "data": {
        "item": {
          "id": "B6551C4C70084577AFEE4B74676F519A",
          "template": {
            "id": "0A7AA3735ED14E9B967822D3C5FAF6DF"
          }
        }
      }
    }
  • Experience Edge only utilizes a single content scope for the whole environment. Security tokens, query cache clearing, and webhooks cannot be limited by site.

  • Layout data in Experience Edge only supports the Default device layer in item presentation.

Media

  • 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/<SITE_NAME>/media/Images/Banners/promo-banner.jpg

  • When resizing animated images using query string parameters (for example, ?h=200&w=200), the total image area (width × height × number of frames) must be less than 100,000,000 pixels; otherwise, the resize request is rejected.

Unsupported features

  • Experience Edge doesn't support virtual folders.
  • Experience Edge doesn't support aliases.
  • Experience Edge doesn't support multiple site definitions pointing to the same start item.
  • Sitecore tracking and analytics do not reflect Experience Edge API requests.

Experience Edge applies strict rules when resolving incoming requests to site definitions. These rules can affect multisite and multilingual configurations.

Site definition resolution limitation

Experience Edge applies strict rules when resolving incoming requests to site definitions. These rules can affect multisite and multilingual configurations.

Single start item limitation (default behavior)

By default, Experience Edge doesn't support multiple site items that point to the same start item.

This means:

  • A logical site should typically be represented by one site item under /Settings/Site Grouping.
  • Creating multiple site items that share the same start item, even when using different hostnames, is unsupported by default.
  • If your organization migrated from Sitecore XP or SXA implementations, be aware that multiple site definitions pointing to the same start item are not supported in SitecoreAI.

If multiple site items share a start item without additional configuration, Experience Edge may not resolve requests correctly.

Exception: language-based site resolution

Experience Edge can be configured to support multiple site items that point to the same start item when each site item has a different default language.

To enable this behavior, set the following configuration option:

ExperienceEdge.SiteResolvingMatchCurrentLanguage = true

You can update the configuration using a patch file. You must perform a full site republish when this is completed.

When this setting is enabled:

  • Experience Edge resolves site definitions using the hostname and current language.
  • Multiple site items may reference the same start item, provided that:
    • Each site item has a unique default language, and
    • Each language is associated with a distinct hostname.

This configuration supports multilingual sites that require language-specific hostnames without duplicating content trees.

Important

This setting is disabled by default and must be explicitly enabled. After enabling it, you must publish the affected site items for the changes to take effect.

If you have suggestions for improving this article, let us know!