RocketChat/Rocket.Chat · critical · Meteor.Error
error-essential-app-disabled
error-essential-app-disabled
Error message
error-essential-app-disabled
What it means
Meteor.Error('error-essential-app-disabled') is thrown by AppServerOrchestrator.triggerEvent when an app event dispatch is rejected because an app marked as 'essential' is disabled. The apps engine raises EssentialAppDisabledException (from @rocket.chat/apps-engine) when an essential app is bypassed/not running, and the EE orchestrator translates it into this Meteor error so callers get a stable, i18n-able code instead of an engine-internal exception.
Solutions
- Re-enable the essential app: Administration -> Apps -> (app) -> Enable; the error stops on the next event.
- If it will not enable, check the app logs (App Logs) for load failures and reinstall a version compatible with your server.
- Verify the enterprise license is active — lapsed licenses disable EE apps that may be essential.
- If the essential flag is wrong for your deployment, review the app's essential designation with Rocket.Chat support rather than catching and ignoring the error.
Defensive patterns
Strategy: try-catch
Validate before calling
// Pre-check before relying on app event handling in a critical flow
import { Apps } from './orchestrator';
const essentialAppsEnabled = (): boolean => Apps.isLoaded() && !anyEssentialAppDisabled(); Type guard
function isEssentialAppDisabledError(e: unknown): boolean {
return typeof e === 'object' && e !== null && (e as { error?: unknown }).error === 'error-essential-app-disabled';
} Try / catch
try {
await Apps.triggerEvent(AppEvents.IS_MESSAGE_... , payload);
} catch (e) {
if (isEssentialAppDisabledError(e)) {
// fail loudly: page admins / alert; essential apps must be re-enabled — do not swallow
}
throw e;
} Prevention
- Never disable essential apps casually; the flag means the deployment depends on them.
- Alert when an essential app fails to load so it is re-enabled before events start failing.
- Keep licenses covering essential apps active and monitor expiry.
When it happens
Trigger: Any server-side flow that fires an AppEvent (message creation, room events, etc. routed via Apps.triggerEvent) while an essential app (e.g. a bundled app the deployment requires) is disabled or failed to load; handleEvent's catch inspects the cause and rethrows this Meteor error. Common with enterprise setups where certain apps (like WhatsApp/Omnichannel integrations) are flagged essential.
Common situations: Admin manually disabled an essential app from the Apps admin page; essential app crashed during load (incompatible version) and got marked disabled; license lapse disabling enterprise apps flagged essential; app disabled during an upgrade.
Related errors
- App could not be enabled
- error-app-prevented
- error-no-license
- Failed to get apps status from instance
- Marketplace_Invalid_Apps_Engine_Version
AI-assisted analysis of RocketChat/Rocket.Chat@b2c16d5842 (2026-08-18).
Data as JSON: /api/errors/5e385b4c4663b045.
Report an issue: GitHub.
Appendix: source
Thrown at apps/meteor/ee/server/apps/orchestrator.ts:439
async installedApps(filter: IGetAppsFilter = {}): Promise<ProxiedApp[] | undefined> {
if (!this.isLoaded()) {
return;
}
return this._manager.get(filter);
}
async triggerEvent(event: AppEvents, ...payload: any[]): Promise<any> {
if (!this.isLoaded()) {
return;
}
return this._bridges
.getListenerBridge()
.handleEvent({ event, payload } as HandleEvent)
.catch((error: unknown) => {
if (error instanceof EssentialAppDisabledException) {
throw new Meteor.Error('error-essential-app-disabled');
}
throw error;
});
}
}
export const Apps = new AppServerOrchestrator();
registerOrchestrator(Apps);
View on GitHub (pinned to b2c16d5842)