remotion-dev/remotion · error · TypeError
extrapolateRight: "identity" is not supported for…
Error message
extrapolateRight: "identity" is not supported for non-numeric strings
What it means
Thrown by interpolateDiscreteString when input exceeds the last inputRange value and options.extrapolateRight is 'identity'. As with the left side, identity extrapolation has no meaningful numeric return for a non-numeric string outputRange, so it is rejected.
Solutions
- Use extrapolateRight: 'clamp' (returns the last output), 'extend', or 'wrap'.
- Clamp the input before calling interpolate().
Example fix
// before
interpolate(t, [0, 1], ["red", "blue"], {
easing: Easing.step1,
extrapolateRight: 'identity',
});
// after
interpolate(t, [0, 1], ["red", "blue"], {
easing: Easing.step1,
extrapolateRight: 'clamp',
}); Defensive patterns
Strategy: validation
Validate before calling
function isDiscreteStringRange(outputRange: readonly (string | number)[]): boolean {
return outputRange.some((o) => typeof o === 'string'
&& o.trim().split(/\s+/).some((p) => !/^([+-]?(?:\d+\.?\d*|\.\d+))([a-zA-Z%]+)?$/.test(p)
&& !/^(left|right|top|bottom|center)$/i.test(p)));
}
if (isDiscreteStringRange(outputRange) && options?.extrapolateRight === 'identity') {
throw new Error('Use extrapolateRight: clamp|extend|wrap for discrete strings');
} Prevention
- For non-numeric string ranges use extrapolateRight: 'clamp', 'extend', or 'wrap' — never 'identity'.
- Clamp the input upstream so it cannot exceed the last inputRange value.
When it happens
Trigger: interpolate(t, [0, 1], ["red", "blue"], {easing: Easing.step1, extrapolateRight: 'identity'}) called with t > 1.
Common situations: Carrying 'identity' right-extrapolation over from a numeric interpolate() call to a discrete string call; ranges where the input can overshoot the top.
Related errors
- extrapolateLeft: "identity" is not supported for…
- Non-numeric strings can only be interpolated using…
- bezier x values must be in [0, 1] range
- Cannot interpolate a multi-angle rotate value with an axis…
- Cannot interpolate values with different units on axis : and
AI-assisted analysis of remotion-dev/remotion@46a3a6bf13 (2026-08-12).
Data as JSON: /api/errors/0889abf7b29c764f.
Report an issue: GitHub.
Appendix: source
Thrown at packages/core/src/interpolate.ts:1051
if (options?.extrapolateLeft === 'identity') {
throw new TypeError(
'extrapolateLeft: "identity" is not supported for non-numeric strings',
);
}
if (options?.extrapolateLeft === 'wrap') {
const wrapRange = inputMax - inputMin;
resolvedInput =
((((resolvedInput - inputMin) % wrapRange) + wrapRange) % wrapRange) +
inputMin;
} else {
return outputRange[0];
}
}
if (resolvedInput > inputMax) {
if (options?.extrapolateRight === 'identity') {
throw new TypeError(
'extrapolateRight: "identity" is not supported for non-numeric strings',
);
}
if (options?.extrapolateRight === 'wrap') {
const wrapRange = inputMax - inputMin;
resolvedInput =
((((resolvedInput - inputMin) % wrapRange) + wrapRange) % wrapRange) +
inputMin;
} else {
return outputRange[outputRange.length - 1];
}
}
const range = findRange(resolvedInput, inputRange);
return resolvedInput >= inputRange[range + 1]
? outputRange[range + 1]
: outputRange[range];View on GitHub (pinned to 46a3a6bf13)