Module

Motion

How appearance changes over time

Motion describes a change: keyframes, springs, paths, and shared elements. Durations and easing are part of the contract. Reduced-motion preferences are a requirement, not a suggestion to ignore later.

Use this module when Something moves, fades, springs, or follows a path, and that movement is part of the intended result.

Keep in mind. Motion is not a timeline of media clips. Clips, markers, and editorial cuts live in Timeline.

Raw schema:/schema/1.0/modules/motion.schema.json · https://visualspec.dev/schema/1.0/modules/motion.schema.json

How to read a definition.The paragraphs say what to write and why. “Exact constraints” opens the schema keywords (type, pattern, bounds) for people checking a validator. A sample at the bottom of each definition is the smallest JSON that shows the required shape. Values such as $ref inside a sample point at another definition. They are not fields you copy into a document.

value

More than one shape is accepted. Use exactly one of the 6 alternatives below. They are different ways to say the same kind of value.

anyOf 1number

Write a number. Decimals are allowed.

Exact constraints
type
number
anyOf 2string

Write a text value.

An empty string is not allowed.

Exact constraints
type
string
min length
1
anyOf 3boolean

Write true or false.

Exact constraints
type
boolean
anyOf 4vector2

This is not a new shape. It reuses vector2 from the common module. Open that definition for the fields you can write.

anyOf 5vector3

This is not a new shape. It reuses vector3 from the common module. Open that definition for the fields you can write.

anyOf 6color

This is not a new shape. It reuses color from the appearance module. Open that definition for the fields you can write.

Smallest example

Required fields only, with placeholder values. Replace them with the real intent.

valueJSON
0

easing

More than one shape is accepted. Use exactly one of the 6 alternatives below. They are different ways to say the same kind of value.

anyOf 1"linear" | "ease" | "ease-in" | "ease-out" | "ease-in-out"

Pick one of the 5 listed values. Any other value is invalid. The list is closed on purpose so tools agree on the same words.

Exact constraints
Allowed values
  • "linear"
  • "ease"
  • "ease-in"
  • "ease-out"
  • "ease-in-out"
anyOf 2object

Write an object. Only the fields named below are allowed. Unknown fields are rejected so a typo cannot hide inside the document.

You must include type and values.

Exact constraints
type
object
additional properties
forbidden
typerequiredconst "cubic-bezier"

The only allowed value is "cubic-bezier".

Exact constraints
const
"cubic-bezier"
valuesrequiredarray<number>

Write a list. Each item follows the shape described under items.

The list needs at least 4 items.

The list allows at most 4 items.

Exact constraints
type
array
min items
4
max items
4
itemsnumber

Write a number. Decimals are allowed.

Exact constraints
type
number
anyOf 3object

Write an object. Only the fields named below are allowed. Unknown fields are rejected so a typo cannot hide inside the document.

You must include type, x1, y1, x2, and y2.

Exact constraints
type
object
additional properties
forbidden
typerequiredconst "cubic-bezier"

The only allowed value is "cubic-bezier".

Exact constraints
const
"cubic-bezier"
x1requirednumber

Write a number. Decimals are allowed.

The number must sit between 0 and 1, including both ends.

Exact constraints
type
number
minimum
0
maximum
1
y1requirednumber

Write a number. Decimals are allowed.

Exact constraints
type
number
x2requirednumber

Write a number. Decimals are allowed.

The number must sit between 0 and 1, including both ends.

Exact constraints
type
number
minimum
0
maximum
1
y2requirednumber

Write a number. Decimals are allowed.

Exact constraints
type
number
anyOf 4object

Write an object. Only the fields named below are allowed. Unknown fields are rejected so a typo cannot hide inside the document.

You must include type and points.

Exact constraints
type
object
additional properties
forbidden
typerequiredconst "linear"

The only allowed value is "linear".

Exact constraints
const
"linear"
pointsrequiredarray<number>

Write a list. Each item follows the shape described under items.

The list needs at least 2 items.

Exact constraints
type
array
min items
2
itemsnumber

Write a number. Decimals are allowed.

Exact constraints
type
number
anyOf 5object

Write an object. Only the fields named below are allowed. Unknown fields are rejected so a typo cannot hide inside the document.

You must include type and count.

You may omit position. Leave a field out when you have nothing to say. Do not invent a placeholder.

Exact constraints
type
object
additional properties
forbidden
typerequiredconst "steps"

