{"record":{"id":"05d88371d33abf2f","repo":"RocketChat/Rocket.Chat","slug":"method-not-implemented","errorCode":null,"errorMessage":"Method not implemented.","messagePattern":"Method not implemented\\.","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"apps/meteor/app/apps/server/bridges/settings.ts","lineNumber":36,"sourceCode":"\t\tconst settings = await Settings.find({ secret: false }).toArray();\n\t\treturn settings.map((s) => this.orch.getConverters()?.get('settings').convertToApp(s));\n\t}\n\n\tprotected async getOneById(id: string, appId: string): Promise<ISetting> {\n\t\tthis.orch.debugLog(`The App ${appId} is getting the setting by id ${id}.`);\n\n\t\tconst setting = await this.getReadableSettingById(id, appId);\n\t\tif (!setting) {\n\t\t\tthrow new Error(`The setting \"${id}\" is not readable.`);\n\t\t}\n\n\t\treturn setting;\n\t}\n\n\tprotected async hideGroup(name: string, appId: string): Promise<void> {\n\t\tthis.orch.debugLog(`The App ${appId} is hidding the group ${name}.`);\n\n\t\tthrow new Error('Method not implemented.');\n\t}\n\n\tprotected async hideSetting(id: string, appId: string): Promise<void> {\n\t\tthis.orch.debugLog(`The App ${appId} is hidding the setting ${id}.`);\n\n\t\tif (!(await this.isReadableById(id, appId))) {\n\t\t\tthrow new Error(`The setting \"${id}\" is not readable.`);\n\t\t}\n\n\t\tthrow new Error('Method not implemented.');\n\t}\n\n\tprotected async isReadableById(id: string, appId: string): Promise<boolean> {\n\t\tthis.orch.debugLog(`The App ${appId} is checking if they can read the setting ${id}.`);\n\t\tconst setting = await Settings.findOneById(id);\n\t\treturn Boolean(setting && !setting.secret);\n\t}\n","sourceCodeStart":18,"sourceCodeEnd":54,"githubUrl":"https://github.com/RocketChat/Rocket.Chat/blob/b2c16d5842cbe6b69b59bdf6fc5e5f1afcd1f0b0/apps/meteor/app/apps/server/bridges/settings.ts#L18-L54","documentation":"hideGroup on the AppSettingBridge is a stub: Rocket.Chat logs the call and unconditionally throws 'Method not implemented.'. The apps-engine API surface exposes the operation, but the server never implemented hiding a settings group on behalf of an app, so every call fails regardless of arguments.","triggerScenarios":"App calls the settings modification API to hide a settings group by name (hideGroup). Always throws; no argument makes it succeed.","commonSituations":"Apps copied from samples or older code that call hide APIs; apps wanting to hide their own settings group after initial setup.","solutions":["Remove the hideGroup call: the operation is unsupported server-side; control section visibility in the app's own settings declaration instead.","If the capability is required, track/file the upstream feature request against the apps-engine bridge.","For 'hide my own settings after setup', store a configured flag in app storage and stop rendering the section in your UI logic instead of hiding it."],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"If the call sits on a shared path, catch 'Method not implemented.' and continue — it is deterministic and has no recoverable state.","preventionTips":["Audit apps for hide-group calls before shipping; they always fail on Rocket.Chat.","Watch apps-engine release notes for the bridge becoming implemented."],"tags":["apps-engine","settings","not-implemented","unsupported"],"backgroundTag":"unsupported-operation","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"}