ReadyEditor ReadyEditor
docs/debugging.md

Debugging

In-page debug panel

The UI core includes a diagnostics panel that shows registered plugins, last enhanced instances, and captured runtime errors.

Enable it by either:

  • Adding ?readyeditorDebug=1 to the page URL, or
  • Running localStorage.readyeditorDebug = "1" in the browser console

Console inspection

// All active instances
ReadyEditor._instances

// Get a specific instance
ReadyEditor.getInstance()
ReadyEditor.getInstance('.my-editor')

// UI debug state
ReadyEditorUI.debug.state()

Common issues

Editor doesn't appear

  1. Check that the selector in data-selector matches an element that exists in the DOM when the script runs.
  2. Open the browser console and look for [ReadyEditor] error messages.
  3. Check the Network tab for a failed request to /api/v1/editor/init.

Init request fails

Check the error field in the init response:

Error Cause
missing_api_key data-api-key is empty or missing
invalid_api_key The key doesn't exist or is inactive
domain_not_allowed The requesting domain isn't in your project's allowed list
project_inactive The project is disabled in the dashboard
subscription_blocked Subscription is canceled or unpaid

For domain_not_allowed: check what domain was detected (it's in the response as "domain"). Common causes include missing www. or a mismatch between the page origin and the CDN origin.

Plugins listed but not appearing

If the debug panel shows a plugin as registered but its toolbar buttons don't appear, the plugin's name is probably not in the features list returned by init. Check the init response in the Network tab.

Toolbar icons are missing

Toolbar buttons use Remix Icon classes (e.g. ri-bold). Make sure the Remix Icon CSS is loaded on your page:

<link href="https://cdn.jsdelivr.net/npm/remixicon@3/fonts/remixicon.css" rel="stylesheet">

Alternatively, enable data-load-css="1" on the loader tag — the editor CSS bundle loads the icon font automatically.

SRI errors in the console

If you see Integrity check failed errors, either:

  • The asset was loaded from a different origin than the manifest expected, or
  • You're testing locally without serving assets through a CDN

Set data-require-sri="0" to disable SRI enforcement during local development.

Paste doesn't work from the toolbar

document.execCommand('paste') is blocked by all modern browsers. The clipboard plugin uses navigator.clipboard.readText() when available (requires HTTPS and user permission), and falls back to a modal asking the user to paste manually.

This is expected browser behavior. Ctrl+V / Cmd+V paste directly into the editor always works.