Limitations
Known constraints, out-of-scope features, and things to be aware of before using @remocn/render-sdk.
Out of scope
The following features are not implemented by this SDK and are not planned:
- Listing renders — no render list API exists. Query your own
StateStoredirectly if you need render history. - Cancelling renders — no cancel API is provided. Cancel the underlying Remotion render through
@remotion/rendereror Lambda directly. - Deleting renders — no delete API is provided. Call
store.delete(handle)and remove the output file yourself. - Uploading assets — no asset upload API is provided. Pass a publicly reachable URL in
inputPropsorserveUrl. - HTTP server — the SDK does not expose an HTTP server. Wire it into your own framework using the framework guides.
Server adapter constraints
- In-process queue only. The
p-limitlimiter lives inside the process. In multi-process deployments (e.g. PM2 cluster, Kubernetes withreplicas > 1) each process has its own queue and concurrency limit — total concurrency across the cluster equalsconcurrency × processCount. InMemoryStoreis not shared across processes. If a render starts on process A and is polled on process B, process B will returnnull. Use a networked store (Redis, database) for multi-process deployments.- Renders do not survive process restart. Records held in
InMemoryStoreare lost when the process exits. In-flight renders writing toworkDirleave partial files. getUrl()returns a string, not a verified URL. The SDK does not check that the file exists on disk or thatpublicUrlis reachable before returning. Call it only afterstatus === "done".- The SDK does not serve files.
publicUrlis concatenated with the filename — the SDK does not create an HTTP server. You must exposeworkDiryourself.
Lambda adapter constraints
- No state persistence. The lambda adapter does not use a
StateStore. If theRenderSdkinstance is lost (e.g. serverless function cold start), you can still reconstruct the handle withencodeLambdaHandleand pollgetStateas long as you knowrenderId,bucket, andext. getUrl()throws before the render is done. The S3outputFileURL isnulluntilstatus === "done". CallinggetUrl()before then throwsRenderError("not_found").- AWS permissions must be provisioned externally. The SDK does not create IAM roles, S3 buckets, or Lambda functions. See the Lambda adapter and the Remotion Lambda IAM docs.
- Region must match. The
regioninLambdaConfigmust match where the function and S3 bucket were deployed.
General
- Remotion peer dependencies are optional but required at runtime.
@remotion/renderermust be installed to useRenderServer;@remotion/lambdamust be installed to useRenderLambda. Importing the wrong subpath without the peer installed will throw at runtime. waitForCompletionpolls, it does not subscribe. There is no webhook or push notification built intowaitForCompletion. UseintervalMsto tune poll frequency (default ~1000 ms). For webhook delivery, pass awebhookoption toLambdaOptions— this is forwarded to Remotion Lambda and fires independently ofwaitForCompletion.- No built-in retry on transient errors. If
getStatethrows a network error duringwaitForCompletion, the entire call rejects. Add retry logic in your own wrapper if needed.