A .trex file is the manifest that tells Tableau where your extension lives and what it is. It is small, but it is order-sensitive: Tableau validates it against a compiled schema, and the wrong child order throws before your code ever runs.
#Caps and floors
- Maximum custom encodings: 4 (the schema's maxOccurs). A fifth Marks-card tile is rejected.
- Viz extension min-api-version: 1.12. Dashboard: 1.10.
- Embedded icon size: base64 must be at most 19608 characters.
- Reserved encoding ids:
detail,tooltip(Tableau built-ins; never use them for a custom tile). - Built-in encoding names:
color,size,shape,text,label,angle,path.
#Patterns the schema enforces
| Field | Pattern |
|---|---|
| Extension id | ^[A-Za-z]{2,6}(\.[A-Za-z0-9-]{1,63})+$ |
| min-api-version | ^\d+\.\d+$ |
| version (semver) | ^\d+\.\d+\.\d+$ |
| author website | ^[Hh][Tt][Tt][Pp][Ss]:\/\/.+ |
#Child order
Tableau's XSD is order-sensitive. These are the child orders the linter enforces; out-of-order children throw FD722608.
Worksheet (viz) extension children: default-locale > name > description > author > min-api-version > source-location > icon > permissions > context-menu > disable-sorting-ui > encoding
Dashboard extension children: default-locale > name > description > author > min-api-version > source-location > icon > permissions > context-menu > layout
Required children: default-locale, name, description, author, min-api-version, source-location, icon
Encoding children: display-name > data-spec > role-spec > fields > encoding-icon > tooltip
#Data and role types
- Data types:
numeric,temporal,string,boolean - Role types:
continuous-measure,discrete-dimension,continuous-dimension,discrete-measure
#FAQ
#Why does Tableau throw FD722608 on my manifest?
Almost always the manifest children are out of order, or an XML comment contains a double hyphen. Match the child order above.
#How many Marks-card tiles can a viz extension have?
Four. The schema caps custom encodings at maxOccurs=4.