Repository: cloudflare/cloudflare-docs
Pull request #21046: [Release notes] Stop pulling Wrangler release notes from GitHub API
Author: login: kodster28
Labels: name: product:workers
description: Related to Workers product
name: size/s
Created: 2025-03-21T19:07:39Z | Merged: 2025-03-27T15:46:35Z

### Summary

With the Wrangler team more consistently writing up [summarized changelog entries](https://developers.cloudflare.com/changelog/2025-03-13-wrangler-v4/), think it's time to re-think having the [Wrangler release notes](https://developers.cloudflare.com/workers/platform/changelog/wrangler/) ported into docs.

The reason why is b/c the GitHub API usually ends up failing about `8 builds` a day as a result of [rate limiting](https://github.com/cloudflare/cloudflare-docs/actions/runs/13993938229/job/39184210591#step:6:1007). Given that the information is also already clearly available in GitHub (with an RSS feed there too), there doesn't appear to be much added value in also surfacing them in docs.

Theoretically, I suppose we could rewrite the component.... but there's a lot of other investment that needs to go into other things changelog so I'd rather spend the time there.

cc: @GregBrimble / @mikenomitch, fyi that this is an option we're considering. Open to having a convo if I'm missing pieces related to ☝️ .

### Additional context on timing

This has been more painful recently and -- with Dev Week coming up -- we don't want to be blocking any docs previews or publishes from going live.



Diff:
diff --git a/public/__redirects b/public/__redirects
index 71f7ee93497a7ce..e56ebf8d4522c2d 100644
--- a/public/__redirects
+++ b/public/__redirects
@@ -1461,6 +1461,8 @@
 /workers/learning/fetch-event-lifecycle/ /workers/runtime-apis/fetch-event/ 301
 /workers/learning/getting-started/ /workers/get-started/quickstarts/ 301
 /workers/learning/profiling-workers/ /workers/reference/how-workers-works/ 301
+/workers/platform/changelog/wrangler/ https://github.com/cloudflare/workers-sdk/releases 301
+/workers/platform/changelog/wrangler/index.xml https://github.com/cloudflare/workers-sdk/releases.atom 301
 /workers/platform/scripts/ /api/resources/workers/subresources/scripts/methods/list/ 301
 /workers/platform/services/ /workers/runtime-apis/bindings/service-bindings/ 301
 /workers/platform/web-assembly/ /workers/platform/webassembly/ 301
diff --git a/src/content/docs/workers/platform/changelog/wrangler.mdx b/src/content/docs/workers/platform/changelog/wrangler.mdx
index d7c45376b3899be..27c889e97727f9f 100644
--- a/src/content/docs/workers/platform/changelog/wrangler.mdx
+++ b/src/content/docs/workers/platform/changelog/wrangler.mdx
@@ -1,16 +1,5 @@
 ---
-pcx_content_type: changelog
+pcx_content_type: navigation
 title: Wrangler
-release_notes_file_name:
-  - wrangler
-head:
-  - tag: title
-    content: Wrangler Changelog
-description: Review recent changes to Cloudflare Wrangler.
+external_link: https://github.com/cloudflare/workers-sdk/releases
 ---
-
-import { ProductReleaseNotes } from "~/components";
-
-{/* <!-- All changelog entries are pulled directly from https://api.github.com/repos/cloudflare/workers-sdk/releases and manipulated in the src/util/release-notes.ts file (getWranglerChangelog() function). This is unique compared to other changelog entries. --> */}
-
-<ProductReleaseNotes />
diff --git a/src/pages/[...changelog].xml.ts b/src/pages/[...changelog].xml.ts
index f7b19b262b69544..d1fe3795a55cc46 100644
--- a/src/pages/[...changelog].xml.ts
+++ b/src/pages/[...changelog].xml.ts
@@ -2,7 +2,6 @@ import rss from "@astrojs/rss";
 import { getCollection, getEntry } from "astro:content";
 import type { APIRoute } from "astro";
 import { marked, type Token } from "marked";
-import { getWranglerReleases } from "~/util/release-notes";
 import { slug } from "github-slugger";
 import { entryToString } from "~/util/container";
 
@@ -57,10 +56,6 @@ export const GET: APIRoute = async (context) => {
 		);
 	});
 
-	if (entry.data.release_notes_file_name?.includes("wrangler")) {
-		releaseNotes.push(await getWranglerReleases());
-	}
-
 	const mapped = await Promise.all(
 		releaseNotes.flatMap((product) => {
 			return product.data.entries.map(async (entry) => {
diff --git a/src/pages/release-notes/index.xml.ts b/src/pages/release-notes/index.xml.ts
index 294f67268845f4b..106468d71a1a707 100644
--- a/src/pages/release-notes/index.xml.ts
+++ b/src/pages/release-notes/index.xml.ts
@@ -2,7 +2,6 @@ import rss from "@astrojs/rss";
 import { getCollection, getEntry } from "astro:content";
 import type { APIRoute } from "astro";
 import { marked, type Token } from "marked";
-import { getWranglerReleases } from "~/util/release-notes";
 import { slug } from "github-slugger";
 import { entryToString } from "~/util/container";
 
@@ -21,8 +20,6 @@ export const GET: APIRoute = async (context) => {
 		return e.id !== "api-deprecations";
 	});
 
-	releaseNotes.push(await getWranglerReleases());
-
 	const mapped = await Promise.all(
 		releaseNotes.flatMap((product) => {
 			return product.data.entries.map(async (entry) => {
diff --git a/src/util/release-notes.ts b/src/util/release-notes.ts
index 27598cda13dd382..94febe28d8bea4f 100644
--- a/src/util/release-notes.ts
+++ b/src/util/release-notes.ts
@@ -1,6 +1,4 @@
-import { z } from "astro:schema";
 import { getCollection } from "astro:content";
-import { type CollectionEntry } from "astro:content";
 
 export async function getReleaseNotes(opts?: {
 	filter?: Parameters<typeof getCollection<"release-notes">>[1];
@@ -9,9 +7,7 @@ export async function getReleaseNotes(opts?: {
 }) {
 	let releaseNotes;
 
-	if (opts?.wranglerOnly) {
-		releaseNotes = [await getWranglerReleases()];
-	} else if (opts?.filter) {
+	if (opts?.filter) {
 		releaseNotes = await getCollection("release-notes", opts.filter);
 	} else {
 		releaseNotes = await getCollection("release-notes");
@@ -58,50 +54,3 @@ export async function getReleaseNotes(opts?: {
 
 	return { products, productAreas, releaseNotes: entries };
 }
-
-export async function getWranglerReleases(): Promise<
-	CollectionEntry<"release-notes">
-> {
-	const response = await fetch(
-		"https://api.github.com/repos/cloudflare/workers-sdk/releases?per_page=100",
-	);
-
-	if (!response.ok) {
-		throw new Error(
-			`[GetWranglerReleases] Received ${response.status} response from GitHub API.`,
-		);
-	}
-
-	const json = await response.json();
-
-	let releases = z
-		.object({
-			published_at: z.coerce.date(),
-			name: z.string(),
-			body: z.string(),
-		})
-		.array()
-		.parse(json);
-
-	releases = releases.filter((x) => x.name.startsWith("wrangler@"));
-
-	return {
-		id: "wrangler",
-		collection: "release-notes",
-		data: {
-			link: "/workers/platform/changelog/wrangler/",
-			productName: "wrangler",
-			productLink: "/workers/wrangler/",
-			productArea: "Developer platform",
-			productAreaLink: "/workers/platform/changelog/platform/",
-			entries: releases.map((release) => {
-				return {
-					publish_date: release.published_at.toISOString().substring(0, 10),
-					title: release.name.split("@")[1],
-					link: `https://github.com/cloudflare/workers-sdk/releases/tag/wrangler%40${release.name.split("@")[1]}`,
-					description: release.body,
-				};
-			}),
-		},
-	};
-}


Reviews:
user: login: kodster28
state: COMMENTED
author_association: COLLABORATOR
submitted_at: 2025-03-26T16:04:43Z
user: login: KianNH
state: APPROVED
author_association: MEMBER
submitted_at: 2025-03-27T15:42:38Z

Review comments:
diff_hunk: @@ -1461,6 +1461,7 @@
 /workers/learning/fetch-event-lifecycle/ /workers/runtime-apis/fetch-event/ 301
 /workers/learning/getting-started/ /workers/get-started/quickstarts/ 301
 /workers/learning/profiling-workers/ /workers/reference/how-workers-works/ 301
+/workers/platform/changelog/wrangler/ https://github.com/cloudflare/workers-sdk/releases 301
path: public/__redirects
user: login: kodster28
body: Note -> Add github rss redirect too
created_at: 2025-03-26T16:04:42Z
author_association: COLLABORATOR

PR comments:
user: login: hyperlint-ai-deprecated[bot]
created_at: 2025-03-21T19:08:00Z
body: Howdy and thanks for contributing to our repo. The Cloudflare team reviews new, external PRs within **two (2) weeks**. If it's been two weeks or longer without any movement, please tag the PR **Assignees** in a comment.

We review internal PRs within **1 week**. If it's something urgent or has been sitting without a comment, start a thread in the *Developer Docs* space internally.

---

## PR Change Summary

Deprecation of Wrangler release notes in favor of summarized changelog entries.
- Removed the Wrangler release notes component from the documentation.
- Updated the content type from changelog to navigation.
- Added an external link to the GitHub releases page for Wrangler.


**Modified Files**

- `src/content/docs/workers/platform/changelog/wrangler.mdx`


 







---

<details>

<summary>How can I customize these reviews?</summary>

Check out the [Hyperlint AI Reviewer docs](https://docs.hyperlint.com/guides/ai-reviewer/) for more information on how to customize the review.

If you just want to ignore it on this PR, you can add the `hyperlint-ignore` label to the PR. Future changes won't trigger a Hyperlint review.

Note specifically for link checks, we only check the first 30 links in a file and we cache the results for several hours (for instance, if you just added a page, you might experience this). Our recommendation is to add `hyperlint-ignore` to the PR to ignore the link check for this PR.
</details>

<details>
<summary>What is Hyperlint?</summary>

[Hyperlint](https://hyperlint.com) is an AI agent that helps you write, edit, and maintain your documentation.

Learn more about the [Hyperlint AI reviewer](https://docs.hyperlint.com/guides/ai-reviewer/) and the checks that we can run on your documentation.

</details>
author_association: CONTRIBUTOR
user: login: github-actions[bot]
created_at: 2025-03-21T19:22:56Z
body: **Preview URL:** https://9d586814.preview.developers.cloudflare.com
**Preview Branch URL:** https://wrangler-changelog-deprecation.preview.developers.cloudflare.com

**Files with changes (up to 15)**

| Original Link | Updated Link |
| --- | --- |
| [https://developers.cloudflare.com/workers/platform/changelog/](https://developers.cloudflare.com/workers/platform/changelog/) | [https://wrangler-changelog-deprecation.preview.developers.cloudflare.com/workers/platform/changelog/](https://wrangler-changelog-deprecation.preview.developers.cloudflare.com/workers/platform/changelog/) |
author_association: CONTRIBUTOR