{"record":{"id":"ce206ee5892a2bfb","repo":"remotion-dev/remotion","slug":"you-passed-to-the-from-props-of-your-sequence","errorCode":null,"errorMessage":"You passed to the \"from\" props of your <Sequence> an argument of type ${typeof from}, but it must be a number.","messagePattern":"You passed to the \"from\" props of your <Sequence> an argument of type (.+?), but it must be a number\\.","errorType":"exception","errorClass":"TypeError","httpStatus":null,"severity":"error","filePath":"packages/core/src/Sequence.tsx","lineNumber":219,"sourceCode":"\t\t\t\t// @ts-expect-error\n\t\t\t\tJSON.stringify(other.style),\n\t\t);\n\t}\n\n\tif (typeof durationInFrames !== 'number') {\n\t\tthrow new TypeError(\n\t\t\t`You passed to durationInFrames an argument of type ${typeof durationInFrames}, but it must be a number.`,\n\t\t);\n\t}\n\n\tif (durationInFrames <= 0) {\n\t\tthrow new TypeError(\n\t\t\t`durationInFrames must be positive, but got ${durationInFrames}`,\n\t\t);\n\t}\n\n\tif (typeof from !== 'number') {\n\t\tthrow new TypeError(\n\t\t\t`You passed to the \"from\" props of your <Sequence> an argument of type ${typeof from}, but it must be a number.`,\n\t\t);\n\t}\n\n\tif (!Number.isFinite(from)) {\n\t\tthrow new TypeError(\n\t\t\t`The \"from\" prop of a sequence must be finite, but got ${from}.`,\n\t\t);\n\t}\n\n\tif (typeof trimBefore !== 'number') {\n\t\tthrow new TypeError(\n\t\t\t`You passed to the \"trimBefore\" prop of your <Sequence> an argument of type ${typeof trimBefore}, but it must be a number.`,\n\t\t);\n\t}\n\n\tif (trimBefore < 0) {\n\t\tthrow new TypeError(","sourceCodeStart":201,"sourceCodeEnd":237,"githubUrl":"https://github.com/remotion-dev/remotion/blob/78fe4bb3fdb5a2cd68724393d63cb223db333fa7/packages/core/src/Sequence.tsx#L201-L237","documentation":"Thrown by <Sequence> when `from` is present but not of type 'number'. `from` is the sequence's start frame offset; non-numeric values would corrupt every relative-frame calculation downstream. The check reports the actual type to help locate the bad value.","triggerScenarios":"Passing `from=\"10\"` (string), `from={null}`, or `from={undefined}` to <Sequence>; reading `from` from a config that returns a string.","commonSituations":"Loading sequence timing from JSON or URL params without coercion; copy-pasting from a config that uses strings; defaulting from to undefined before a calculation.","solutions":["Pass a numeric literal: `from={30}`.","Coerce string inputs: `from={Number(value)}`.","Type the prop as `number` in your wrapper to get compile-time protection.","Omit `from` if you want the default (0) rather than passing undefined explicitly."],"exampleFix":"// before\n<Sequence from={config.startFrame /* string from URL param */} durationInFrames={30} />\n// after\n<Sequence from={Number(config.startFrame)} durationInFrames={30} />","handlingStrategy":"type-guard","validationCode":"if (typeof from !== 'number') {\n  throw new TypeError(`from must be a number; got ${typeof from}`);\n}","typeGuard":"const isNumber = (v: unknown): v is number => typeof v === 'number';","tryCatchPattern":null,"preventionTips":["Type from as `number` (not optional) in Sequence wrappers.","Coerce string inputs with `Number(value)`.","Omit from rather than passing undefined when you want the default (0).","Validate config schemas at the boundary."],"tags":["sequence","from","props","validation","types"],"backgroundTag":null,"analyzedSha":"78fe4bb3fdb5a2cd68724393d63cb223db333fa7","analyzedAt":"2026-08-12T17:18:50.444Z","schemaVersion":2},"datasetVersion":"2026-08-12T23:17:12.415Z"}