{"record":{"id":"0bb9efcc76598ce3","repo":"RocketChat/Rocket.Chat","slug":"failed-to-notify-about-the-setting-change","errorCode":null,"errorMessage":"failed to notify about the setting change.","messagePattern":"failed to notify about the setting change\\.","errorType":"console","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"apps/meteor/app/apps/server/bridges/details.ts","lineNumber":11,"sourceCode":"import type { IAppServerOrchestrator } from '@rocket.chat/apps';\nimport { AppDetailChangesBridge as DetailChangesBridge } from '@rocket.chat/apps/dist/server/bridges/AppDetailChangesBridge';\nimport type { ISetting } from '@rocket.chat/apps-engine/definition/settings';\n\nexport class AppDetailChangesBridge extends DetailChangesBridge {\n\tconstructor(private readonly orch: IAppServerOrchestrator) {\n\t\tsuper();\n\t}\n\n\tprotected onAppSettingsChange(appId: string, setting: ISetting): void {\n\t\tconst logFailure = () => console.warn('failed to notify about the setting change.', appId);\n\n\t\ttry {\n\t\t\tthis.orch.getNotifier().appSettingsChange(appId, setting).catch(logFailure);\n\t\t} catch (e) {\n\t\t\tlogFailure();\n\t\t}\n\t}\n}\n","sourceCodeStart":1,"sourceCodeEnd":20,"githubUrl":"https://github.com/RocketChat/Rocket.Chat/blob/b2c16d5842cbe6b69b59bdf6fc5e5f1afcd1f0b0/apps/meteor/app/apps/server/bridges/details.ts#L1-L20","documentation":"When an app setting changes, the bridge forwards it to running apps via the orchestrator's notifier (appSettingsChange). The promise rejected — or the call threw synchronously — and the bridge only prints this console.warn including the appId (but, notably, not the error itself). Impact is limited: apps miss the live update for that one setting and pick up the new value on the next app load/restart.","triggerScenarios":"The target app being uninstalled, disabled or reloaded concurrently while the notification is in flight; the apps-engine notifier hitting a dead app instance; memory pressure or orchestrator restart racing the setting save.","commonSituations":"Saving app settings in the admin UI while the app updates/restarts; development hot-reload of apps racing setting saves; transient races during mass app operations.","solutions":["Usually transient: re-save the setting or restart the affected app to re-sync its values","Confirm the app reflects the new value after its next load (settings are read on startup regardless)","Escalate only if every save fails — and note the warn omits the error, so reproduce with debug logging to capture the cause"],"exampleFix":"// current: failure detail is dropped\nconst logFailure = () => console.warn('failed to notify about the setting change.', appId);\n// better: include the rejection reason\nconst logFailure = (err?: unknown) => console.warn('failed to notify about the setting change.', appId, err);","handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"const logFailure = (err?: unknown) => console.warn('failed to notify about the setting change.', appId, err);\ntry {\n\tthis.orch.getNotifier().appSettingsChange(appId, setting).catch(logFailure);\n} catch (e) {\n\tlogFailure(e);\n}","preventionTips":["Avoid saving app settings while the app is being updated, disabled or reloaded","Apps read settings on load, so a missed live notification self-heals on the next app restart","When debugging, include the rejection reason in the warn — the current log drops it"],"tags":["apps-engine","settings","notifications","bridges"],"backgroundTag":"apps-engine-notification-failed","analyzedSha":"b2c16d5842cbe6b69b59bdf6fc5e5f1afcd1f0b0","analyzedAt":"2026-08-18T15:26:39.429Z","contentChangedAt":"2026-08-18T15:26:39.429Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}