The only allowed value is "steps".

Exact constraints
const
"steps"
countrequiredinteger

Write a whole number.

The number must be at least 1.

Exact constraints
type
integer
minimum
1
position"start" | "end" | "jump-start" | "jump-end" | "jump-none" | "jump-both"

Pick one of the 6 listed values. Any other value is invalid. The list is closed on purpose so tools agree on the same words.

Exact constraints
Allowed values
  • "start"
  • "end"
  • "jump-start"
  • "jump-end"
  • "jump-none"
  • "jump-both"
anyOf 6object

Write an object. Only the fields named below are allowed. Unknown fields are rejected so a typo cannot hide inside the document.

You must include type, mass, stiffness, and damping.

You may omit initialVelocity. Leave a field out when you have nothing to say. Do not invent a placeholder.

Exact constraints
type
object
additional properties
forbidden
typerequiredconst "spring"

The only allowed value is "spring".

Exact constraints
const
"spring"
massrequirednumber

Write a number. Decimals are allowed.

Exact constraints
type
number
exclusive minimum
0
stiffnessrequirednumber

Write a number. Decimals are allowed.

Exact constraints
type
number
exclusive minimum
0
dampingrequirednumber

Write a number. Decimals are allowed.

The number must be at least 0.

Exact constraints
type
number
minimum
0
initialVelocitynumber

Write a number. Decimals are allowed.

Exact constraints
type
number

Smallest example

Required fields only, with placeholder values. Replace them with the real intent.

easingJSON
"linear"

spring

Write an object. Only the fields named below are allowed. Unknown fields are rejected so a typo cannot hide inside the document.

You must include mass, stiffness, and damping.

You may omit initialVelocity, restSpeed, and restDelta. Leave a field out when you have nothing to say. Do not invent a placeholder.

Exact constraints
type
object
additional properties
forbidden
massrequirednumber

Write a number. Decimals are allowed.

Exact constraints
type
number
exclusive minimum
0
stiffnessrequirednumber

Write a number. Decimals are allowed.

Exact constraints
type
number
exclusive minimum
0
dampingrequirednumber

Write a number. Decimals are allowed.

The number must be at least 0.

Exact constraints
type
number
minimum
0
initialVelocitynumber

Write a number. Decimals are allowed.

Exact constraints
type
number
restSpeednumber

Write a number. Decimals are allowed.

The number must be at least 0.

Exact constraints
type
number
minimum
0
restDeltanumber

Write a number. Decimals are allowed.

The number must be at least 0.

Exact constraints
type
number
minimum
0

Smallest example

Required fields only, with placeholder values. Replace them with the real intent.

springJSON
{  "mass": 0,  "stiffness": 0,  "damping": 0}

keyframe

Write an object. Only the fields named below are allowed. Unknown fields are rejected so a typo cannot hide inside the document.

More than one shape is accepted. Use exactly one of the 2 alternatives below. They are different ways to say the same kind of value.

You must include offset.

You may omit value, values, easing, and composite. Leave a field out when you have nothing to say. Do not invent a placeholder.

Exact constraints
type
object
additional properties
forbidden
offsetrequirednumber

Write a number. Decimals are allowed.

The number must sit between 0 and 1, including both ends.

Exact constraints
type
number
minimum
0
maximum
1
valuevalue

This is not a new shape. It reuses value from the motion module. Open that definition for the fields you can write.

valuesobject
Exact constraints
type
object
additional properties
value
additionalPropertiesvalue

This is not a new shape. It reuses value from the motion module. Open that definition for the fields you can write.

easingeasing

This is not a new shape. It reuses easing from the motion module. Open that definition for the fields you can write.

composite"replace" | "add" | "accumulate"

Pick one of the 3 listed values. Any other value is invalid. The list is closed on purpose so tools agree on the same words.

Exact constraints
Allowed values
  • "replace"
  • "add"
  • "accumulate"
anyOf 1-

You must include value.

anyOf 2-

You must include values.

Smallest example

Required fields only, with placeholder values. Replace them with the real intent.

keyframeJSON
""

step

Write an object. Only the fields named below are allowed. Unknown fields are rejected so a typo cannot hide inside the document.

You must include type.

You may omit motionRef, each, from, seed, duration, targets, and children. Leave a field out when you have nothing to say. Do not invent a placeholder.

Exact constraints
type
object
additional properties
forbidden
typerequired"animation" | "sequence" | "parallel" | "stagger" | "wait"

