Skip to content

Info popups not dismissed — DOMNodeRemoved deprecated and no longer fires in Chrome 127+ #69

@RVXD

Description

@RVXD

Module version(s) affected

2.0.0 (latest)

Description

Description

The GraphQL Playground IDE used by this module relies on the DOMNodeRemoved mutation event to detect when elements are removed from the DOM and dismiss info/tooltip popups. This mutation event was deprecated and stopped firing entirely in Chrome 127+ (released August 2024).

As a result, any info popups or tooltips shown in the IDE (e.g. the "Loading" or schema-related overlays from GraphQL Playground) are never removed — they remain stuck on screen permanently.

Root cause

DOMNodeRemoved is a legacy DOM Mutation Event that was deprecated in favour of MutationObserver. Chrome 127 removed support for it, so any code in GraphQL Playground's bundle that listens for DOMNodeRemoved to trigger cleanup no longer fires.

This is a known upstream issue with the bundled GraphQL Playground library, which is itself archived and no longer maintained.

Steps to reproduce

  1. Open /dev/graphql/ide in Chrome 127 or later
    1. Observe any loading/info popup that appears on load
    1. The popup is never dismissed

Suggested fix

Upgrade from the archived GraphQL Playground to the modern GraphiQL standalone CDN bundle, which actively maintains compatibility with current browsers. This would also resolve the broader issue noted in #17.

How to reproduce

Reproduction steps

  1. Install this module (composer require --dev silverstripe/graphql-devtools)
    1. Open /dev/graphql/ide in Chrome 127 or later
    1. Observe any info popup / loading overlay that appears
    1. The popup is never dismissed and remains stuck on screen permanently

Notes

This does not reproduce in older Chrome versions or Firefox, confirming the root cause is the removal of DOMNodeRemoved mutation events in Chrome 127.

Possible Solution

No response

Additional Context

No response

Validations

  • Check that there isn't already an issue that reports the same bug
  • Double check that your reproduction steps work in a fresh installation of silverstripe/installer (with any code examples you've provided)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions