RVE LogoReact Video EditorDOCS
RVE SDK/Rendering/Rendering/Lambda/Common Issues

Common Issues

Troubleshooting guide for Lambda-based rendering issues

This page lists common problems with self-managed Lambda renders and the fixes for them. For the setup steps, see Getting Setup.

Missing AWS credentials

Symptom: The deploy or the render fails at once with a credential or permission error.

Fix:

  1. Make sure that your .env file contains these names:
.env
REMOTION_AWS_ACCESS_KEY_ID=your_key
REMOTION_AWS_SECRET_ACCESS_KEY=your_secret
  1. Make sure that your server loads the .env file.
  2. Validate the user and role policies:
npx remotion lambda policies validate

If both variables are missing, the SDK deploy() helper shows a message and stops without a deploy.

Function not found or wrong region

Symptom: The render does not start, and the error says that the function does not exist.

Fix: The function name and the region are arguments of renderMediaOnLambda() and getRenderProgress(). They are not settings in remotion.config.ts.

  1. Run npx remotion lambda functions ls and copy the function name.
  2. Make sure that your routes use the same region as the deploy. The deploy() helper uses us-east-1 by default.
await renderMediaOnLambda({
  functionName: 'remotion-render-4-0-481-mem3009mb-disk10240mb-240sec',
  region: 'us-east-1',
  // ...
});

Composition not found

Symptom: The render fails with an error that says that no composition has the requested id.

Cause: The SDK sends the editor projectId as id. Your render route passes it as composition. The id does not match the id in remotion/root.tsx.

Fix: Do one of these:

  • Set the composition id to your projectId.
  • Pass one fixed composition id in your render route.

Deploy the site again after the change.

Keyframed items do not move

Symptom: Items with keyframes stay at one position, size, or opacity in the server output. The editor shows the animation.

Cause: Your composition does not render items inside LayerBox.

Fix: Wrap each item in LayerBox from @reactvideoeditor/react-video-editor/remotion/layer-box. Give it the zIndex from layerZIndex(trackIndex). See Custom compositions.

Shapes or Lottie animations are missing

Symptom: Shape items or Lottie items do not appear in the output.

Fix:

  1. Add the ItemType.SHAPE case with ShapeLayerContent to your layer content.
  2. Add the ItemType.LOTTIE case with LottieLayerContent.
  3. Install @remotion/lottie with the same version as the other @remotion/* packages. If it is missing, Lottie items render as empty and no error shows.
  4. Deploy the site again.

If your composition still imports StickerLayerContent, delete that import and its case. The export is removed.

Wrong output size, duration, or frame rate

Symptom: The video has a fixed size such as 1920×1080, or the wrong length. A larger export resolution does not change the output.

Cause: The composition uses fixed values.

Fix: Use calculateMetadata to read width, height, durationInFrames, and fps from inputProps. Multiply the width and the height by inputProps.scale when it is present. See Custom compositions.

Text uses the wrong font

Symptom: Text and captions use Roboto in the output.

Cause: On the server, the text components cannot fetch font data from your app.

Fix: Add fontInfos to the inputProps in your render route. See Fonts.

Old composition code

Symptom: The output does not show your recent changes to the composition.

Fix: Deploy the site again with node deploy.mjs or npx remotion lambda sites create. If you use the same site name, the new code replaces the old code at the same Serve URL.

Memory or timeout errors

Symptom: The render stops with an out-of-memory error or a timeout.

Fix:

  1. Deploy the function with more memory and a longer timeout. With the SDK helper, set ram (MB) and timeout (seconds). With deployFunction(), set memorySizeInMb and timeoutInSeconds.
  2. Lower the work for each function call:
await renderMediaOnLambda({
  framesPerLambda: 40,
  // ...
});

A new function has a new name that includes the memory, disk, and timeout. Update REMOTION_FUNCTION_NAME after the deploy.

Media does not load

Symptom: Images, videos, or sounds are missing in the output.

Fix:

  • Make sure that each media URL is public, or that it has a signed URL that is valid for the full render.
  • Do not use localhost URLs. The Lambda function cannot get them.
  • If an upload is not complete, the SDK stops the render before it sends the request. Wait for the upload, then render again.

The editor shows no progress

Symptom: The render starts, but the progress stays at 0 or the editor shows an error.

Fix: The progress route must return one of these shapes:

| { type: 'progress'; progress: number } // from 0 to 1
| { type: 'done'; url: string; size: number }
| { type: 'error'; message: string }

Do not return the raw result of getRenderProgress(). Map it to one of these shapes. See the progress route.