Pick one of the 5 listed values. Any other value is invalid. The list is closed on purpose so tools agree on the same words.

Exact constraints
Allowed values
  • "animation"
  • "sequence"
  • "parallel"
  • "stagger"
  • "wait"
motionRefid

This is not a new shape. It reuses id from the common module. Open that definition for the fields you can write.

eachduration

This is not a new shape. It reuses duration from the common module. Open that definition for the fields you can write.

from"first" | "last" | "center"

Pick one of the 3 listed values. Any other value is invalid. The list is closed on purpose so tools agree on the same words.

Exact constraints
Allowed values
  • "first"
  • "last"
  • "center"
seedinteger

Write a whole number.

The number must be at least 0.

Exact constraints
type
integer
minimum
0
durationduration

This is not a new shape. It reuses duration from the common module. Open that definition for the fields you can write.

targetsarray<id>

Write a list. Each item follows the shape described under items.

Each item in the list must be different. Duplicates are invalid.

Exact constraints
type
array
unique items
true
itemsid

This is not a new shape. It reuses id from the common module. Open that definition for the fields you can write.

childrenarray<step>

Write a list. Each item follows the shape described under items.

Exact constraints
type
array
itemsstep

This is not a new shape. It reuses step from the motion module. Open that definition for the fields you can write.

Smallest example

Required fields only, with placeholder values. Replace them with the real intent.

stepJSON
{  "type": "animation"}

track

Write an object. Only the fields named below are allowed. Unknown fields are rejected so a typo cannot hide inside the document.

You must include property.

You may omit from, to, keyframes, easing, and composite. Leave a field out when you have nothing to say. Do not invent a placeholder.

Exact constraints
type
object
additional properties
forbidden
propertyrequiredstring

Animatable visual property path, for example appearance.opacity or transform.translate.

Write a text value.

An empty string is not allowed.

Exact constraints
type
string
min length
1
fromvalue

This is not a new shape. It reuses value from the motion module. Open that definition for the fields you can write.

tovalue

This is not a new shape. It reuses value from the motion module. Open that definition for the fields you can write.

keyframesarray<keyframe>

Write a list. Each item follows the shape described under items.

The list needs at least 2 items.

Exact constraints
type
array
min items
2
itemskeyframe

This is not a new shape. It reuses keyframe from the motion module. Open that definition for the fields you can write.

easingeasing

This is not a new shape. It reuses easing from the motion module. Open that definition for the fields you can write.

composite"replace" | "add" | "accumulate"

Pick one of the 3 listed values. Any other value is invalid. The list is closed on purpose so tools agree on the same words.

Exact constraints
Allowed values
  • "replace"
  • "add"
  • "accumulate"

Smallest example

Required fields only, with placeholder values. Replace them with the real intent.

trackJSON
{  "property": "example"}

driver

Write an object. Only the fields named below are allowed. Unknown fields are rejected so a typo cannot hide inside the document.

You must include type.

You may omit sourceRef, axis, range, clamp, and externalName. Leave a field out when you have nothing to say. Do not invent a placeholder.

Exact constraints
type
object
additional properties
forbidden
typerequired"event" | "state-transition" | "gesture" | "scroll" | "timeline" | "viewport" | "visibility" | "media-playback" | "external-progress"

Pick one of the 9 listed values. Any other value is invalid. The list is closed on purpose so tools agree on the same words.

Exact constraints
Allowed values
  • "event"
  • "state-transition"
  • "gesture"
  • "scroll"
  • "timeline"
  • "viewport"
  • "visibility"
  • "media-playback"
  • "external-progress"
sourceRefid

This is not a new shape. It reuses id from the common module. Open that definition for the fields you can write.

axis"x" | "y" | "both"

Pick one of the 3 listed values. Any other value is invalid. The list is closed on purpose so tools agree on the same words.

Exact constraints
Allowed values
  • "x"
  • "y"
  • "both"
rangeobject

Write an object. Only the fields named below are allowed. Unknown fields are rejected so a typo cannot hide inside the document.

You must include start and end.

Exact constraints
type
object
additional properties
forbidden
startrequirednumber

Write a number. Decimals are allowed.

Exact constraints
type
number
endrequirednumber

Write a number. Decimals are allowed.

Exact constraints
type
number
clampboolean

Write true or false.

Exact constraints
type
boolean
externalNamestring

Write a text value.

