Basics
The One Rule That Matters Most
Do not mix backend runtime and iframe UI runtime. Backend runtime is for:init()- handlers
- stores
- logging
- diagnostics
- privileged action setup
- DOM access
- browser event handling
window.createBackendReq(...)- host-injected UI libraries
What render() Really Returns
render() returns UI source for the FDO iframe pipeline.
It is not:
- arbitrary host DOM HTML injection
- direct React component source you control in the host app
- JSX-compatible UI source for a sandboxed iframe render pipeline
DOM Helper Rule
If you use SDK DOM helpers and expect styling to work, wrap the final output withrenderHTML(...).
Without that, helper-generated classes may exist but their CSS will not be emitted.
Safe Authoring Rules
- prefer JSX-safe tags like
<br /> - avoid raw
<style>blocks inrender() - escape literal braces in code samples
- do not pass untrusted raw strings into generic DOM helper children
- use
DOMTexthelpers for user-provided text
Metadata Rule
metadata.icon must be a valid BlueprintJS v6 icon name.
Storage Rule
Do not callPluginRegistry.useStore(...) in class field initializers.
Acquire stores lazily or inside init() / handlers.