airbnb/lottie-android · error · IllegalStateException
Missing values for keyframe.
Error message
Missing values for keyframe.
What it means
Thrown by PointKeyframeAnimation#getValue (the split-dimension overload) when a keyframe's startValue or endValue is null. Point (position) keyframes need two PointF endpoints to interpolate; a null endpoint indicates incomplete keyframe data.
Source
Thrown at lottie/src/main/java/com/airbnb/lottie/animation/keyframe/PointKeyframeAnimation.java:22
import com.airbnb.lottie.value.Keyframe;
import java.util.List;
public class PointKeyframeAnimation extends KeyframeAnimation<PointF> {
private final PointF point = new PointF();
public PointKeyframeAnimation(List<Keyframe<PointF>> keyframes) {
super(keyframes);
}
@Override public PointF getValue(Keyframe<PointF> keyframe, float keyframeProgress) {
return getValue(keyframe, keyframeProgress, keyframeProgress, keyframeProgress);
}
@Override protected PointF getValue(Keyframe<PointF> keyframe, float linearKeyframeProgress, float xKeyframeProgress, float yKeyframeProgress) {
if (keyframe.startValue == null || keyframe.endValue == null) {
throw new IllegalStateException("Missing values for keyframe.");
}
PointF startPoint = keyframe.startValue;
PointF endPoint = keyframe.endValue;
if (valueCallback != null) {
//noinspection ConstantConditions
PointF value = valueCallback.getValueInternal(keyframe.startFrame, keyframe.endFrame, startPoint,
endPoint, linearKeyframeProgress, getLinearCurrentKeyframeProgress(), getProgress());
if (value != null) {
return value;
}
}
point.set(startPoint.x + xKeyframeProgress * (endPoint.x - startPoint.x),
startPoint.y + yKeyframeProgress * (endPoint.y - startPoint.y));
return point;
}View on GitHub (pinned to 05ea92e903)
Solutions
- Inspect the JSON position keyframe and confirm both "s" and "e" point arrays are present.
- Re-export the animation.
- Align the lottie-android version with the file.
- Simplify the path/position animation to remove the malformed keyframe.
Defensive patterns
Strategy: try-catch
Try / catch
lottieAnimationView.setFailureListener(t -> {
if (t instanceof IllegalStateException && "Missing values for keyframe.".equals(t.getMessage())) {
Log.w(TAG, "position keyframe missing point", t);
} else throw new RuntimeException(t);
}); Prevention
- Confirm each position keyframe has both start and end point arrays.
- Re-export and pin a compatible library version.
When it happens
Trigger: Evaluating a position/path keyframe whose start or end PointF failed to parse (missing "s"/"e" point arrays in the JSON); the valueCallback branch is reached only after the null check passes, so a missing value throws first.
Common situations: Malformed Lottie JSON with a partially-defined position keyframe; an export that omitted the end point on a hold frame; schema mismatch.
Related errors
- Missing values for keyframe.
- Missing values for keyframe.
- Missing values for keyframe.
- Missing values for keyframe.
- This animation does not support split dimensions!
AI-assisted analysis of airbnb/lottie-android@05ea92e903 (2026-08-14).
Data as JSON: /api/errors/e8b8ce6cb03a2439.
Report an issue: GitHub.