An empty string is not allowed.

Exact constraints
type
string
min length
1

Smallest example

Required fields only, with placeholder values. Replace them with the real intent.

driverJSON
{  "type": "event"}

path

Write an object. Only the fields named below are allowed. Unknown fields are rejected so a typo cannot hide inside the document.

You may omit data, pathRef, orientation, start, end, and coordinateSpace. Leave a field out when you have nothing to say. Do not invent a placeholder.

Exact constraints
type
object
additional properties
forbidden
datastring

Write a text value.

An empty string is not allowed.

Exact constraints
type
string
min length
1
pathRefid

This is not a new shape. It reuses id from the common module. Open that definition for the fields you can write.

orientation"auto" | "auto-reverse" | "fixed"

Pick one of the 3 listed values. Any other value is invalid. The list is closed on purpose so tools agree on the same words.

Exact constraints
Allowed values
  • "auto"
  • "auto-reverse"
  • "fixed"
startnumber

Write a number. Decimals are allowed.

The number must sit between 0 and 1, including both ends.

Exact constraints
type
number
minimum
0
maximum
1
endnumber

Write a number. Decimals are allowed.

The number must sit between 0 and 1, including both ends.

Exact constraints
type
number
minimum
0
maximum
1
coordinateSpacecoordinateSpace

This is not a new shape. It reuses coordinateSpace from the common module. Open that definition for the fields you can write.

Smallest example

Required fields only, with placeholder values. Replace them with the real intent.

pathJSON
{  "data": "example",  "pathRef": {    "$ref": "common#id"  },  "orientation": "auto",  "start": 0}

sharedElement

Write an object. Only the fields named below are allowed. Unknown fields are rejected so a typo cannot hide inside the document.

You must include entityRef, fromNodeRef, and toNodeRef.

You may omit preserve and crossfade. Leave a field out when you have nothing to say. Do not invent a placeholder.

Exact constraints
type
object
additional properties
forbidden
entityRefrequiredid

This is not a new shape. It reuses id from the common module. Open that definition for the fields you can write.

fromNodeRefrequiredid

This is not a new shape. It reuses id from the common module. Open that definition for the fields you can write.

toNodeRefrequiredid

This is not a new shape. It reuses id from the common module. Open that definition for the fields you can write.

preservearray<"position" | "size" | "shape" | "opacity" | "color" | "content">

Write a list. Each item follows the shape described under items.

Each item in the list must be different. Duplicates are invalid.

Exact constraints
type
array
unique items
true
items"position" | "size" | "shape" | "opacity" | "color" | "content"

Pick one of the 6 listed values. Any other value is invalid. The list is closed on purpose so tools agree on the same words.

Exact constraints
Allowed values
  • "position"
  • "size"
  • "shape"
  • "opacity"
  • "color"
  • "content"
crossfadeboolean

Write true or false.

Exact constraints
type
boolean

Smallest example

Required fields only, with placeholder values. Replace them with the real intent.

sharedElementJSON
{  "entityRef": {    "$ref": "common#id"  },  "fromNodeRef": {    "$ref": "common#id"  },  "toNodeRef": {    "$ref": "common#id"  }}

animation

Write an object. Only the fields named below are allowed. Unknown fields are rejected so a typo cannot hide inside the document.

You must include id.

28 other fields are optional. Include one only when you have a real value for it.

Exact constraints
type
object
additional properties
forbidden
idrequiredid

This is not a new shape. It reuses id from the common module. Open that definition for the fields you can write.

namestring

Write a text value.

An empty string is not allowed.

Exact constraints
type
string
min length
1
kind"property" | "spring" | "decay" | "path" | "morph" | "layout" | "shared-element" | "sequence" | "parallel" | "stagger" | "transition"

Pick one of the 11 listed values. Any other value is invalid. The list is closed on purpose so tools agree on the same words.

Exact constraints
Allowed values
  • "property"
  • "spring"
  • "decay"
  • "path"
  • "morph"
  • "layout"
  • "shared-element"
  • "sequence"
  • "parallel"
  • "stagger"
  • "transition"
targetsarray<id>

Write a list. Each item follows the shape described under items.

Each item in the list must be different. Duplicates are invalid.

Exact constraints
type
array
unique items
true
itemsid

This is not a new shape. It reuses id from the common module. Open that definition for the fields you can write.

tracksarray<track>

Write a list. Each item follows the shape described under items.

