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

  1. Re-enable the essential app: Administration -> Apps -> (app) -> Enable; the error stops on the next event.
  2. If it will not enable, check the app logs (App Logs) for load failures and reinstall a version compatible with your server.
  3. Verify the enterprise license is active — lapsed licenses disable EE apps that may be essential.
  4. 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

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


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)