Coming from OOUI
ooui-react reimplements OOUI's interaction semantics and DOM contract while reusing the original theme CSS, but its API is idiomatic React.
Whether you know OOUI and want to lean on that experience in a new script, or are rewriting an old, complex OOUI script, this page maps the two APIs: start with the mental model mapping, locate components by their original class names, then check the dropped capabilities and behavioral differences.
Mental model mapping
The original imperative API is uniformly expressed as declarative props in this library; see Controlled and uncontrolled for the rules:
Locating components and classes
Component names = original class names minus the Widget suffix (ButtonWidget → Button, TextInputWidget → TextInput). Four names do not survive the suffix removal and keep their original form: SearchWidget, HiddenInputWidget, SelectFileInputWidget, ButtonMenuSelectWidget.
Some original classes do not map to standalone components:
Dropped capabilities
The following original capabilities are intentionally not implemented, indexed by original API name:
Behavioral differences at a glance
These behaviors differ from the original in ways that will break or surprise you if unaddressed, indexed by component. Details live on each component page:
Imperative dialogs
confirm / alert / prompt are standalone functions you can await from any event handler; the dialogs inherit the enclosing OOUIProvider configuration (messages, isMobile, dir and your own providers). Unlike the original's shared singleton manager, repeated calls stack. See Imperative dialogs for the runtime semantics and Global configuration for config inheritance.
Localization
en is the built-in default baseline; 25 more language packs (ooui-react/locales/<code>) are available as optional imports. On a MediaWiki site you can wire mw.msg into messages to follow the site language. See Messages and i18n for the language list and setup.
Full deviation ledger
This page lists only the differences that affect usage. The complete ledger (including implementation-level trade-offs and rationale) lives in the repository's dev-docs/DEVIATIONS.md.