airbnb/lottie-android · error · UnsupportedOperationException

This animation does not support split dimensions!

Error message

This animation does not support split dimensions!

What it means

Thrown by the default BaseKeyframeAnimation#getValue(keyframe, linearProgress, xProgress, yProgress). This three-argument overload exists for animations that support separate X/Y interpolation; the base implementation throws because most animation types do not support split dimensions. Only subclasses that override it (e.g. PointKeyframeAnimation) accept split-axis progress.

Source

Thrown at lottie/src/main/java/com/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation.java:211

      valueCallback.setAnimation(this);
    }
  }

  public boolean hasValueCallback() {
    return valueCallback != null;
  }

  /**
   * keyframeProgress will be [0, 1] unless the interpolator has overshoot in which case, this
   * should be able to handle values outside of that range.
   */
  abstract A getValue(Keyframe<K> keyframe, float keyframeProgress);

  /**
   * Similar to {@link #getValue(Keyframe, float)} but used when an animation has separate interpolators for the X and Y axis.
   */
  protected A getValue(Keyframe<K> keyframe, float linearKeyframeProgress, float xKeyframeProgress, float yKeyframeProgress) {
    throw new UnsupportedOperationException("This animation does not support split dimensions!");
  }

  private static <T> KeyframesWrapper<T> wrap(List<? extends Keyframe<T>> keyframes) {
    if (keyframes.isEmpty()) {
      return new EmptyKeyframeWrapper<>();
    }
    if (keyframes.size() == 1) {
      return new SingleKeyframeWrapper<>(keyframes);
    }
    return new KeyframesWrapperImpl<>(keyframes);
  }

  private interface KeyframesWrapper<T> {

    boolean isEmpty();

    boolean isValueChanged(float progress);

View on GitHub (pinned to 05ea92e903)

Solutions

  1. Re-export the animation without split-dimension (separate X/Y) easing on the offending property.
  2. Upgrade lottie-android; support for split dimensions may have been extended to more animation types.
  3. Identify the offending layer/keyframe by enabling Lottie debug logging and simplify that property's keyframes.
Defensive patterns

Strategy: try-catch

Try / catch

// This is internal to the engine; surface and degrade rather than crash
lottieAnimationView.setFailureListener(t -> {
  if (t instanceof UnsupportedOperationException
      && t.getMessage() != null && t.getMessage().contains("split dimensions")) {
    Log.w(TAG, "animation unsupported on this build, skipping", t);
  } else throw new RuntimeException(t);
});

Prevention

When it happens

Trigger: Internally, the animation engine routes split-dimension interpolation (e.g. a path/position with separate X and Y easing) to an animation subclass whose getValue(x,y) was not overridden. This reflects an unsupported combination of split-path keyframes with an animation type that only handles unified progress.

Common situations: A Lottie file with split easing on a property whose keyframe animation type does not implement split dimensions, often from an edge-case After Effects export; an unsupported animated property type combined with separate dimension keyframes.

Related errors


AI-assisted analysis of airbnb/lottie-android@05ea92e903 (2026-08-14). Data as JSON: /api/errors/5f115b25790585b4. Report an issue: GitHub.