GetDirtyCount() non deterministic after load
Added also load options in order to clear the editor internal state post load
Read full answer below ↓Question
GrapesJS version [X] I confirm to use the latest version of GrapesJS What browser are you using? Chrome Reproducible demo link https://github.com/padcom/grapesjs-bug-dirty-count-non-deterministic/blob/master/index.html Describe the bug Currently, when the user calls await load() the dirty count is zero. Only after the next event loop or later the count is increased. Therefore: prints out 0 but after a milisecond: the number of changes is 1. Expected behavior is that after awaiting the call to load(), if indeed as described in #5373 the editor is changed it should be so immediately after the c...
Answers (4)
Added also load options in order to clear the editor internal state post load
const storageOptions = {};
const loadOptions = { clear: true };
await editor.load(storageOptions, loadOptions);
editor.getDirtyCount(); // should always be 0 post load
Thank you! Looking forward to the next release!
Already available here https://github.com/GrapesJS/grapesjs/releases/tag/v0.21.6
You've accurately identified a common timing issue with GrapesJS's getDirtyCount() method after calling editor.load(). This behavior is indeed due to the asynchronous nature of how GrapesJS processes internal state updates and event emissions. Root Cause Explanation When editor.load() is called, it...
Related Questions and Answers
Continue research with similar issue discussions.
Issue #5373
`getDirtyCount()` returns `1` after loading
GrapesJS version [X] I confirm to use the latest version of GrapesJS What browser are you using? Chrome latest Reproducible demo link https...
Issue #5144
Incorrect type definition for PanelManager.addPanel
GrapesJS version [X] I confirm to use the latest version of GrapesJS What browser are you using? All Reproducible demo link None Describe t...
Issue #4384
Index.d.ts says that components must be Backbone.Collection<Component> but the docs say Component[] is also accepted
GrapesJS version[X] I confirm to use the latest version of GrapesJSWhat browser are you using? AnyReproducible demo link https://grapesjs.c...
Issue #6606
Editor takes a long time to load (sometimes over 1 minute)
GrapesJS version [x] I confirm to use the latest version of GrapesJS What browser are you using? Firefox Reproducible demo link https://gra...
Paid Plugins That Match This Issue
Curated by issue keywords and label relevance to help you ship faster.
Loading paid plugin recommendations...
Check the open-source GrapesJS plugins on GitHub or run a quick search in our free catalog.
Browse free plugins →Premium plugins ship with support, regular updates, and production-ready features — save days of integration work.
Browse premium plugins →Related tutorials
In-depth guides on the same topic.
Tutorial
UnStudio for GrapesJS: 4 Plugins to Build Better Visual Editors
Meet UnStudio, a new GrapesJS plugin studio with four tools, safer and better editor: Command Palette, Responsive Pack, Autosave & Restore, and Autofill
Tutorial
Claude Skill for GrapesJS: How AI Is Changing the Way We Build Visual Editors
We've released the Claude Skill for GrapesJS Development — a free, open-source skill that turns Claude into a developer who actually knows GrapesJS
Tutorial
Vanilla GrapesJS vs GrapesJS With Plugins: What You Actually Get Out of the Box (2026)
New to GrapesJS? See exactly what the stock editor gives you, where it falls short, and which plugins close the gaps — a beginner-friendly 2026 comparison
Browse Plugin Categories
Jump directly to plugin category pages on the marketplace.