React components componentWillUnmount is not called
I've noticed that in my component definition I was doing reactRoot.render(<>{reactEl} </>) in onRender() then, I was missing to add root.unmount() n remove() method
Read full answer below βQuestion
GrapesJS version
- I confirm to use the latest version of GrapesJS
What browser are you using?
Chrome 108.0.5359.125 (Windows)
Reproducible demo link
https://codesandbox.io/s/white-meadow-o56l2d?file=/src/Chart/Chart.js:135-254 This demo is not in the latest grapesjs version, but locally, using the latest version, I have the same bug
Describe the bug
How to reproduce the bug?
- Go to this link
- Open the Console
- Drag a "Chart" Block to Body
- Check that "chart created" is logged
- Delete the chart
- "chart removed" isn't logged.
What is the expected behavior? ReactComponent.componentWillUnmount() / componentWillUnmount for functional components should be called when a component is deleted
What is the current behavior? ReactComponent.componentWillUnmount is not called, but mount is.
Code of Conduct
- I agree to follow this project's Code of Conduct
Answers (2)
I've noticed that in my component definition I was doing
reactRoot.render(<>{reactEl} </>)
in onRender() then, I was missing to add
root.unmount()
n remove() method
Thanks for reporting this, @eduardocalixtokorp.
Great question about React components componentWillUnmount is not called. The recommended approach with Components is to use the event-driven API.
Start here:
- Check the GrapesJS documentation for your specific module
- Look for the
on()event listener method - Most operations can be achieved by listening to editor and component events
Common patterns:
// Listen for changes
editor.on('change', () => console.log('something changed'));
// Component lifecycle
editor.on('component:mount', (c) => console.log('component ready', c));
editor.on('component:update', (c) => console.log('component updated', c));
If you're still stuck:
- Share a minimal CodeSandbox reproduction
- Include what you've already tried
- Mention your GrapesJS version
- The community is here to help!
Related Questions and Answers
Continue research with similar issue discussions.
Issue #4851
this.on('change:attributes:type', this.handleTypeChange) do not support array type
GrapesJS version[X] I confirm to use the latest version of GrapesJSWhat browser are you using? Chrome 108.0.5359.125Reproducible demo link...
Issue #4906
Grapesjs fails to recognize component types when setting innerHTML through script.
GrapesJS version [X] I confirm to use the latest version of GrapesJS What browser are you using? chrome v108.0.5359.98 Reproducible demo li...
Issue #3806
Target :null when adding video
GrapesJS version [X] I confirm to use the latest version of GrapesJS What browser are you using? chrome new version Reproducible demo link...
Issue #4189
The component was deselected when the settings were changed (using third party e.g. React/Vue)
GrapesJS version [X] I confirm to use the latest version of GrapesJS What browser are you using? Chrome 98 Reproducible demo link https://c...
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
Find the Right GrapesJS Plugin in Seconds: Smarter Discovery Is Live
We're shipping a set of discovery upgrades. New label filters, a proper compatibility switch for GrapesJS vs Studio, one-click and a smarter sort bar.
Tutorial
GrapesJS vs Webflow vs Tilda: What to Choose for Your Business in 2026
Choosing the right website platform in 2026 is no longer just about building a site
Tutorial
GJS Market 2.0 - Donations, Tracking, Labels and Better Product Discovery
Weβve rolled out a new set of GrapesJS marketplace updates across GJS Market, focused on improving how creators distribute products
Browse Plugin Categories
Jump directly to plugin category pages on the marketplace.