{"record":{"id":"3dd3627cb9e1cf1e","repo":"remotion-dev/remotion","slug":"effects-do-not-support-scale-fields-field-key","errorCode":null,"errorMessage":"Effects do not support scale fields: ${field.key}","messagePattern":"Effects do not support scale fields: (.+?)","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/studio/src/components/Timeline/TimelineEffectPropItem.tsx","lineNumber":286,"sourceCode":"\t\t\t\tvalue,\n\t\t\t\tschema: field.effectSchema,\n\t\t\t\tsetPropStatuses,\n\t\t\t\tclientId,\n\t\t\t});\n\t\t},\n\t\t[\n\t\t\tclientId,\n\t\t\tfield.effectIndex,\n\t\t\tfield.effectSchema,\n\t\t\tfield.key,\n\t\t\tnodePath,\n\t\t\tsetPropStatuses,\n\t\t\tvalidatedLocation,\n\t\t],\n\t);\n\n\tif (field.fieldSchema.type === 'scale') {\n\t\tthrow new Error(`Effects do not support scale fields: ${field.key}`);\n\t}\n\n\tif (!canUseEffectOperations()) {\n\t\treturn <UnsupportedStatus label=\"read only\" formattedValue={false} />;\n\t}\n\n\tif (effectStatus.type === 'cannot-update-effect') {\n\t\tif (effectStatus.reason === 'computed') {\n\t\t\treturn (\n\t\t\t\t<TimelineComputedEffectPropValue\n\t\t\t\t\tpropStatus={{status: 'computed'}}\n\t\t\t\t\tfield={field}\n\t\t\t\t\truntimeValueStore={runtimeValueStore}\n\t\t\t\t\tvalidatedLocation={validatedLocation}\n\t\t\t\t/>\n\t\t\t);\n\t\t}\n","sourceCodeStart":268,"sourceCodeEnd":304,"githubUrl":"https://github.com/remotion-dev/remotion/blob/10db9de07356446fb0edb3c3ae211369b693d18b/packages/studio/src/components/Timeline/TimelineEffectPropItem.tsx#L268-L304","documentation":"Effects declare their editable parameters via an `InteractivitySchema` (a record of field schemas such as `type: 'number'`, `'boolean'`, `'color'`, `'rotation-degrees'`). The `type: 'scale'` field schema (`ScaleFieldSchema` in packages/core/src/interactivity-schema.ts:61) exists for sequence/style props but is not supported for effect props, so TimelineEffectPropItem throws while rendering the effect's prop row (packages/studio/src/components/Timeline/TimelineEffectPropItem.tsx:285). This is a hard authoring error: the Timeline crashes when it tries to display that effect.","triggerScenarios":"A custom effect created via `createEffect` (as used throughout `@remotion/effects`) whose `schema` contains a field with `type: 'scale'`. When that effect is selected in the Studio Timeline and its prop row renders, the component throws `Effects do not support scale fields: <field.key>` and the Timeline UI breaks.","commonSituations":"Authoring a new effect for `@remotion/effects` and reusing a `ScaleFieldSchema` intended for element/sequence props; copying a style-prop schema into an effect schema; version drift where an older effects package ships a field type the installed Studio build rejects.","solutions":["Change the field to `type: 'number'` with `min`/`max`/`step`/`default` — this is what the built-in `scale()` effect itself uses (`{type: 'number', min: 0.1, max: 10, step: 0.1, default: 1}`).","If a built-in effect (not your own) triggers it, align versions: update `@remotion/effects`, `remotion`, and `@remotion/studio` to the same release so the schema and Studio agree.","Reload Studio after fixing the effect schema so the Timeline re-renders from the corrected definition."],"exampleFix":"// before\nconst mySchema = {\n  factor: {type: 'scale', default: 1},\n} as const satisfies InteractivitySchema;\n\n// after\nconst mySchema = {\n  factor: {type: 'number', min: 0.1, max: 10, step: 0.1, default: 1, description: 'Factor'},\n} as const satisfies InteractivitySchema;","handlingStrategy":"validation","validationCode":"import type {InteractivitySchema} from 'remotion';\n\nconst assertNoScaleFields = (schema: InteractivitySchema): void => {\n  for (const [key, field] of Object.entries(schema)) {\n    if (field.type === 'scale') {\n      throw new Error(`Effects do not support scale fields: ${key}`);\n    }\n  }\n};\n\n// run on the effect's schema before registering/using the effect\nassertNoScaleFields(myEffectSchema);","typeGuard":"const isEffectCompatibleField = (\n  field: {type: string},\n): boolean => field.type !== 'scale';","tryCatchPattern":null,"preventionTips":["When authoring effects, restrict field types to the ones built-in effects use: 'number', 'boolean', 'color', 'rotation-degrees', 'translate', 'uv-coordinate'.","For scale-like parameters, use `type: 'number'` with `min`/`max`/`step` (copy the pattern from `@remotion/effects`' own `scale()` schema).","Add a unit assertion over the effect's schema so an unsupported field type fails at build time, not in the Studio Timeline."],"tags":["effects","studio","timeline","interactivity-schema","schema"],"backgroundTag":"unsupported-field-type","analyzedSha":"10db9de07356446fb0edb3c3ae211369b693d18b","analyzedAt":"2026-08-22T21:45:17.748Z","contentChangedAt":"2026-08-22T21:45:17.748Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}