Skip to content

render: --strict-variables never reaches the producer on a local render, so the 0.9.34 in-browser check (VARIABLES_INVALID) does not run #7569

Open

Description

@asakir44

Summary

0.9.34 (#7548) added an in-browser check: with strict variables on, a render fails with VARIABLES_INVALID when a variable is not declared by the page. On a local hyperframes render … --strict-variables, that check never runs, because the CLI does not pass strictVariables to the producer. Only the static check runs. For a page with no data-composition-variables, the static check has nothing to compare, so the render succeeds with every variable undeclared.

Batch render, the producer server, Lambda and Cloud Run do pass the flag, so local and remote renders of the same project now behave differently.

Version

hyperframes 0.9.34 (npm, gitHead 7a4dfb76), Linux x64, Node 26.

Reproduce

  1. Create a project whose index.html has a text element and no data-composition-variables.
  2. Run npx [email protected] render . --output out.mp4 --variables '{"title":"x"}' --strict-variables
  3. Expected: the render fails with VARIABLES_INVALID (undeclared title).
    Actual: the render succeeds and exits 0.

Measured on 2026-11-11 with npx --yes [email protected] render . --output out.mp4 --fps 30 --workers 1 --no-browser-gpu --variables '{"title":"x"}' --strict-variables on a 640×360, 1 s page (a GSAP timeline and one #copy div filled from window.__hyperframes.getVariables().title, no data-composition-variables): exit code 0, out.mp4 written (4755 bytes), log ends with artifact validated. No variable-related message was printed; the only notice was Continuing render despite lint issues. Use --strict to block errors.

Reading the dist (below), batch render, the producer server, Lambda and Cloud Run do set strictVariables; I did not run those paths.

Where it happens (published dist of 0.9.34)

  • dist/cli.js maps render to render-CDWBVWJP.js.
  • dist/chunk-TLU5DPES.js builds the plan with strictVariables: args["strict-variables"] ?? false.
  • dist/chunk-UFKWSLJ5.js uses plan.strictVariables only in reportSingleRenderNotes, which calls validateVariablesAgainstProject + reportVariableIssues (the static check). The batch path in the same file forwards strictVariables: plan.strictVariables to prepareBatchRender.
  • dist/render-CDWBVWJP.js builds the producer request (producer.renderConfigFromRequest(request, …) → createRenderJob) with variables and strictness, but no strictVariables (the file has 0 occurrences of strictVariables).
  • dist/chunk-Z64I7KJZ.js: checkStrictVariables(session) returns early unless session.options.strictVariables is set, so assertVariablesMatchPage is never called for a local render.

Suggested fix

Forward strictVariables from the render plan into the producer request built in the local render path (the same field the batch, server and cloud paths already set), and add a test that a local render with --strict-variables and an undeclared variable fails with VARIABLES_INVALID.

If the local-render behaviour is intentional, the --strict-variables help text and the 0.9.34 release note should say the in-browser check applies only to batch and remote renders.

Activity

  1. added
    bugSomething isn't working
    triage/readyAccepted scope, current evidence, acceptance criteria, and validation path are recorded.
    difficulty/easyLocalized change with a known approach, limited risk, and straightforward verification.
    on Nov 12, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingdifficulty/easyLocalized change with a known approach, limited risk, and straightforward verification.triage/readyAccepted scope, current evidence, acceptance criteria, and validation path are recorded.

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions