table is an AUP cross-device primitive, not a Web Device layout component and not a Web-only widget. It is one of the 18 names in AUP_PRIMITIVES and appears in every target's DeviceCaps.primitives map as native, webview, partial, or unsupported.
Contract
| Field | Value |
|---|---|
| Primitive name | table |
| Layer | AUP cross-device primitive (AUP_PRIMITIVES) |
| Public status | released |
| Document capability | native |
| Shared degradation chain | Empty AUP table → “No data” body (not a degradation chain) |
| Author entry | AUP tree (columns/rows) · GFM pipe tables (Markdown path, often HTML text) |
| Document renderer / notes | renderer/primitives/table.ts |
| Showcase evidence | report / finance compositions; GFM path verified on document unit pages |
When to use
You need semantic columns and rows as an AUP table node, or a static GFM table in content Markdown.
When not to use
Do not confuse a chart degradation table with an author-written table. GFM tables are not a deep AUP table props contract.
Sample contract
| Field | Value |
|---|---|
| Purpose | Static columnar content in docs (GFM path) |
| Boundaries | Not an editable grid; not chart fallback chrome; not every AUP table prop combination |
| Author entry | Pipe table in Markdown |
| Surface | Web Device document |
| Public status | released (GFM path verified) |
| Fallback / failure | Malformed pipes → ordinary Markdown / broken table; empty AUP table → “No data” (AUP path) |
| Verification | Routes below · arc --version = 2.0.0-beta.28 |
Document sample (GFM table)
This is the Markdown/GFM path on the document target. It is not a live claim of every AUP table prop combination.
Source:
| File | Purpose | Writes data |
| --- | --- | --- |
| `content.md` | Content item | No |
| `layout.aup` | Page layout | No |Rendered:
| File | Purpose | Writes data |
|---|---|---|
content.md | Content item | No |
layout.aup | Page layout | No |
Unit page: GFM table.
AUP node shape (source-only on this page)
Interactive / full-web authoring uses explicit columns / rows. Empty AUP tables render a “No data” cell. That string is table empty-state chrome, not proof of a chart.
{
"id": "rates",
"type": "table",
"props": {
"columns": [
{ "key": "name", "label": "Name" },
{ "key": "value", "label": "Value" }
],
"rows": [{ "name": "alpha", "value": "1" }]
}
}Failure and limits
| Situation | Expected result |
|---|---|
| Malformed pipes | Ordinary Markdown / broken table, not a runtime error surface |
| Empty body rows in GFM | Author content only — no automatic “No data” chrome from the chart chain |
Assuming AUP table props from a GFM sample | Wrong path depth; write AUP JSON/DSL when you need that node |
| Chart degradation table | Separate unsupported chart path — not this sample |
Verification evidence
| Item | Value |
|---|---|
| Baseline | 2026-08-09 · arc --version → 2.0.0-beta.28 |
| Capability row | docs/aup/capability-matrix.md (internal, non-routed) · table · GFM table |
| Implementation | content-reader.ts (table case); renderer/primitives/table.ts |
| Public routes | /en/docs/aup/primitives/table/ · /zh/docs/aup/primitives/table/ |
| Local run | arc service start --blocklet blocklets/arcblock --port 4900 · open routes; compare source fence to rendered table |
| Accept | Source and rendered table match; no edit controls; no chart claim |
Evidence anchors
| Item | Value |
|---|---|
| Registry | packages/aup/src/aup-types.ts · AUP_PRIMITIVES |
| Document caps | providers/runtime/web-device/src/device-caps.ts · DEVICE_CAPS_DOCUMENT |
| Degradation | packages/aup/src/degradation.ts · DEGRADATION_CHAINS |
| Internal matrix | docs/aup/capability-matrix.md (internal, non-routed) |
| Taxonomy hub | Primitive taxonomy and evidence |
| Sample contract rules | Live examples: scope and contract |