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
- Re-export the animation without split-dimension (separate X/Y) easing on the offending property.
- Upgrade lottie-android; support for split dimensions may have been extended to more animation types.
- 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
- Re-export animations without split-dimension (separate X/Y) easing on unsupported properties.
- Keep lottie-android up to date; split-dimension coverage improves over releases.
- In debug builds, parse every asset with LottieCompositionFactory to catch unsupported combos early.
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
- Missing values for keyframe.
- Missing values for keyframe.
- Missing values for keyframe.
- Missing values for keyframe.
- Missing values for keyframe.
AI-assisted analysis of airbnb/lottie-android@05ea92e903 (2026-08-14).
Data as JSON: /api/errors/5f115b25790585b4.
Report an issue: GitHub.