2.9.0 is in early access. Plugin developers, please test before it goes public. The changes that may affect you:
MarkdownView.editor is now available before onload finishes — guard any code that assumed otherwise.
workspace.getActiveFile() returns null while a canvas is focused (previously the canvas file).
New: vault.process(file, fn) for atomic read-modify-write. Prefer it over read + modify.
await this.app.vault.process(file, (text) => text.replace(/TODO/g, 'DONE'));
Report breakage in this thread with your plugin name.