Contract: DTCG Alignment
DTCG Alignment
Variable Design Standard (VDS) is DTCG 2025.10 compliant. What that means and what Variable Design Standard (VDS) adds.
Compliance statement
Variable Design Standard (VDS) uses the Design Tokens Community Group (DTCG) format 2025.10 as its base format. Variable Design Standard (VDS) extends DTCG with modes and convenience formats. Files using only DTCG features are strictly compliant. Files using modes or string shortcuts for dimension/duration are Variable Design Standard (VDS) format.
Requirements
- Variable JSON MUST follow DTCG 2025.10 structure.
$typeand$valueMUST exist on every variable.- References MUST use curly brace syntax in Variable Design Standard (VDS) files.
- JSON Pointer references MAY be supported for DTCG compliance.
- Modes in
$valueare a Variable Design Standard (VDS) extension.
What DTCG provides
DTCG 2025.10 defines:
- JSON structure for variables and groups
- Type system (color, dimension, fontFamily, fontWeight, duration, cubicBezier, number)
- Reference syntax (curly brace
{path}and JSON Pointer#/path) - Composite types (border, transition, shadow, gradient, typography)
- Group extension with
$extends $extensionsfor vendor-specific metadata
What Variable Design Standard (VDS) adds
Variable Design Standard (VDS) adds governance and extensions on top of DTCG format:
- Modes: Contextual variants (light/dark, mobile/desktop) stored in
$valueobjects. DTCG does not define modes. This is a Variable Design Standard (VDS) extension. - String shortcuts: Convenience formats like
"16px"for dimensions and"200ms"for durations. DTCG requires object format. - Hex color shorthand: Convenience format like
"#0066cc"for colors. DTCG requires object format withcolorSpaceandcomponents. - Naming convention rules (see Naming Convention)
- Change control process (see Change Control)
- Role definitions (see Design Engineer)
- Adapter patterns for tool integration (see Adapters)
- Validation requirements beyond format correctness
Compatibility matrix
| Feature | Source | Variable Design Standard (VDS) Requirement | Notes |
|---|---|---|---|
Variable structure ($type, $value) |
DTCG | MUST | Required for all variables |
| Groups | DTCG | MUST | Required for organization |
Group extension ($extends) |
DTCG | MAY | Use curly brace syntax: "$extends": "{group}" |
Curly brace references ({path}) |
DTCG | MUST | Canonical format |
JSON Pointer references ($ref) |
DTCG | MAY | Supported for DTCG compliance |
| Composite types | DTCG | MAY | Use when structure is needed |
$extensions |
DTCG | MAY | For tool metadata only |
$deprecated |
DTCG | SHOULD | Use when deprecating variables |
Modes in $value |
Variable Design Standard (VDS) | SHOULD | VC extension for contextual variants |
Dimension string ("16px") |
Variable Design Standard (VDS) | MAY | VC convenience; DTCG requires object format |
Duration string ("200ms") |
Variable Design Standard (VDS) | MAY | VC convenience; DTCG requires object format |
Hex color string ("#hex") |
Variable Design Standard (VDS) | MAY | VC convenience; DTCG requires object format |
Format differences
Variable Design Standard (VDS) extends DTCG format with:
- Modes in
$valueobjects for contextual variants (not in DTCG spec) - String shortcuts for dimension (
"16px"), duration ("200ms"), and color ("#hex") - Naming rules that enforce dot-separated paths
- Validation that checks references resolve
- Governance that treats renames as breaking changes
Examples
Strict DTCG:
{
"$type": "color",
"$value": {
"colorSpace": "srgb",
"components": [0, 0.4, 0.8],
"hex": "#0066cc"
}
}
Variable Design Standard (VDS) extension:
{
"$type": "color",
"$value": "#0066cc"
}
Strict DTCG compliance
For strict DTCG 2025.10 compliance, use:
- Color:
{"colorSpace": "srgb", "components": [r, g, b], "hex": "#optional"} - Dimension:
{"value": 16, "unit": "px"} - Duration:
{"value": 200, "unit": "ms"} - No modes in
$value(use separate variables or$extensionsfor mode metadata)
Migration from older formats
If you have variables in older DTCG formats (pre-2025.10):
- Update reference syntax to use curly braces:
{path.to.variable} - Add
$typeto all variables if missing - Move tool metadata to
$extensionsif it’s in root properties - Update group extension from
$refto$extendswith curly brace syntax
Failure modes
If you ignore DTCG compliance:
- Tools that expect strict DTCG format may reject string shortcuts for dimension/duration/color
- Tools that expect strict DTCG format will not recognize modes in
$value - Reference resolution may break if you use non-standard syntax
- Group extension requires
$extendswith curly brace syntax in DTCG 2025.10
Out of scope
- Runtime validation libraries (use DTCG-compliant validators)
- Format conversion tools (use adapters)
- Tool-specific features not in DTCG spec
Validation checklist
- All variables include
$typeand$value - References in Variable Design Standard (VDS) files use
{path}syntax - JSON Pointer references are only used for DTCG compliance
- Modes in
$valueare documented as a Variable Design Standard (VDS) extension