Plugin menus and handlers may not be in-sync across documents during development
If someone modifies a plugin's files on disk while XD is running, and then opens more windows in XD, any windows that were open before reflect the old version of the plugin while windows that were opened later reflect the new version of the plugin. The menu bar will always reflect the old version of the plugin regardless of which window is current.
If Plugin Manager is open when you invoke Reload Plugins, it will not reflect any changes to the manifest (plugin name, description, icon) until you close & reopen it.
It is possible to set nodes to 0 width or 0 height.
Scenenode setters block negative size values but allow 0 size, even though in many cases it is equally nonsensical. We do block 0 size in the UI.
In the past, XD's renderer would fail asserts (possibly even crash) with 0-size objects. I couldn't repro that any more, but unless we're covering it well as an officially supported case, it could easily regress again. There are some other minor bugs though, e.g. sharing fails if you have any 0-width/height artboards and bitmap export fails if any of the top-level items you're trying to export are 0-width/height.
Longer plugin command names may be truncated in the menu on Windows
Workaround: keep your plugin command names short!
Plugins can modify the Assets panel contents while running in the background. Do not rely on this - in a future release, it will be blocked. Only make modifications to the document (including Assets panel) while the plugin is running a user-invoked command.
Checkboxes may fail to render correctly if in a scrollable container. To work around this issue, make sure the containing element has a background color. (transparent does not count; macOS only.)
It is not possible to trigger the emoji selector in a text field on macOS.
SVG images are not supported in the UI.
When tabbing in a scroll view, the scroll view is not automatically scrolled to ensure the target control is in view (macOS Only).
Inline layout is not supported. Inline elements will render as block elements instead.
<option> tags must have a value attribute, or referencing the select's value property will return undefined.
<select value="…"/> does not show the value as selected. Instead, get a reference to the element and call setAttribute("value", …).
If you don’t specify a width for your form, block elements inside may not take up the entire width. Workaround: always set a width for your form elements.
forms only support method="dialog". They do not submit to a URL automatically.
It is not currently possible to specify the tab order.
The size of a <textarea> cannot be set with rows or cols. Use CSS styles height and width respectively.