Skip to content

Text, file, and other

Token typePartial$type: text · file · other2026-07-27

Three non-DTCG types that exist so arbitrary JSON survives an import without losing data. None of them can be created in the token dialog — they only appear when they come in through import, the JSON editor, or sync.

Any imported token whose type cannot be determined becomes other.


text

A plain string.

{ "$type": "text", "$value": "Sign in to continue" }

Apply target: Text content. On a text layer, the string replaces the layer’s characters (fonts are loaded first). On any other layer type, the value is stored as plugin data on the layer instead.

Useful for content tokens — legal strings, product names — that need to stay in sync across mockups.


file

A URL.

{ "$type": "file", "$value": "https://cdn.example.com/logo.svg" }

Apply target: Hyperlink. On a layer that supports hyperlinks, the URL is set as the layer’s link. Otherwise the value is stored as plugin data.

It does not fetch or place the asset — the plugin never downloads the file.


other

Anything else. The value is stored as-is.

{ "$type": "other", "$value": { "anything": true } }

Two apply targets:

TargetBehaviour
Save on nodeWrites the JSON-serialised value as plugin data on the layer
Copy to clipboardCopies the value — nothing is written to the layer

Why they are marked partial

They apply and export correctly, but they are outside the DTCG type system:

  • Not creatable in the UI
  • No validation — any value is accepted
  • Not usable as a reference target inside composite token slots
  • A downstream tool reading the exported JSON will not recognise these $type values

Treat them as an escape hatch for round-tripping, not as a modelling tool.