remotion-dev/remotion · error
shutDownStudio() is not supported in Browser Studio
Error message
shutDownStudio() is not supported in Browser Studio
What it means
The Browser Studio (Studio running purely in a hosted browser context) does not implement the shutdown-studio operation, so shutDownStudio() rejects calls there. Only the locally-running Studio server can be shut down via this API.
Source
Thrown at packages/studio/src/api/shut-down-studio.ts:17
/**
* @description Shuts down the Remotion Studio.
* @see [Documentation](https://www.remotion.dev/docs/studio/shut-down-studio)
*/
import type {ShutdownStudioResponse} from '@remotion/studio-shared';
import {getRemotionEnvironment} from 'remotion';
import {callApi} from '../components/call-api';
import {getBrowserStudioOperations} from '../helpers/browser-studio-operations';
export const shutDownStudio = (): Promise<ShutdownStudioResponse> => {
if (!getRemotionEnvironment().isStudio) {
throw new Error('shutDownStudio() is only available in the Studio');
}
if (getBrowserStudioOperations() !== null) {
throw new Error('shutDownStudio() is not supported in Browser Studio');
}
if (window.remotion_isReadOnlyStudio) {
throw new Error('shutDownStudio() is not available in read-only Studio');
}
return callApi('/api/shutdown-studio', {});
};
View on GitHub (pinned to b2f4e34732)
Solutions
- Check getBrowserStudioOperations() !== null and skip/hide the shutdown control in Browser Studio
- Only expose shutDownStudio() UI in the local Studio build
- Handle the thrown error and show a 'not supported here' message to the user
Example fix
// before
await shutDownStudio();
// after
import {getBrowserStudioOperations} from '../helpers/browser-studio-operations';
if (getBrowserStudioOperations() === null) {
await shutDownStudio();
} Defensive patterns
Strategy: type-guard
Validate before calling
import {getBrowserStudioOperations} from '../helpers/browser-studio-operations';
const canShutdown = getBrowserStudioOperations() === null; Type guard
const isLocalStudio = (): boolean => getBrowserStudioOperations() === null;
Try / catch
try {
await shutDownStudio();
} catch (e) {
if ((e as Error).message.includes('Browser Studio')) {
// hide shutdown UI or notify user
} else { throw e; }
} Prevention
- Feature-detect Browser Studio before showing shutdown controls
- Keep Studio API calls behind environment checks
- Test shared Studio panels in both local and Browser Studio builds
When it happens
Trigger: Calling shutDownStudio() while getBrowserStudioOperations() !== null, i.e. inside the Browser Studio build of the Studio UI.
Common situations: Shared Studio components/panels whose code executes both in the desktop/local Studio and the hosted Browser Studio; extensions or plugins calling the API unconditionally.
Understand the failure class
Background: UnsupportedOperationException and "is not supported" errors: when a library deliberately refuses a call — this error's family across 30 libraries.
Related errors
- shutDownStudio() is only available in the Studio
- Cannot call `getInputProps()` - window.remotion_inputProps i
- "Worker" is not available. Cannot call parseMediaOnWebWorker
- restartStudio() is only available in the Studio
- restartStudio() is not supported in Browser Studio
AI-assisted analysis of remotion-dev/remotion@b2f4e34732 (2026-09-09).
Data as JSON: /api/errors/14954d9da2861225.
Report an issue: GitHub.