Skip to content

Core vs extended

Not every element is held to the same cross-platform bar.

Core elements versus extended best-effort elements

Core

Defined in Rust as CORE_ELEMENTS (src/snapshot.rs). These have a strict snapshot contract across iOS, macOS, Android, Desktop HTML, and Windows Adaptive Cards (with documented Windows nuances such as flattened zstack).

vstack, hstack, zstack, container, grid,
text, image, spacer, divider, progress, button, link, shape

If you need “works the same everywhere,” stay in this set.

Extended

EXTENDED_ELEMENTS — best-effort, platform-dependent:

gauge, toggle, date, chart, list, timer, canvas, label

Expect degraded or unsupported cells (for example live timer on Android/Windows, rich canvas.path subsets, chart rasterization on Adaptive Cards).

How to read the matrix

LevelMeaning
fullSupported with the intended semantics
degradedRenders with known limitations (see matrix notes)
unsupportedDo not rely on this feature on that platform

Showcase presets exercise both tiers; docs build fails if a schema element has zero fixture coverage.

Capability matrix

Generated from src/capabilities.rs. Do not edit by hand.

Core (strict snapshot contract)

ElementiOSmacOSAndroidDesktopWindows
vstackfullfullfullfullfull (Adaptive Cards 1.5)
hstackfullfullfullfullfull (Adaptive Cards 1.5)
zstackfullfullfullfulldegraded (flattened Container, no overlay)
containerfullfullfullfullfull (Adaptive Cards 1.5)
gridfullfullfullfullfull (Adaptive Cards 1.5)
textfullfullfullfullfull (Adaptive Cards 1.5)
imagefullfulldegraded (systemName via glyph map; url via localPath preprocess)fulldegraded (url/data URI; systemName unsupported)
spacerfullfullfullfullfull (Adaptive Cards 1.5)
dividerfullfullfullfullfull (Adaptive Cards 1.5)
progressfullfullfullfullfull (Adaptive Cards 1.5)
buttonfullfullfullfullfull (Adaptive Cards 1.5)
linkfullfullfullfullfull (Adaptive Cards 1.5)
shapefullfullfullfulldegraded (rasterized PNG)

Extended (best-effort, platform-dependent)

ElementiOSmacOSAndroidDesktopWindows
gaugefullfullfullfulldegraded (rasterized PNG)
togglefullfullfullfullfull (Adaptive Cards 1.5)
datefullfullfullfullfull (Adaptive Cards 1.5)
chartfullfulldegraded (simplified bar/line rendering)full (SVG)degraded (rasterized PNG)
listfullfullfull (Glance LazyColumn; depth/children limited)fulldegraded (flattened TextBlocks)
timerfullfulldegraded (static snapshot, not live Chronometer in all hosts)full (setInterval)degraded (static TextBlock of targetDate)
canvasfullfulldegraded (bitmap canvas; path support limited)full (SVG)degraded (rasterized PNG)
labelfullfullfullfullfull (Adaptive Cards 1.5)

Feature notes

FeatureiOSmacOSAndroidDesktopWindows
image.urlunsupported (prefetch into shared container not wired)unsupported (prefetch into shared container not wired)full (preprocess to localPath on setWidgetConfig)fullfull (Adaptive Cards Image.url)
image.systemNamefull (SF Symbols)full (SF Symbols)degraded (glyph / drawable name map)degraded (placeholder glyph)unsupported (no SF Symbols on Adaptive Cards)
background.gradientdegraded (linear primary; radial/angular limited)degraded (linear primary; radial/angular limited)degraded (first color stop only (Glance))full (linear/radial/angular CSS/SVG)unsupported (Container style=emphasis only)
canvas.pathdegraded (M/L/H/V/Z subset)degraded (M/L/H/V/Z subset)degraded (limited path commands)full (SVG path)degraded (rasterized via SVG)
timer.livefull (Text(..., .timer))full (Text(..., .timer))unsupported (no live timer in Glance snapshot)full (JS interval)unsupported (static only)

Released under the MIT License. · Contributing