The list needs at least 1 item.

Exact constraints
type
array
min items
1
itemstrack

This is not a new shape. It reuses track from the motion module. Open that definition for the fields you can write.

durationduration

This is not a new shape. It reuses duration from the common module. Open that definition for the fields you can write.

delaydelay

This is not a new shape. It reuses delay from the common module. Open that definition for the fields you can write.

easingeasing

This is not a new shape. It reuses easing from the motion module. Open that definition for the fields you can write.

springspring

This is not a new shape. It reuses spring from the motion module. Open that definition for the fields you can write.

decayobject

Write an object. Only the fields named below are allowed. Unknown fields are rejected so a typo cannot hide inside the document.

You must include velocity and deceleration.

Exact constraints
type
object
additional properties
forbidden
velocityrequirednumber

Write a number. Decimals are allowed.

Exact constraints
type
number
decelerationrequirednumber

Write a number. Decimals are allowed.

Exact constraints
type
number
exclusive minimum
0
timingobject

Write an object. Only the fields named below are allowed. Unknown fields are rejected so a typo cannot hide inside the document.

You may omit duration, delay, endDelay, iterations, iterationStart, direction, fill, and playbackRate. Leave a field out when you have nothing to say. Do not invent a placeholder.

Exact constraints
type
object
additional properties
forbidden
durationduration

This is not a new shape. It reuses duration from the common module. Open that definition for the fields you can write.

delaydelay

This is not a new shape. It reuses delay from the common module. Open that definition for the fields you can write.

endDelayduration

This is not a new shape. It reuses duration from the common module. Open that definition for the fields you can write.

iterationsnumber | const "infinite"

More than one shape is accepted. Use exactly one of the 2 alternatives below. They are different ways to say the same kind of value.

anyOf 1number

Write a number. Decimals are allowed.

The number must be at least 0.

Exact constraints
type
number
minimum
0
anyOf 2const "infinite"

The only allowed value is "infinite".

Exact constraints
const
"infinite"
iterationStartnumber

Write a number. Decimals are allowed.

The number must be at least 0.

Exact constraints
type
number
minimum
0
direction"normal" | "reverse" | "alternate" | "alternate-reverse"

Pick one of the 4 listed values. Any other value is invalid. The list is closed on purpose so tools agree on the same words.

Exact constraints
Allowed values
  • "normal"
  • "reverse"
  • "alternate"
  • "alternate-reverse"
fill"none" | "forwards" | "backwards" | "both"

Pick one of the 4 listed values. Any other value is invalid. The list is closed on purpose so tools agree on the same words.

Exact constraints
Allowed values
  • "none"
  • "forwards"
  • "backwards"
  • "both"
playbackRatenumber

Write a number. Decimals are allowed.

Exact constraints
type
number
exclusive minimum
0
iterationsnumber | const "infinite"

More than one shape is accepted. Use exactly one of the 2 alternatives below. They are different ways to say the same kind of value.

anyOf 1number

Write a number. Decimals are allowed.

The number must be at least 0.

Exact constraints
type
number
minimum
0
anyOf 2const "infinite"

The only allowed value is "infinite".

Exact constraints
const
"infinite"
direction"normal" | "reverse" | "alternate" | "alternate-reverse"

Pick one of the 4 listed values. Any other value is invalid. The list is closed on purpose so tools agree on the same words.

Exact constraints
Allowed values
  • "normal"
  • "reverse"
  • "alternate"
  • "alternate-reverse"
autoreverseboolean

Write true or false.

Exact constraints
type
boolean
fill"none" | "forwards" | "backwards" | "both"

Pick one of the 4 listed values. Any other value is invalid. The list is closed on purpose so tools agree on the same words.

Exact constraints
Allowed values
  • "none"
  • "forwards"
  • "backwards"
  • "both"
composition"replace" | "add" | "accumulate"

Pick one of the 3 listed values. Any other value is invalid. The list is closed on purpose so tools agree on the same words.

Exact constraints
Allowed values
  • "replace"
  • "add"
  • "accumulate"
motionRefsarray<id>

Write a list. Each item follows the shape described under items.

Each item in the list must be different. Duplicates are invalid.

Exact constraints
type
array
unique items
true
itemsid

This is not a new shape. It reuses id from the common module. Open that definition for the fields you can write.

childrenarray<step>

Write a list. Each item follows the shape described under items.

Exact constraints
type
array
itemsstep

