DOCS-2849: Add PlatformMatrix component for compatibility page#2609
DOCS-2849: Add PlatformMatrix component for compatibility page#2609ctauchen wants to merge 1 commit intotigera:mainfrom
Conversation
Replaces hand-maintained per-platform markdown tables with a single React component driven by a shared data file. Shows a cross-version matrix (CE 3.23 through 3.20) for all supported platforms. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
✅ Deploy Preview for calico-docs-preview-next ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
✅ Deploy Preview succeeded!
To edit notification comments on pull requests, go to your Netlify project configuration. |
There was a problem hiding this comment.
Pull request overview
This PR refactors the Calico Enterprise “Support and compatibility” documentation to render the platform compatibility matrix via a single reusable React component, with compatibility data centralized in one source file.
Changes:
- Adds
PlatformMatrixReact component to render a cross-version platform compatibility table (CE 3.23–3.20). - Centralizes platform/version compatibility data in
src/___new___/data/platformMatrixData.js. - Updates Calico Enterprise compatibility pages (unversioned + selected versioned docs) to replace hand-maintained tables with
<PlatformMatrix />.
Reviewed changes
Copilot reviewed 7 out of 7 changed files in this pull request and generated 7 comments.
Show a summary per file
| File | Description |
|---|---|
| src/new/data/platformMatrixData.js | Introduces the centralized CE platform/version compatibility dataset consumed by the component. |
| src/new/components/PlatformMatrix/index.js | Implements the table renderer and simple footnote rendering logic. |
| calico-enterprise/getting-started/compatibility.mdx | Replaces long per-platform markdown tables with <PlatformMatrix />. |
| calico-enterprise_versioned_docs/version-3.23-1/getting-started/compatibility.mdx | Same replacement for CE 3.23-1 versioned docs. |
| calico-enterprise_versioned_docs/version-3.22-2/getting-started/compatibility.mdx | Same replacement for CE 3.22-2 versioned docs. |
| calico-enterprise_versioned_docs/version-3.21-2/getting-started/compatibility.mdx | Same replacement for CE 3.21-2 versioned docs. |
| calico-enterprise_versioned_docs/version-3.20-2/getting-started/compatibility.mdx | Same replacement for CE 3.20-2 versioned docs. |
| The following list shows the platforms supported in this release. If you're working with a version older than these, consult the [documentation archive](https://docs.tigera.io/archive) or contact Support. | ||
|
|
||
| - [AKS](#aks) | ||
| - [EKS](#eks) | ||
| - [GKE](#gke) | ||
| - [kOps on AWS](#kops-on-aws) | ||
| - [Kubernetes-kubeadm](#kubernetes-kubeadm) | ||
| - [MKE 4k](#mke-4k) | ||
| - [MKE](#mke) | ||
| - [OpenShift](#openshift) | ||
| - [RKE](#rke) | ||
| - [RKE2](#rke2) | ||
| - [TKG](#tkg) | ||
| - [Charmed Kubernetes](#charmed-kubernetes) | ||
|
|
||
| ### Supported $[prodname] features | ||
|
|
||
| If your platform is listed below, the features in this release will work for your platform unless an individual feature topic explicitly calls out a vendor or $[prodname] limitation. | ||
|
|
||
| Note that all Windows feature limitations are described in [Windows limitations](install-on-clusters/windows-calico/limitations.mdx), and are not called out in individual Linux topics. |
There was a problem hiding this comment.
The intro still says "The following list shows the platforms supported in this release", but the per-platform list/sections were removed and replaced with a multi-version matrix. This makes the section misleading (and the "Supported $[prodname] features" heading no longer introduces any actual platform-specific support details). Consider revising this text/heading to match the new matrix, or reintroduce a short summary of supported features by platform elsewhere on the page.
| The following list shows the platforms supported in this release. If you're working with a version older than these, consult the [documentation archive](https://docs.tigera.io/archive) or contact Support. | ||
|
|
||
| - [AKS](#aks) | ||
| - [EKS](#eks) | ||
| - [GKE](#gke) | ||
| - [kOps on AWS](#kops-on-aws) | ||
| - [Kubernetes-kubeadm](#kubernetes-kubeadm) | ||
| - [MKE 4k](#mke-4k) | ||
| - [MKE](#mke) | ||
| - [OpenShift](#openshift) | ||
| - [RKE](#rke) | ||
| - [RKE2](#rke2) | ||
| - [TKG](#tkg) | ||
| - [Charmed Kubernetes](#charmed-kubernetes) | ||
|
|
||
| ### Supported $[prodname] features | ||
|
|
||
| If your platform is listed below, the features in this release will work for your platform unless an individual feature topic explicitly calls out a vendor or $[prodname] limitation. | ||
|
|
||
| Note that all Windows feature limitations are described in [Windows limitations](install-on-clusters/windows-calico/limitations.mdx), and are not called out in individual Linux topics. |
There was a problem hiding this comment.
The intro still says "The following list shows the platforms supported in this release", but the per-platform list/sections were removed and replaced with a multi-version matrix. This makes the section misleading (and the "Supported $[prodname] features" heading no longer introduces any actual platform-specific support details). Consider revising this text/heading to match the new matrix, or reintroduce a short summary of supported features by platform elsewhere on the page.
| The following list shows the platforms supported in this release. If you're working with a version older than these, consult the [documentation archive](https://docs.tigera.io/archive) or contact Support. | ||
|
|
||
| - [AKS](#aks) | ||
| - [EKS](#eks) | ||
| - [GKE](#gke) | ||
| - [kOps on AWS](#kops-on-aws) | ||
| - [Kubernetes-kubeadm](#kubernetes-kubeadm) | ||
| - [MKE 4k](#mke-4k) | ||
| - [MKE](#mke) | ||
| - [OpenShift](#openshift) | ||
| - [RKE](#rke) | ||
| - [RKE2](#rke2) | ||
| - [TKG](#tkg) | ||
| - [Charmed Kubernetes](#charmed-kubernetes) | ||
|
|
||
| ### Supported $[prodname] features | ||
|
|
||
| If your platform is listed below, the features in this release will work for your platform unless an individual feature topic explicitly calls out a vendor or $[prodname] limitation. | ||
|
|
||
| Note that all Windows feature limitations are described in [Windows limitations](install-on-clusters/windows-calico/limitations.mdx), and are not called out in individual Linux topics. |
There was a problem hiding this comment.
The intro still says "The following list shows the platforms supported in this release", but the per-platform list/sections were removed and replaced with a multi-version matrix. This makes the section misleading (and the "Supported $[prodname] features" heading no longer introduces any actual platform-specific support details). Consider revising this text/heading to match the new matrix, or reintroduce a short summary of supported features by platform elsewhere on the page.
| The following list shows the platforms supported in this release. If you're working with a version older than these, consult the [documentation archive](https://docs.tigera.io/archive) or contact Support. | ||
|
|
||
| - [AKS](#aks) | ||
| - [EKS](#eks) | ||
| - [GKE](#gke) | ||
| - [kOps on AWS](#kops-on-aws) | ||
| - [Kubernetes-kubeadm](#kubernetes-kubeadm) | ||
| - [MKE](#mke) | ||
| - [OpenShift](#openshift) | ||
| - [RKE](#rke) | ||
| - [RKE2](#rke2) | ||
| - [TKG](#tkg) | ||
| - [Charmed Kubernetes](#charmed-kubernetes) | ||
|
|
||
| ### Supported $[prodname] features | ||
|
|
||
| If your platform is listed below, the features in this release will work for your platform unless an individual feature topic explicitly calls out a vendor or $[prodname] limitation. | ||
|
|
||
| Note that all Windows feature limitations are described in [Windows limitations](install-on-clusters/windows-calico/limitations.mdx), and are not called out in individual Linux topics. |
There was a problem hiding this comment.
The intro still says "The following list shows the platforms supported in this release", but the per-platform list/sections were removed and replaced with a multi-version matrix. This makes the section misleading (and the "Supported $[prodname] features" heading no longer introduces any actual platform-specific support details). Consider revising this text/heading to match the new matrix, or reintroduce a short summary of supported features by platform elsewhere on the page.
| The following list shows the platforms supported in this release. If you're working with a version older than these, consult the [documentation archive](https://docs.tigera.io/archive) or contact Support. | ||
|
|
||
| - [AKS](#aks) | ||
| - [EKS](#eks) | ||
| - [GKE](#gke) | ||
| - [kOps on AWS](#kops-on-aws) | ||
| - [Kubernetes-kubeadm](#kubernetes-kubeadm) | ||
| - [MKE](#mke) | ||
| - [OpenShift](#openshift) | ||
| - [RKE](#rke) | ||
| - [RKE2](#rke2) | ||
| - [TKG](#tkg) | ||
| - [Charmed Kubernetes](#charmed-kubernetes) | ||
|
|
||
| ### Supported $[prodname] features | ||
|
|
||
| If your platform is listed below, the features in this release will work for your platform unless an individual feature topic explicitly calls out a vendor or $[prodname] limitation. | ||
|
|
||
| Note that all Windows feature limitations are described in [Windows limitations](install-on-clusters/windows-calico/limitations.mdx), and are not called out in individual Linux topics. |
There was a problem hiding this comment.
The intro still says "The following list shows the platforms supported in this release", but the per-platform list/sections were removed and replaced with a multi-version matrix. This makes the section misleading (and the "Supported $[prodname] features" heading no longer introduces any actual platform-specific support details). Consider revising this text/heading to match the new matrix, or reintroduce a short summary of supported features by platform elsewhere on the page.
| export default function PlatformMatrix() { | ||
| const footnotes = platforms.filter((p) => p.footnote); | ||
|
|
||
| return ( | ||
| <> | ||
| <table> | ||
| <thead> | ||
| <tr> | ||
| <th>Platform</th> | ||
| {CE_VERSIONS.map((v) => ( | ||
| <th key={v}>CE {v}</th> | ||
| ))} | ||
| </tr> | ||
| </thead> | ||
| <tbody> | ||
| {platforms.map((platform) => ( | ||
| <tr key={platform.id}> | ||
| <td> | ||
| <strong>{platform.label}</strong> | ||
| {platform.footnote && <sup>*</sup>} | ||
| </td> | ||
| {CE_VERSIONS.map((v) => ( | ||
| <td key={v}>{renderCell(platform, v)}</td> | ||
| ))} | ||
| </tr> | ||
| ))} | ||
| </tbody> | ||
| </table> | ||
| {footnotes.length > 0 && ( | ||
| <p style={{ fontSize: '0.9em' }}> | ||
| {footnotes.map((p) => ( | ||
| <span key={p.id}> | ||
| * {p.footnote} | ||
| <br /> | ||
| </span> | ||
| ))} | ||
| </p> | ||
| )} | ||
| </> | ||
| ); | ||
| } |
There was a problem hiding this comment.
This component introduces new rendering logic and is now used on multiple compatibility pages, but it doesn't have a Jest snapshot/unit test (most other src/___new___/components/* components have __test__/index.test.tsx). Adding a basic render/snapshot test (including at least one footnote row and an unsupported-version cell rendering as "—") would help prevent accidental regressions when compatibility data is updated.
| const footnotes = platforms.filter((p) => p.footnote); | ||
|
|
||
| return ( | ||
| <> | ||
| <table> | ||
| <thead> | ||
| <tr> | ||
| <th>Platform</th> | ||
| {CE_VERSIONS.map((v) => ( | ||
| <th key={v}>CE {v}</th> | ||
| ))} | ||
| </tr> | ||
| </thead> | ||
| <tbody> | ||
| {platforms.map((platform) => ( | ||
| <tr key={platform.id}> | ||
| <td> | ||
| <strong>{platform.label}</strong> | ||
| {platform.footnote && <sup>*</sup>} | ||
| </td> | ||
| {CE_VERSIONS.map((v) => ( | ||
| <td key={v}>{renderCell(platform, v)}</td> | ||
| ))} | ||
| </tr> | ||
| ))} | ||
| </tbody> | ||
| </table> | ||
| {footnotes.length > 0 && ( | ||
| <p style={{ fontSize: '0.9em' }}> | ||
| {footnotes.map((p) => ( | ||
| <span key={p.id}> | ||
| * {p.footnote} | ||
| <br /> | ||
| </span> | ||
| ))} |
There was a problem hiding this comment.
Footnote markers are always rendered as a bare "*" (both in the table and in the footnote list). If more than one platform gets a footnote, readers won't be able to tell which note applies to which row. Consider numbering footnotes (or otherwise mapping markers to specific footnotes) so multiple footnotes remain unambiguous.

Summary
<PlatformMatrix />React componentsrc/___new___/data/platformMatrixData.js), making updates a single-file changeSupersedes #2531.
Test plan
🤖 Generated with Claude Code