constructor() {
    if (!canUseDom) return

    const container = document.createElement('div')
    container.setAttribute('data-evergreen-toaster-container', '')
    document.body.appendChild(container)

    const toastManager = () => (
      <ToastManager
        bindNotify={this._bindNotify}
        bindRemove={this._bindRemove}
        bindGetToasts={this._bindGetToasts}
        bindCloseAll={this._bindCloseAll}
      />
    )

    if (getMajorVersion(ReactDOM.version) >= 18) {
      try {
        const { createRoot } = require('react-dom/client')
        const root = createRoot(container)

        root.render(toastManager())
      } catch (e) {
        ReactDOM.render(toastManager(), container)
      }

      return
    }

    ReactDOM.render(toastManager(), container)
  }
The Toaster manages the interactions between
the ToasterManger and the toast API.