Application Performance Release Notes

Last updated: Apr 1, 2026

  • Mar 31, 2026
    • Date parsed from source:
      Mar 31, 2026
    • First seen by Releasebot:
      Apr 1, 2026
    Cloudflare logo

    Application Performance by Cloudflare

    DNS - Internal DNS - now in open beta

    Application Performance adds Internal DNS in open beta for Enterprise Cloudflare Gateway customers.

    Internal DNS is now in open beta.

    Who can use it?

    Internal DNS is bundled as a part of Cloudflare Gateway and is now available to every Enterprise customer with one of the following subscriptions:

    • Cloudflare Zero Trust Enterprise
    • Cloudflare Gateway Enterprise

    To learn more and get started, refer to the Internal DNS documentation.

    Original source Report a problem
  • Mar 24, 2026
    • Date parsed from source:
      Mar 24, 2026
    • First seen by Releasebot:
      Mar 25, 2026
    Cloudflare logo

    Application Performance by Cloudflare

    Cache - Cache Response Rules

    Application Performance adds Cache Response Rules in Cloudflare Cache Rules, giving users control over origin responses before caching. It can adjust Cache-Control, manage cache tags, and strip headers like Set-Cookie without changing the origin.

    You can now control how Cloudflare handles origin responses without changing your origin. Cache Response Rules let you modify Cache-Control directives, manage cache tags, and strip headers like Set-Cookie from origin responses before they reach Cloudflare's cache. Whether traffic is cached or passed through dynamically, these rules give you control over origin response behavior that was previously out of reach.

    What changed

    Cache Rules previously only operated on request attributes. Cache Response Rules introduce a new response phase that evaluates origin responses and lets you act on them before caching. You can now:

    • Modify Cache-Control directives: Set or remove individual directives like no-store, no-cache, max-age, s-maxage, stale-while-revalidate, immutable, and more. For example, remove a no-cache directive your origin sends so Cloudflare can cache the asset, or set an s-maxage to control how long Cloudflare stores it.
    • Set a different browser Cache-Control: Send a different Cache-Control header downstream to browsers and other clients than what Cloudflare uses internally, giving you independent control over edge and browser caching strategies.
    • Manage cache tags: Add, set, or remove cache tags on responses, including converting tags from another CDN's header format into Cloudflare's Cache-Tag header. This is especially useful if you are migrating from a CDN that uses a different tag header or delimiter.
    • Strip headers that block caching: Remove Set-Cookie, ETag, or Last-Modified headers from origin responses before caching, so responses that would otherwise be treated as uncacheable can be stored and served from cache.

    Benefits

    • No origin changes required: Fix caching behavior entirely from Cloudflare, even when your origin configuration is locked down or managed by a different team.
    • Simpler CDN migration: Match caching behavior from other CDN providers without rewriting your origin. Translate cache tag formats and override directives that do not align with Cloudflare's defaults.
    • Native support, fewer workarounds: Functionality that previously required workarounds is now built into Cache Rules with full Tiered Cache compatibility.
    • Fine-grained control: Use expressions to match on request and response attributes, then apply precise cache settings per rule. Rules are stackable and composable with existing Cache Rules.

    Get started

    Configure Cache Response Rules in the Cloudflare dashboard under Caching > Cache Rules, or via the Rulesets API. For more details, refer to the Cache Rules documentation.

    Original source Report a problem
  • All of your release notes in one feed

    Join Releasebot and get updates from Cloudflare and hundreds of other software products.

  • Mar 20, 2026
    • Date parsed from source:
      Mar 20, 2026
    • First seen by Releasebot:
      Mar 21, 2026
    Cloudflare logo

    Application Performance by Cloudflare

    DNS - DNS Analytics for Customer Metadata Boundary set to EU region

    Application Performance adds DNS Analytics for CMB=EU customers, bringing EU data residency for analytics and DNS Firewall Analytics support while keeping metadata stored and queried in the EU region.

    DNS Analytics is now available for customers with Customer Metadata Boundary (CMB) set to EU. Query your DNS analytics data while keeping metadata stored in the EU region.

    This update includes:

    • DNS Analytics — Access the same DNS analytics experience for zones in CMB=EU accounts.
    • EU data residency — Analytics data is stored and queried from the EU region, meeting data localization requirements.
    • DNS Firewall Analytics — DNS Firewall analytics is now supported for CMB=EU customers.

    Availability

    Available to customers with the Data Localization Suite who have Customer Metadata Boundary configured for the EU region.

    Where to find it

    Authoritative DNS: In the Cloudflare dashboard, select your zone and go to the Analytics page.

    Go to Analytics

    DNS Firewall: In the Cloudflare dashboard, go to the DNS Firewall Analytics page.

    Go to Analytics

    For more information, refer to DNS Analytics and DNS Firewall Analytics.

    Original source Report a problem
  • Feb 26, 2026
    • Date parsed from source:
      Feb 26, 2026
    • First seen by Releasebot:
      Feb 26, 2026
    Cloudflare logo

    Application Performance by Cloudflare

    Cache - Asynchronous stale-while-revalidate

    Cloudflare makes stale-while-revalidate asynchronous, serving stale cached content during background revalidation. The first post-expiration request triggers background revalidation with updating status, followed by fresh content on HIT. Available for Free, Pro, and Business zones with staged Enterprise rollout.

    Overview

    Cloudflare's stale-while-revalidate support is now fully asynchronous. Previously, the first request for a stale (expired) asset in cache had to wait for an origin response, after which that visitor received a REVALIDATED or EXPIRED status. Now, the first request after the asset expires triggers revalidation in the background and immediately receives stale content with an UPDATING status. All following requests also receive stale content with an UPDATING status until the origin responds, after which subsequent requests receive fresh content with a HIT status.
    stale-while-revalidate is a Cache-Control directive set by your origin server that allows Cloudflare to serve an expired cached asset while a fresh copy is fetched from the origin.
    Asynchronous revalidation brings:

    Asynchronous revalidation brings:

    • Lower latency: No visitor is waiting for the origin when the asset is already in cache. Every request is served from cache during revalidation.
    • Consistent experience: All visitors receive the same cached response during revalidation.
    • Reduced error exposure: The first request is no longer vulnerable to origin timeouts or errors. All visitors receive a cached response while revalidation happens in the background.

    Availability

    This change is live for all Free, Pro, and Business zones. Approximately 75% of Enterprise zones have been migrated, with the remaining zones rolling out throughout the quarter.

    Get started

    To use this feature, make sure your origin includes the stale-while-revalidate directive in the Cache-Control header. Refer to the Cache-Control documentation for details.

    Original source Report a problem
  • Jan 27, 2026
    • Date parsed from source:
      Jan 27, 2026
    • First seen by Releasebot:
      Jan 28, 2026
    Cloudflare logo

    Application Performance by Cloudflare

    Control request and response body buffering in Configuration Rules

    Cloudflare introduces configurable buffering for HTTP request and response bodies via Configuration Rules. Choose modes like standard, full, or none to tailor inspection for WAF and Bot Management, with caution that disabling buffering may impact security and requires the latest proxy.

    Request body buffering

    Controls how Cloudflare buffers HTTP request bodies before forwarding them to your origin server:

    Mode Behavior Standard (default) Cloudflare can inspect a prefix of the request body for enabled functionality such as WAF and Bot Management. Full Buffers the entire request body before sending to origin. None No buffering — the request body streams directly to origin without inspection.

    Response body buffering

    Controls how Cloudflare buffers HTTP response bodies before forwarding them to the client:

    Mode Behavior Standard (default) Cloudflare can inspect a prefix of the response body for enabled functionality. None No buffering — the response body streams directly to the client without inspection.

    Setting body buffering to None may break security functionality that requires body inspection, including the Web Application Firewall (WAF) and Bot Management. Ensure that any paths where you disable buffering do not require security inspection.

    These settings only take effect on zones running Cloudflare's latest CDN proxy. Enterprise customers can contact their account team to enable the latest proxy on their zones.

    API example

    {
      "action": "set_config",
      "action_parameters": {
        "request_body_buffering": "standard",
        "response_body_buffering": "none"
      }
    }
    

    For more information, refer to Configuration Rules.

    Original source Report a problem
  • Jan 22, 2026
    • Date parsed from source:
      Jan 22, 2026
    • First seen by Releasebot:
      Jan 23, 2026
    Cloudflare logo

    Application Performance by Cloudflare

    New cryptographic functions — encode_base64() and sha256()

    Cloudflare Rulesets gains new encode_base64 and sha256 functions to build signed request headers in rule expressions. Encode supports standard and URL‑safe Base64 with optional padding; sha256 hashing is an Enterprise add‑on. These changes enable ready‑to‑use request signing.

    New functions

    Function Description Availability encode_base64(input, flags) Encodes a string to Base64 format. Optional flags parameter: u for URL-safe encoding, p for padding (adds = characters to make the output length a multiple of 4, as required by some systems). By default, output is standard Base64 without padding. All plans (in header transform rules) sha256(input) Computes a SHA256 hash of the input string. Requires enablement

    Note
    The sha256() function is available as an Enterprise add-on and requires a specific entitlement. Contact your account team to enable it.

    Examples

    Encode a string to Base64 format:

    encode_base64("hello world")
    

    Returns: aGVsbG8gd29ybGQ

    Encode a string to Base64 format with padding:

    encode_base64("hello world", "p")
    

    Returns: aGVsbG8gd29ybGQ=

    Perform a URL-safe Base64 encoding of a string:

    encode_base64("hello world", "u")
    

    Returns: aGVsbG8gd29ybGQ

    Compute the SHA256 hash of a secret token:

    sha256("my-token")
    

    Returns a hash that your origin can validate to authenticate requests.

    Compute the SHA256 hash of a string and encode the result to Base64 format:

    encode_base64(sha256("my-token"))
    

    Combines hashing and encoding for systems that expect Base64-encoded signatures.

    For more information, refer to the Functions reference.

    Original source Report a problem
  • Jan 20, 2026
    • Date parsed from source:
      Jan 20, 2026
    • First seen by Releasebot:
      Jan 20, 2026
    Cloudflare logo

    Application Performance by Cloudflare

    New functions for array and map operations

    Cloudflare Rulesets gain advanced expression tools with split, join, has_key, and has_value to evaluate arrays and maps. Use cases include country-based blocking and header-aware rules, with practical examples for headers and logging.

    New functions

    Function Description split(source, delimiter) Splits a string into an array of strings using the specified delimiter. join(array, delimiter) Joins an array of strings into a single string using the specified delimiter. has_key(map, key) Returns true if the specified key exists in the map. has_value(map, value) Returns true if the specified value exists in the map.

    Example use cases

    Check if a country code exists in a header list:

    has_value(split(http.response.headers["x-allow-country"][0], ","), ip.src.country)
    

    Check if a specific header key exists:

    has_key(http.request.headers, "x-custom-header")
    

    Join array values for logging or comparison:

    join(http.request.headers.names, ", ")
    

    For more information, refer to the
    Functions reference.

    Original source Report a problem
  • Jan 12, 2026
    • Date parsed from source:
      Jan 12, 2026
    • First seen by Releasebot:
      Jan 12, 2026
    Cloudflare logo

    Application Performance by Cloudflare

    Metro code field now available in Rules

    The ip.src.metro_code field in the Ruleset Engine is now populated with DMA (Designated Market Area) data.
    You can use this field to build rules that target traffic based on geographic market areas, enabling more granular location-based policies for your applications.

    Field details

    Field Type Description ip.src.metro_code String null

    Example filter expression:

    ip.src.metro_code eq "501"
    

    For more information, refer to the Fields reference.

    Original source Report a problem
  • Nov 25, 2025
    • Date parsed from source:
      Nov 25, 2025
    • First seen by Releasebot:
      Dec 10, 2025
    Cloudflare logo

    Application Performance by Cloudflare

    Audit Logs for Cache Purge Events

    New detailed audit logs for cache purge events let you see who, what, and when for purge requests across all methods, with dashboard and API access.

    Audit logs for purge events

    You can now review detailed audit logs for cache purge events, giving you visibility into what purge requests were sent, what they contained, and by whom. Audit your purge requests via the Dashboard or API for all purge methods:

    • Purge everything
    • List of prefixes
    • List of tags
    • List of hosts
    • List of files

    Example

    The detailed audit payload is visible within the Cloudflare Dashboard (under Manage Account > Audit Logs ) and via the API. Below is an example of the Audit Logs v2 payload structure:

    {
      "action": {
        "result": "success",
        "type": "create"
      },
      "actor": {
        "id": "1234567890abcdef",
        "email": "[email protected]",
        "type": "user"
      },
      "resource": {
        "product": "purge_cache",
        "request": {
          "files": [
            "https://example.com/images/logo.png",
            "https://example.com/css/styles.css"
          ]
        },
      },
      "zone": {
        "id": "023e105f4ecef8ad9ca31a8372d0c353",
        "name": "example.com"
      }
    }
    

    Get started

    To get started, refer to the Audit Logs documentation.

    Original source Report a problem
  • Nov 7, 2025
    • Date parsed from source:
      Nov 7, 2025
    • First seen by Releasebot:
      Dec 10, 2025
    Cloudflare logo

    Application Performance by Cloudflare

    Inspect Cache Keys with Cloudflare Trace

    Cloudflare Trace now shows the exact cache key for each request, helping you troubleshoot hits and misses and verify custom cache keys from Cache Rules or Page Rules. Access Trace via dashboard or API for ad hoc debugging or automated monitoring.

    Example scenario

    You can now see the exact cache key generated for any request directly in Cloudflare Trace. This visibility helps you troubleshoot cache hits and misses, and verify that your Custom Cache Keys 1 configured via Cache Rules or Page Rules 2 are working as intended.

    Previously, diagnosing caching behavior required inferring the key from configuration settings. Now, you can confirm that your custom logic for headers, query strings, and device types is correctly applied.

    Access Trace via the dashboard or API, either manually for ad-hoc debugging or automated as part of your quality-of-service monitoring.

    If you have a Cache Rule that segments content based on a specific cookie (for example, user_region ), run a Trace with that cookie present to confirm the user_region value appears in the resulting cache key.

    The Trace response includes the cache key in the cache object:

    {
      "step_name": "request",
      "type": "cache",
      "matched": true,
      "public_name": "Cache Parameters",
      "cache": {
        "key": {
          "zone_id": "023e105f4ecef8ad9ca31a8372d0c353",
          "scheme": "https",
          "host": "example.com",
          "uri": "/images/hero.jpg"
        },
        "key_string": "023e105f4ecef8ad9ca31a8372d0c353::::https://example.com/images/hero.jpg:::::"
      }
    }
    

    Get started

    To learn more, refer to the Trace documentation and our guide on Custom Cache Keys.

    Original source Report a problem

Related products