QuincyLeo30 downloadsOnly records the scroll position of files, not the cursor position. No flickering, no jumping.
English | 简体中文
An Obsidian plugin that remembers how far you scrolled in each Markdown file and takes you back there when you open the file again. Only the scroll position is recorded, not the cursor position. No flickering, no jumping.
This is a fork of Simply Scroll by HornatX, which is no longer maintained. It uses a new plugin id, simply-scroll-next, and is installed and released independently of the original. I will keep maintaining it. Issues and PRs are welcome for any problems you run into.

isDesktopOnly: false)simply-scroll-next and the original plugin (simply-scroll) can't be enabled at the same time. Disable the original plugin before using this one.
simply-scroll-next (by QuincyLeo)<Your Vault>/.obsidian/plugins/simply-scroll-next/
├── main.js
├── manifest.json
└── styles.css
.obsidian/plugins/simply-scroll-next/ inside your vaultnpm install in the repo rootTARGET_DIR at the top of build.sh to point at the directory above, then run ./build.sh. It bundles via esbuild and copies main.js / manifest.json / styles.css for youThere is nothing to configure or trigger:
scroll listener on window handles .cm-scroller, .markdown-reading-view and .markdown-preview-view. While you scroll, it stores currentMode.getScroll() under the file path at most every 300 ms. data.json is written at most every 2 s, and immediately when the active leaf changes, when a recorded file is renamed or deleted, and on unload.WorkspaceLeaf.prototype.setViewState. When a Markdown file with a saved position is opened without a jump target, and the leaf isn't already showing that file, it passes the saved position as scroll in the ephemeral state, drops line and cursor, and sets focus: false.simply-scroll-hiding (opacity 0) and the view container gets simply-scroll-cloaked (cursor and selection hidden). After it loads, the plugin keeps re-applying the position and removing focus: every frame for 600 ms while Obsidian is starting up, otherwise every 5 ms for 20 ms (with a 200 ms fallback). Then the content fades in over 50 ms.simply-scroll-next/
├── manifest.json # Plugin metadata
├── main.js # esbuild output; the file Obsidian loads (not committed)
├── styles.css # Cloaking styles; install it alongside main.js
├── package.json # Build / check scripts
├── tsconfig.json # TypeScript settings
├── build.sh # One-shot build + copy to a target vault plugin dir
│
├── src/
│ └── main.ts # Plugin source: scroll recording, setViewState wrapper, data cleanup
│
├── pics/
│ └── demo.gif # Demo used in the README
│
├── LICENSE # MIT
└── README.md / README.zh-CN.md
src/, and npm run build (esbuild) bundles it into the root main.js. obsidian, electron and @codemirror/* are marked externalTARGET_DIR at the top of build.sh, running it does npm run build and copies main.js / manifest.json / styles.css into the target vault's plugin directorynpm run build — esbuild bundlenpm run check — build + node --check main.js (syntax self-check)MIT © 2026 HornatX (original Simply Scroll), © 2026 QuincyLeo (Quincy-Leo)
See LICENSE for details.