Nubu
  • Features
  • How it works
  • Pricing
  • Integrations
  • FAQ
  • Contact
  • Docs
  • Blog
  • Log in
  • Log inSign up
    Nubu

    Creative automation for teams that ship campaigns, not busywork.

    Try for free
    Product
    FeaturesNubu MotionHow it worksPricingIntegrationsFAQ
    Company
    AboutContactDocsBlogLog in
    Legal
    Privacy policyTerms of serviceData deletion
    © 2026 Bear Studios · Nubu
    Introduction
    Templates overviewInstalling Nubu BuilderAdding template compsAdding propertiesAdding footageSetting defaultsExporting your templateUploading a template
    Flows overviewAvailable nodesAdding a nodeConnecting nodesWorking with dataTemplates and outputsUsing AI nodesBuilding a creative
    CampaignsTemplatesAssetsGlossariesRendersSettings
    Connecting Meta AdsConnecting Google AdsConnecting OpenAIConnecting Gemini AI StudioConnecting Anthropic
    AI Assistant overviewPrompt examplesAssistant settings and controls
    Nubu Motion scripts: the reference
    OverviewQuick startDifferences from After EffectsDeterminism
    JavaScript supportReferences and idsProject scriptsState and timeBudgets and errorsFormatting values
    GlobalTime conversionInterpolationVector mathsRandom and noiseColour conversionOther maths
    LayerCompPropertyKeyframePathGeometryProjectComponentConsoleComponentControlExpressionControl
    The property vocabularyAnimators propertiesAudio propertiesContent propertiesContents propertiesEffects propertiesExpression controls propertiesFills propertiesInstance controls propertiesLayer propertiesLayout propertiesMasks propertiesStrokes propertiesText style propertiesTransform propertiesTrim path properties
    Error codesBudgets
    Changelog
    All docs
    Motion Scripting
    / Errors

    Budgets

    The hard limits a script runs inside, why they exist, and what happens the moment one is exceeded.

    The evaluation runtime is fenced by hard, HOST-INDEPENDENT budgets - the same numbers in the editor, in unit stubs and on the render farm, so a script that fits on one machine fits on all of them. Tripping a budget is a typed, recoverable status on the script, never a crash.

    BudgetValueWhat it fences
    script_polls200Interpreter polls one script may spend on one frame. A runaway loop, endless recursion or a catastrophic regex trips this and reports the typed interrupted - the editor presents it as a fixable budget issue.
    frame_polls2000Interpreter polls ALL scripts together may spend on one frame - the whole frame's ceiling, so a hundred well-behaved scripts cannot add up to a stall.
    memory_bytes67,108,864 bytesThe evaluation realm's memory ceiling. Exceeding it is the typed out_of_memory; the realm survives and the next frame evaluates afresh.
    state_bytes262,144 bytesThe serialised size cap for ONE state() store. A store that grows past it reports the typed state_too_large - keep stores to the working set, not a history of everything.
    stack_bytes262,144 bytesThe JavaScript call-stack guard. Runaway recursion reports the typed stack_overflow before the engine's own stack is at risk.

    The editor additionally runs a WALL-TIME watchdog around live previews so a runaway draft can never wedge the app while you type; the render truth is always the poll budgets above.