Skip to content
Merged
3 changes: 2 additions & 1 deletion public/__redirects
Original file line number Diff line number Diff line change
Expand Up @@ -202,13 +202,14 @@
/support/analytics/learn-more/cloudflare-analytics-with-workers/ /analytics/account-and-zone-analytics/analytics-with-workers/ 301
/support/analytics/learn-more/how-does-cloudflare-calculate-total-threats-stopped/ /analytics/account-and-zone-analytics/total-threats-stopped/ 301
/support/analytics/learn-more/status-code-metrics-in-cloudflare-site-analytics/ /analytics/account-and-zone-analytics/status-codes/ 301
/support/analytics/learn-more/understanding-cloudflare-network-analytics-v1/ /analytics/network-analytics/reference/network-analytics-v1/ 301
/support/analytics/learn-more/understanding-cloudflare-network-analytics-v1/ /analytics/graphql-api/migration-guides/network-analytics-v2/ 301
/support/analytics/learn-more/what-are-the-types-of-threats/ /analytics/account-and-zone-analytics/threat-types/ 301
/analytics/graphql-api/tutorials/build-your-own-analytics/ /analytics/graphql-api/tutorials/ 301
/analytics/graphql-api/tutorials/export-graphql-to-csv/ /analytics/graphql-api/tutorials/ 301
/analytics/analytics-integrations/google-cloud/ /analytics/analytics-integrations/ 301
/analytics/dashboards/ /log-explorer/custom-dashboards/ 301
/analytics/analytics-integrations/looker/ /analytics/analytics-integrations/ 301
/analytics/network-analytics/reference/network-analytics-v1/ /analytics/graphql-api/migration-guides/network-analytics-v2/ 301

# email-security
/email-security/reporting/search/detection-search/ /email-security/reporting/search/ 301
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
---
title: Deploy static sites to Workers without a configuration file
description: Wrangler now guides you through deploying static assets with interactive prompts and automatic configuration generation when no wrangler.jsonc file exists.
products:
- workers
date: 2025-09-09
---

Deploying static site to Workers is now easier. When you run `wrangler deploy [directory]` or `wrangler deploy --assets [directory]` without an existing [configuration file](/workers/wrangler/configuration/), [Wrangler CLI](/workers/wrangler/) now guides you through the deployment process with interactive prompts.

## Before and after

**Before:** Required remembering multiple flags and parameters
```bash
wrangler deploy --assets ./dist --compatibility-date 2025-09-09 --name my-project
```

**After:** Simple directory deployment with guided setup
```bash
wrangler deploy dist
# Interactive prompts handle the rest as shown in the example flow above
```

## What's new

**Interactive prompts for missing configuration:**
- Wrangler detects when you're trying to deploy a directory of static assets
- Prompts you to confirm the deployment type
- Asks for a project name (with smart defaults)
- Automatically sets the compatibility date to today

**Automatic configuration generation:**
- Creates a `wrangler.jsonc` file with your deployment settings
- Stores your choices for future deployments
- Eliminates the need to remember complex command-line flags

## Example workflow

```bash
# Deploy your built static site
wrangler deploy dist

# Wrangler will prompt:
✔ It looks like you are trying to deploy a directory of static assets only. Is this correct? … yes
✔ What do you want to name your project? … my-astro-site

# Automatically generates a wrangler.jsonc file and adds it to your project:
{
"name": "my-astro-site",
"compatibility_date": "2025-09-09",
"assets": {
"directory": "dist"
}
}

# Next time you run wrangler deploy, this will use the configuration in your newly generated wrangler.jsonc file
wrangler deploy
```

## Requirements

- You must use Wrangler version 4.24.4 or later in order to use this feature

3 changes: 1 addition & 2 deletions src/content/docs/analytics/network-analytics/index.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -27,5 +27,4 @@ For a technical deep-dive into Network Analytics, refer to our [blog post](https

* [Cloudflare GraphQL API](/analytics/graphql-api/)
* [Cloudflare Logpush](/logs/logpush/)
* [Migrating from Network Analytics v1 to Network Analytics v2](/analytics/graphql-api/migration-guides/network-analytics-v2/)
* [Cloudflare Network Analytics v1](/analytics/network-analytics/reference/network-analytics-v1/) <InlineBadge preset="deprecated" />
* [Migrating from Network Analytics v1 to Network Analytics v2](/analytics/graphql-api/migration-guides/network-analytics-v2/)

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,19 @@ sidebar:
order: 30

---
import { DashButton } from "~/components";

A browser session may close for a variety of reasons, occasionally due to connection errors or errors in the headless browser instance. As a best practice, wrap `puppeteer.connect` or `puppeteer.launch` in a [`try/catch`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/try...catch) statement.

The reason that a browser closed can be found on the Browser Rendering Dashboard in the [logs tab](https://dash.cloudflare.com/?to=/:account/workers/browser-renderingl/logs). When Cloudflare begins charging for the Browser Rendering API, we will not charge when errors are due to underlying Browser Rendering infrastructure.
To find the reason that a browser closed:

1. In the Cloudflare dashboard, go to the **Browser Rendering** page.

<DashButton url="/?to=/:account/workers/browser-rendering" />

2. Select the **Logs** tab.

When Cloudflare begins charging for the Browser Rendering API, we will not charge when errors are due to underlying Browser Rendering infrastructure.

| Reasons a session may end |
| ---------------------------------------------------- |
Expand Down
19 changes: 9 additions & 10 deletions src/content/docs/browser-rendering/platform/pricing.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ title: Pricing
sidebar:
order: 31
---
import { Details } from "~/components"
import { DashButton } from "~/components"

There are two ways to use Browser Rendering. Depending on the method you use, here is how billing works:
- [**REST API**](/browser-rendering/rest-api/): Charged for **Duration** only ($/browser hour)
Expand All @@ -15,14 +15,6 @@ There are two ways to use Browser Rendering. Depending on the method you use, he
| **Workers Free** | 10 minutes per day | 3 concurrent browsers | N/A |
| **Workers Paid** | 10 hours per month | 10 concurrent browsers (averaged monthly) | **1. REST API**: $0.09 per additional browser hour <br />**2. Workers Bindings**: $0.09 per additional browser hour <br /> $2.00 per additional concurrent browser |

<Details header="Where can I monitor my usage?">
You can monitor your Browser Rendering usage in the [Cloudflare dashboard](https://dash.cloudflare.com). Go to **Compute (Workers)** > **Browser Rendering**.
</Details>

<Details header="How is the number of concurrent browsers calculated?">
Cloudflare calculates concurrent browsers as the **monthly average of your daily peak usage**. In other words, we record **the peak number of concurrent browsers each day** and then average those values over the month. This approach reflects your typical traffic and ensures you are not disproportionately charged for brief spikes in browser concurrency.
</Details>

## Examples of Workers Paid pricing
<br/>
#### Example: REST API pricing
Expand Down Expand Up @@ -52,7 +44,14 @@ For **browser duration** and **concurrent browsers**:

### How do I estimate my Browser Rendering costs?

You can monitor your Browser Rendering usage in the [Cloudflare dashboard](https://dash.cloudflare.com). Go to **Compute (Workers)** > **Browser Rendering**. Then, you can use [the pricing page](/browser-rendering/platform/pricing/) to estimate your costs.
To monitor your Browser Rendering usage in the Cloudflare dashboard, go to the **Browser Rendering** page.

<DashButton url="/?to=/:account/workers/browser-rendering" />

Then, you can use [the pricing page](/browser-rendering/platform/pricing/) to estimate your costs.

### Do failed API calls, such as those that time out, add to billable browser hours?
No. If a request to the Browser Rendering REST API fails with a `waitForTimeout` error, the browser session is not charged.

### How is the number of concurrent browsers calculated?
Cloudflare calculates concurrent browsers as the **monthly average of your daily peak usage**. In other words, we record **the peak number of concurrent browsers each day** and then average those values over the month. This approach reflects your typical traffic and ensures you are not disproportionately charged for brief spikes in browser concurrency.
8 changes: 5 additions & 3 deletions src/content/docs/browser-rendering/rest-api/index.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ title: REST API
sidebar:
order: 2
---
import { DashButton } from "~/components";

The REST API is a RESTful interface that provides endpoints for common browser actions such as capturing screenshots, extracting HTML content, generating PDFs, and more.
The following are the available options:
Expand All @@ -22,8 +23,9 @@ Before you begin, make sure you [create a custom API Token](/fundamentals/api/ge

:::note[Note]

You can monitor Browser Rendering usage in two ways:
- [Cloudflare dashboard](https://dash.cloudflare.com/?to=/:account/workers/browser-rendering): View aggregate metrics, including total REST API requests and total browser hours used.
- `X-Browser-Ms-Used` header: Returned in every REST API response, reporting browser time used for that request (in milliseconds).
You can monitor Browser Rendering usage in two ways:
- In the Cloudflare dashboard, go to the **Browser Rendering** page to view aggregate metrics, including total REST API requests and total browser hours used.
<DashButton url="/?to=/:account/workers/browser-rendering" />
- `X-Browser-Ms-Used` header: Returned in every REST API response, reporting browser time used for that request (in milliseconds).

:::
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,6 @@ Nevertheless, the value you set via Cache Rule will be ignored if `Cache-Control

## Set Browser Cache TTL

The Cloudflare UI and [API](/api/resources/zones/subresources/settings/methods/edit/) both prohibit setting Browser Cache TTL to 0 for non-Enterprise domains.

:::note[Note]


Expand All @@ -34,11 +32,3 @@ If you modify cached assets, the new asset is not displayed to repeat visitors b
3. Under **Browser Cache TTL**, select the drop-down menu to select the desired cache expiration time.

The **Respect Existing Headers** option tells Cloudflare to honor the settings in the `Cache-Control` headers from your origin web server.

:::note[Respect Existing Headers Availability]


For all plan types, you can set Browser Cache TTL to Respect Existing Headers at a zone level (zone setting) or you can use a Cache Rule.


:::
16 changes: 15 additions & 1 deletion src/content/docs/dns/troubleshooting/faq.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -241,7 +241,21 @@ example.com CNAME example.com.cdn.cloudflare.net
## Why am I getting a warning for hostname not covered even if I have a custom certificate?

If the [custom certificate](/ssl/edge-certificates/custom-certificates/) has been in place before our new certificate management pipeline, the following warning is displayed but can be discarded.

`This hostname is not covered by a certificate.`

The warning will be gone when you upload a new custom certificate, or start using another type of certificate for this hostname.


---

## I've updated my CNAME to a new SaaS provider, but I still see content from the old provider

When a SaaS provider is leveraging our [Cloudflare for SaaS](/cloudflare-for-platforms/cloudflare-for-saas/) solution, they create a [Custom Hostname](/cloudflare-for-platforms/cloudflare-for-saas/domain-support/) on their Cloudflare zone.
Then a [CNAME record needs to be created](/cloudflare-for-platforms/cloudflare-for-saas/saas-customers/how-it-works/) on the client zone, to point to the SaaS provider service.
When changing SaaS providers, if the old SaaS provider provisioned a specific custom hostname for the record (`mystore.example.com`) and the new SaaS provider provisioned a wildcard custom hostname (`*.example.com`), the old custom hostname will still take precedence.
This is expected as per the [Certificate and hostname priority](https://developers.cloudflare.com/ssl/reference/certificate-and-hostname-priority/#hostname-priority).

In this case there are 2 ways forward:
- (*Recommended*) Ask the new SaaS provider to provision a specific custom hostname for you instead of the wildcard (`mystore.example.com` instead of `*.example.com`).
- Ask the Super Administrator of your account to contact [Cloudflare Support](/support/contacting-cloudflare-support/) to request an update of the SaaS configuration.

2 changes: 1 addition & 1 deletion src/content/docs/hyperdrive/get-started.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ This guide will instruct you through:

:::note

Hyperdrive currently works with PostgreSQL, MySQL and many compatible databases. This includes CockroachDB and Materialize (which are PostgreSQL-compatible), and Planetscale.
Hyperdrive currently works with PostgreSQL, MySQL and many compatible databases. This includes CockroachDB and Materialize (which are PostgreSQL-compatible), and PlanetScale.

Learn more about the [databases that Hyperdrive supports](/hyperdrive/reference/supported-databases-and-features).

Expand Down
2 changes: 1 addition & 1 deletion src/content/docs/hyperdrive/index.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ Turn your existing regional database into a globally distributed database.

Hyperdrive is a service that accelerates queries you make to existing databases, making it faster to access your data from across the globe from [Cloudflare Workers](/workers/), irrespective of your users' location.

Hyperdrive supports any Postgres or MySQL database, including those hosted on AWS, Google Cloud, Azure, Neon and Planetscale. Hyperdrive also supports Postgres-compatible databases like CockroachDB and Timescale.
Hyperdrive supports any Postgres or MySQL database, including those hosted on AWS, Google Cloud, Azure, Neon and PlanetScale. Hyperdrive also supports Postgres-compatible databases like CockroachDB and Timescale.
You do not need to write new code or replace your favorite tools: Hyperdrive works with your existing code and tools you use.

Use Hyperdrive's connection string from your Cloudflare Workers application with your existing Postgres drivers and object-relational mapping (ORM) libraries:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ Hyperdrive also supports databases that are compatible with the Postgres or MySQ
| Timescale | ✅ | All | See the [Timescale guide](/hyperdrive/examples/connect-to-postgres/postgres-database-providers/timescale/) to connect. |
| Materialize | ✅ | All | Postgres-compatible. Refer to the [Materialize guide](/hyperdrive/examples/connect-to-postgres/postgres-database-providers/materialize/) to connect. |
| CockroachDB | ✅ | All | Postgres-compatible. Refer to the [CockroachDB](/hyperdrive/examples/connect-to-postgres/postgres-database-providers/cockroachdb/) guide to connect. |
| Planetscale | ✅ | All | PlanetScale provides MySQL-compatible and PostgreSQL databases |
| PlanetScale | ✅ | All | PlanetScale provides MySQL-compatible and PostgreSQL databases |
| MariaDB | ✅ | All | MySQL-compatible. |

## Supported TLS (SSL) modes
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ sidebar:
order: 3

---
import { DashButton } from "~/components";

## Build an AI application with Hono and Workers

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ sidebar:
order: 2
---

import { Render, PackageManagers } from "~/components";
import { Render, PackageManagers, DashButton } from "~/components";

## Build and deploy your first Worker

Expand Down
Loading
Loading