This is not a new shape. It reuses step from the motion module. Open that definition for the fields you can write.

staggerduration

This is not a new shape. It reuses duration from the common module. Open that definition for the fields you can write.

triggerdriver

This is not a new shape. It reuses driver from the motion module. Open that definition for the fields you can write.

pathpath

This is not a new shape. It reuses path from the motion module. Open that definition for the fields you can write.

morphobject

Write an object. Only the fields named below are allowed. Unknown fields are rejected so a typo cannot hide inside the document.

You must include fromPath and toPath.

You may omit preserveTopology. Leave a field out when you have nothing to say. Do not invent a placeholder.

Exact constraints
type
object
additional properties
forbidden
fromPathrequiredstring

Write a text value.

An empty string is not allowed.

Exact constraints
type
string
min length
1
toPathrequiredstring

Write a text value.

An empty string is not allowed.

Exact constraints
type
string
min length
1
preserveTopologyboolean

Write true or false.

Exact constraints
type
boolean
sharedElementsharedElement

This is not a new shape. It reuses sharedElement from the motion module. Open that definition for the fields you can write.

essentialboolean

Write true or false.

Exact constraints
type
boolean
interrupt"cancel" | "finish" | "reverse" | "retarget" | "blend" | "queue" | "ignore" | object

More than one shape is accepted. Use exactly one of the 2 alternatives below. They are different ways to say the same kind of value.

anyOf 1"cancel" | "finish" | "reverse" | "retarget" | "blend" | "queue" | "ignore"

Pick one of the 7 listed values. Any other value is invalid. The list is closed on purpose so tools agree on the same words.

Exact constraints
Allowed values
  • "cancel"
  • "finish"
  • "reverse"
  • "retarget"
  • "blend"
  • "queue"
  • "ignore"
anyOf 2object

Write an object. Only the fields named below are allowed. Unknown fields are rejected so a typo cannot hide inside the document.

You must include policy.

You may omit preserveVelocity. Leave a field out when you have nothing to say. Do not invent a placeholder.

Exact constraints
type
object
additional properties
forbidden
policyrequired"cancel" | "finish" | "reverse" | "retarget" | "blend" | "queue" | "ignore"

Pick one of the 7 listed values. Any other value is invalid. The list is closed on purpose so tools agree on the same words.

Exact constraints
Allowed values
  • "cancel"
  • "finish"
  • "reverse"
  • "retarget"
  • "blend"
  • "queue"
  • "ignore"
preserveVelocityboolean

Write true or false.

Exact constraints
type
boolean
cancel"restore" | "freeze" | "finish"

Pick one of the 3 listed values. Any other value is invalid. The list is closed on purpose so tools agree on the same words.

Exact constraints
Allowed values
  • "restore"
  • "freeze"
  • "finish"
reducedMotionobject

Write an object. Only the fields named below are allowed. Unknown fields are rejected so a typo cannot hide inside the document.

You may omit strategy, duration, and motionRef. Leave a field out when you have nothing to say. Do not invent a placeholder.

Exact constraints
type
object
additional properties
forbidden
strategy"instant" | "fade" | "reduce" | "substitute" | "none" | "disable" | "replace" | "shorten"

Pick one of the 8 listed values. Any other value is invalid. The list is closed on purpose so tools agree on the same words.

Exact constraints
Allowed values
  • "instant"
  • "fade"
  • "reduce"
  • "substitute"
  • "none"
  • "disable"
  • "replace"
  • "shorten"
durationduration

This is not a new shape. It reuses duration from the common module. Open that definition for the fields you can write.

motionRefid

This is not a new shape. It reuses id from the common module. Open that definition for the fields you can write.

performanceobject

Write an object. Only the fields named below are allowed. Unknown fields are rejected so a typo cannot hide inside the document.

You may omit preferCompositor and frameBudget. Leave a field out when you have nothing to say. Do not invent a placeholder.

Exact constraints
type
object
additional properties
forbidden
preferCompositorboolean

Write true or false.

Exact constraints
type
boolean
frameBudgetnumber

Write a number. Decimals are allowed.

The number must be at least 0.

Exact constraints
type
number
minimum
0
extensionsextensions

This is not a new shape. It reuses extensions from the common module. Open that definition for the fields you can write.

Smallest example

Required fields only, with placeholder values. Replace them with the real intent.

animationJSON
{  "id": {    "$ref": "common#id"  }}