I have a settings manager plugin so I can implement a settings system similar to vscode (separate user & workspace settings, that are merged).
It writes to .obsidian/app.json during Plugin.onLoad in order to make sure the settings are up-to-date, but the changes aren’t displayed.
The following workaround does work, but obviously “wait 500ms that should be ok” isn’t a great strategy
// for some reason if we don't wait a bit, the file
// isn't actually written
debounce(
async () => await this.mergeSettings(),
500 /*ms*/,
)()