RocketChat/Rocket.Chat · warning
failed to notify about the setting change.
Error message
failed to notify about the setting change.
What it means
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.
Source
Thrown at apps/meteor/app/apps/server/bridges/details.ts:11
import type { IAppServerOrchestrator } from '@rocket.chat/apps';
import { AppDetailChangesBridge as DetailChangesBridge } from '@rocket.chat/apps/dist/server/bridges/AppDetailChangesBridge';
import type { ISetting } from '@rocket.chat/apps-engine/definition/settings';
export class AppDetailChangesBridge extends DetailChangesBridge {
constructor(private readonly orch: IAppServerOrchestrator) {
super();
}
protected onAppSettingsChange(appId: string, setting: ISetting): void {
const logFailure = () => console.warn('failed to notify about the setting change.', appId);
try {
this.orch.getNotifier().appSettingsChange(appId, setting).catch(logFailure);
} catch (e) {
logFailure();
}
}
}
View on GitHub (pinned to b2c16d5842)
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
Example fix
// current: failure detail is dropped
const logFailure = () => console.warn('failed to notify about the setting change.', appId);
// better: include the rejection reason
const logFailure = (err?: unknown) => console.warn('failed to notify about the setting change.', appId, err); Defensive patterns
Strategy: try-catch
Try / catch
const logFailure = (err?: unknown) => console.warn('failed to notify about the setting change.', appId, err);
try {
this.orch.getNotifier().appSettingsChange(appId, setting).catch(logFailure);
} catch (e) {
logFailure(e);
} Prevention
- 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
When it happens
Trigger: 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.
Common situations: 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.
Related errors
- The setting "${id}" is not readable.
- Method not implemented.
- The setting "${setting.id}" is not readable.
- error-push-disabled
- The command is not currently disabled: "${cmd}"
AI-assisted analysis of RocketChat/Rocket.Chat@b2c16d5842 (2026-08-18).
Data as JSON: /api/errors/0bb9efcc76598ce3.
Report an issue: GitHub.