{"record":{"id":"5e385b4c4663b045","repo":"RocketChat/Rocket.Chat","slug":"error-essential-app-disabled","errorCode":"error-essential-app-disabled","errorMessage":"error-essential-app-disabled","messagePattern":"error-essential-app-disabled","errorType":"error_code","errorClass":"Meteor.Error","httpStatus":null,"severity":"critical","filePath":"apps/meteor/ee/server/apps/orchestrator.ts","lineNumber":439,"sourceCode":"\tasync installedApps(filter: IGetAppsFilter = {}): Promise<ProxiedApp[] | undefined> {\n\t\tif (!this.isLoaded()) {\n\t\t\treturn;\n\t\t}\n\n\t\treturn this._manager.get(filter);\n\t}\n\n\tasync triggerEvent(event: AppEvents, ...payload: any[]): Promise<any> {\n\t\tif (!this.isLoaded()) {\n\t\t\treturn;\n\t\t}\n\n\t\treturn this._bridges\n\t\t\t.getListenerBridge()\n\t\t\t.handleEvent({ event, payload } as HandleEvent)\n\t\t\t.catch((error: unknown) => {\n\t\t\t\tif (error instanceof EssentialAppDisabledException) {\n\t\t\t\t\tthrow new Meteor.Error('error-essential-app-disabled');\n\t\t\t\t}\n\n\t\t\t\tthrow error;\n\t\t\t});\n\t}\n}\n\nexport const Apps = new AppServerOrchestrator();\nregisterOrchestrator(Apps);\n","sourceCodeStart":421,"sourceCodeEnd":449,"githubUrl":"https://github.com/RocketChat/Rocket.Chat/blob/b2c16d5842cbe6b69b59bdf6fc5e5f1afcd1f0b0/apps/meteor/ee/server/apps/orchestrator.ts#L421-L449","documentation":"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.","triggerScenarios":"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.","commonSituations":"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.","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."],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":"// Pre-check before relying on app event handling in a critical flow\nimport { Apps } from './orchestrator';\nconst essentialAppsEnabled = (): boolean => Apps.isLoaded() && !anyEssentialAppDisabled();","typeGuard":"function isEssentialAppDisabledError(e: unknown): boolean {\n  return typeof e === 'object' && e !== null && (e as { error?: unknown }).error === 'error-essential-app-disabled';\n}","tryCatchPattern":"try {\n  await Apps.triggerEvent(AppEvents.IS_MESSAGE_... , payload);\n} catch (e) {\n  if (isEssentialAppDisabledError(e)) {\n    // fail loudly: page admins / alert; essential apps must be re-enabled — do not swallow\n  }\n  throw e;\n}","preventionTips":["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."],"tags":["apps-engine","essential-app","events","meteor-error","enterprise"],"backgroundTag":"essential-app-disabled","analyzedSha":"b2c16d5842cbe6b69b59bdf6fc5e5f1afcd1f0b0","analyzedAt":"2026-08-18T15:26:39.429Z","contentChangedAt":"2026-08-18T15:26:39.429Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}