# Extensibility

Source: /tuil/docs/concepts/extensibility
Locale: en

Plugins, services, commands, events, registries, and typed extension points.



Plugins extend one application without replacing its ownership boundary.

<Mermaid
  chart="flowchart LR
  Plugin[&#x22;Plugin&#x22;] --> Capabilities[&#x22;required capabilities&#x22;]
  Plugin --> Dependencies[&#x22;plugin dependencies&#x22;]
  Plugin --> Services[&#x22;services and commands&#x22;]
  Plugin --> Events[&#x22;event definitions and handlers&#x22;]
  Plugin --> Extensions[&#x22;typed extension registries&#x22;]
  Extensions --> Routes[&#x22;routes&#x22;]
  Extensions --> Workflows[&#x22;workflows&#x22;]
  Extensions --> Registry[&#x22;registry contributions&#x22;]"
/>

Each extension registration tracks registration identity rather than value
identity. The same object may be registered more than once and each registration
can be observed or disposed independently.

Plugins resolve in dependency order and tear down in reverse order. A failure
during registration or activation rolls back already-owned resources.

Continue with [Authoring plugins](/tuil/docs/guides/authoring-plugins).
