Motion+
DocsAI Kit

SDK State

Alpha

Unified state for spring and bezier animations, with URL sharing built in.

The AI Kit SDK provides some basic state models for handling animation editing.

TransitionState

Transitions represent Motion's animation options.

TransitionState is always created with both easing and spring values, with type determining which is currently active, to allow for easy switching between transition type without dropping state.

import { TransitionState } from "motion-studio"

const state = new TransitionState()

The format is as following:

type TransitionType = "easing" | "spring"

interface EasingConfig {
    duration: number
    ease: BezierDefinition
}

interface SpringConfig {
    duration: number
    bounce: number
    stiffness: number
    damping: number
    mass: number
    type: "time" | "physics"
    isVisualDuration: boolean
}

interface TransitionState {
  type: TransitionType
  easing: EasingConfig
  spring: SpringConfig
}

URL serialisation

These utilities allow you to serialise the TransitionState into a URL query parameter, and back out of a URL, enabling shareable configuration links.

toShareQueryString

Serialises a TransitionState object into a URL query string.

import { toShareQueryString } from "motion-studio"

const queryString = toShareQueryString(state)
// Output: "transition=%7B%22type%22%3A%22spring%22...%7D"

fromShareURL

Parses a new TransitionState out of a full URL string. Returns null if the transition parameter is missing or invalid.

import { fromShareURL } from "motion-studio"

const state = fromShareURL(window.location.href)