How client plugins load

DataMind Oda's interface is built from client plugins. Every time the interface starts, Oda decides which of them load, in what order, and which are prefetched before you can interact. This page, for plugin developers, describes that loading model. What a client plugin can add to the interface is on Extending Oda's interface.

How a client plugin reaches the browser

What a plugin's loading metadata decides

Every client plugin carries loading metadata, and the metadata decides how and when the plugin loads.

What this means for your plugin

Questions, answered

Which client plugins load when Oda starts?

The plugins marked to load immediately: the stage-one prefetch set. The module system is in it, since every other client plugin builds on it. Plugins outside the set load lazily, when the interface needs them.

What does a plugin's loading metadata cover?

Three things: the platform the plugin targets, whether it loads immediately or lazily, and the services it declares. How the plugin loads follows from that metadata.

What are injections, and why declare them?

Injections are the services a plugin declares it needs. What a plugin declares is resolved before the plugin starts: a plugin starts only once the services it declares are available.

What decides the order client plugins start in?

The declared services. A plugin starts after the services it declares are available, so the startup order follows the plugins' declarations.

Does a client plugin's code load at startup even when it is not needed yet?

No. Only the stage-one prefetch set is fetched at startup; every other plugin stays in the lazy module table and loads when the interface needs it.

Why does my client plugin not appear in the interface?

The interface mounts only the client plugins its startup graph lists. A plugin that is not part of that set never loads, so nothing of it appears in the interface.

How do I check which plugins are loaded?

The loaded plugins appear in Settings > Plugins as a read-only inventory; see Settings sections and plugins. To inspect what a running plugin exposes, start from Inspecting plugins.