packages/docs/docs/timeout.mdx
The following error:
A delayRender() was called but not cleared after 28000ms. See https://remotion.dev/docs/timeout for help. The delayRender was called
generally happens if a delayRender() handle has been created and not been cleared afterwards. Remotion will wait to make a screenshot, but aborts it by default after 30 seconds to not hang forever.
continueRender() was not calledYour code might have a problem where you call delayRender() but never clear it. This will cause Remotion to wait forever before it starts rendering and leads to a timeout message.
Resolution: Check your code and make sure you are calling continueRender().
If you rely on network assets such as fonts, images, videos or audio and you don't have internet connection or requests get blocked by a firewall. Special attention has to be given to when you are rendering in the cloud, Amazon VPC could for example block outgoing network requests and lead to a timeout.
Resolution: Make sure all network resources you require can be accessed.
When setting the concurrency too high, Chrome might decide to not load some <Html5Video />s which can lead to a timeout error.
We consider this a bug in Remotion and plan to fix it in the future.
Workaround: Reduce the concurrency to a level where Chrome can load all videos.
Older versions of Remotion had bugs which could lead to timeout. Especially 1.x releases could timeout when importing large assets
Resolution: Upgrade to the latest Remotion version using npm run upgrade.
If you render a video using <OffthreadVideo>, then the video needs to be downloaded before it can be read. If the video is large and takes longer than the timeout to be downloaded, then the timeout will be triggered. In that you should increase the timeout.
Open an issue and try to describe your issue in a way that is reproducible for us. We will try to help you out.
See here for this specific timeout message.
Sometimes, you cannot avoid a frame taking longer than 30 seconds to render. For example:
You can increase the default timeout:
--timeout CLI flagtimeoutInMilliseconds option in renderStill(), renderFrames(), getCompositions(), renderMedia(), renderMediaOnLambda(), renderStillOnLambda(), renderMediaOnVercel(), renderStillOnVercel(), renderStillOnCloudRun() and renderMediaOnCloudRun()Config.setDelayRenderTimeoutInMilliseconds() option in the config file, if you render on the CLIdelayRender() call using the timeoutInMilliseconds option<AvailableFrom v="4.0.140"/><Audio>, <Video>, <Html5Audio>, <Html5Video> and <IFrame> tags support a delayRenderTimeoutInMilliseconds prop to control the value of timeoutInMilliseconds for the delayRender() call that those components make<AvailableFrom v="4.0.140"/>If you encounter a timeout and don't know where it came from, you can add a label as a parameter:
import {delayRender} from 'remotion';
// ---cut---
delayRender('Fetching data from API...');
If the call times out, the label will be referenced in the error message:
Uncaught Error: A delayRender() "Fetching data from API..." was called but not cleared after 28000ms. See https://remotion.dev/docs/timeout for help. The delayRender was called