diff --git a/docs/develop/java/activities/standalone-activities.mdx b/docs/develop/java/activities/standalone-activities.mdx
index 24d316b4f8..e2341df20f 100644
--- a/docs/develop/java/activities/standalone-activities.mdx
+++ b/docs/develop/java/activities/standalone-activities.mdx
@@ -15,6 +15,7 @@ import { ReleaseNoteHeader } from '@site/src/components';
[Standalone Activities](/standalone-activity) are Activities that run independently, without being orchestrated by a
diff --git a/docs/develop/typescript/best-practices/data-handling/external-storage.mdx b/docs/develop/typescript/best-practices/data-handling/external-storage.mdx
index fda6df5e20..d4aefe8ebd 100644
--- a/docs/develop/typescript/best-practices/data-handling/external-storage.mdx
+++ b/docs/develop/typescript/best-practices/data-handling/external-storage.mdx
@@ -12,7 +12,7 @@ description: Offload large payloads to external storage using the claim check pa
import { ReleaseNoteHeader } from '@site/src/components';
-
+
APIs and configuration may change before General Availability. Join the
[#large-payloads Slack channel](https://temporalio.slack.com/archives/C09VA2DE15Y) to provide feedback or ask for
help.
diff --git a/docs/evaluate/development-production-features/release-stages.mdx b/docs/evaluate/development-production-features/release-stages.mdx
index d4a112cb0f..08b2c94227 100644
--- a/docs/evaluate/development-production-features/release-stages.mdx
+++ b/docs/evaluate/development-production-features/release-stages.mdx
@@ -8,6 +8,8 @@ tags:
- Temporal
---
+import { FeatureStageTable } from '@site/src/components';
+
:::tip CHANGELOG
To stay up-to-date with the latest feature changes, visit the [changelog](https://temporal.io/change-log).
:::
@@ -27,6 +29,8 @@ Product Release Guide Expectations:
| **Feature Cloud pricing** | No additional cost. | Pricing changes are kept to a minimum. | Pricing is stable. |
| **Feature Interoperability** | Limited. | Features are compatible with each other, unless otherwise stated. | Features are compatible with each other. |
+
+
## Pre-release {/* #pre-release */}
**Access:** Most Pre-release features are released in the open source Temporal software and are publicly available.
diff --git a/readme/COMPONENTS.md b/readme/COMPONENTS.md
index 4fb41058e4..436438bfdb 100644
--- a/readme/COMPONENTS.md
+++ b/readme/COMPONENTS.md
@@ -27,6 +27,8 @@ Whether you’re using core components or experimenting with new ones, this guid
- [Using SdkGuideLinks](#using-sdkguidelinks)
- [Using AnnotatedCode](#using-annotatedcode)
- [Using ReleaseNoteHeader](#using-release-note-header)
+- [Using FeatureStageLabel](#using-featurestagelabel)
+- [Using FeatureStageTable](#using-featurestagetable)
## Finding Components
@@ -521,9 +523,22 @@ Role: To provide a consistent component for adding, updating, and removing relea
Usage:
-In `/src/constants`, update the [`featureReleaseTypes.js`](../src/constants/featureReleaseTypes.js) file to include the release stage for the feature you want.
+In `/src/constants`, update the [`featureReleaseTypes.js`](../src/constants/featureReleaseTypes.js) file to include the feature you want, its stage, and its display metadata (used by the `FeatureStageTable` on the [release stages page](../docs/evaluate/development-production-features/release-stages.mdx)).
-Example: `serverlessWorkers: "prerelease"`
+```js
+serverlessWorkers: {
+ stage: "prerelease",
+ name: "Serverless Workers",
+ description: "Run a Temporal Worker as a serverless function invoked by Temporal Cloud.",
+ infoLink: "/serverless-workers",
+ // Optional — only add this when a feature's stage genuinely differs by SDK
+ // language. Keys must match ReleaseNoteHeader's SDK language vocabulary
+ // (".NET" | "Go" | "Java" | "PHP" | "Python" | "Ruby" | "Rust" | "TypeScript").
+ languageOverrides: {
+ Java: "publicPreview",
+ },
+},
+```
Then on the pages you want it to show, add this to the top of the content, right below the frontmatter. The `featureName` prop is how you share the release stages you add to `featureReleaseTypes.js` across pages.
@@ -569,4 +584,42 @@ Use the `href` prop to make the `children` content a link.
>
Sign up for updates to be notified when Serverless Workers reach Public Preview.
-```
\ No newline at end of file
+```
+
+If a feature's `languageOverrides` includes the SDK this page is about, add the `language` prop so the badge resolves to that language's stage instead of the feature's default.
+```js
+
+```
+
+## Using FeatureStageLabel
+
+Role: The inline sibling of `ReleaseNoteHeader`, for mentioning a feature's stage mid-sentence in prose instead of as a page-level banner. Sourced from the same [`featureReleaseTypes.js`](../src/constants/featureReleaseTypes.js) registry, so these mentions can't drift out of sync with the banner the way a hand-written `[Public Preview](/evaluate/development-production-features/release-stages#public-preview)` link can.
+
+Usage:
+
+```js
+import { FeatureStageLabel } from '@site/src/components';
+
+The Rust SDK is in , and its API can change between releases.
+```
+
+Accepts the same `featureName`, `language`, and `type` props as `ReleaseNoteHeader`, resolved the same way. Renders a plain prose link — no pill/badge styling — since it's meant to sit inline in a sentence.
+
+## Using FeatureStageTable
+
+Role: Renders every feature currently in `featureReleaseTypes.js`, grouped by stage, as a Markdown-style table. Used on the [release stages page](../docs/evaluate/development-production-features/release-stages.mdx) to give a single, always-current view of what's non-GA — no separate list to hand-maintain.
+
+Usage:
+
+```js
+import { FeatureStageTable } from '@site/src/components';
+
+
+```
+
+Takes no props — it reads `featureReleaseTypes.js` directly, so a feature appears here automatically once it has a registry entry with `name`, `description`, and `infoLink`. Each stage section (Pre-release, Public Preview) is its own table with two columns, Feature and Details — there's no separate Stage column, since the section heading already says it. The Details cell is the feature's `description`; a feature with a `languageOverrides` entry gets a bolded note appended (e.g. "…without a Workflow orchestrating it. **Note:** Java support is in Pre-release.") instead of a separate row per language.
+
+Write `description` as its own brief, feature-specific summary — what the feature actually does, in one sentence — rather than reusing the target page's meta `description` verbatim. A page's meta description is written for the whole page and SEO, so it's often too broad (e.g. a general SDK setup page) or too generic ("Learn how...") for a table row about one specific feature.
\ No newline at end of file
diff --git a/readme/COMPONENT_REGISTRY.md b/readme/COMPONENT_REGISTRY.md
index 57c55de5ba..ca3d0c0b43 100644
--- a/readme/COMPONENT_REGISTRY.md
+++ b/readme/COMPONENT_REGISTRY.md
@@ -2,13 +2,13 @@
Generated by `scripts/audit-components.mjs`. Run to update.
-**Coverage: 43/51 (84%)**
+**Coverage: 44/52 (85%)**
| Component | File Count | Strategy | Covered |
|-----------|------------|----------|---------|
+| `ReleaseNoteHeader` | 84 | `release-note-header` | ✅ |
| `TabItem` | 84 | `tabitem` | ✅ |
| `Tabs` | 83 | `tabs` | ✅ |
-| `ReleaseNoteHeader` | 76 | `release-note-header` | ✅ |
| `NoZoom` | 60 | `UNKNOWN` | ❌ |
| `RelatedReadContainer` | 23 | `related-read-container` | ✅ |
| `RelatedReadItem` | 20 | `related-read-item` | ✅ |
@@ -44,6 +44,7 @@ Generated by `scripts/audit-components.mjs`. Run to update.
| `CallerWorkflow` | 1 | `UNKNOWN` | ❌ |
| `SdkOverviewCards` | 1 | `sdk-overview-cards` | ✅ |
| `TemporalLifecycleDemo` | 1 | `UNKNOWN` | ❌ |
+| `FeatureStageTable` | 1 | `feature-stage-table` | ✅ |
| `CloudRegionCount` | 1 | `strip-block` | ✅ |
| `GuidesGrid` | 1 | `UNKNOWN` | ❌ |
| `HeroWrapper` | 1 | `strip-tag` | ✅ |
diff --git a/readme/MARKDOWN_PIPELINE.md b/readme/MARKDOWN_PIPELINE.md
index a78c9925fc..01eee1b839 100644
--- a/readme/MARKDOWN_PIPELINE.md
+++ b/readme/MARKDOWN_PIPELINE.md
@@ -130,6 +130,8 @@ Each component maps to a strategy in `COMPONENT_REGISTRY` (in `scripts/mdx-to-md
| YouTube/`