Description

Reactive domains are a mechanism for establishing ownership over reactive
primitives (like reactive expressions and observers), even if the set of
reactive primitives is dynamically created. This is useful for lifetime
management (i.e. destroying observers when the Shiny session that created
them ends) and error handling.

Details

At any given time, there can be either a single "default" reactive domain
object, or none (i.e. the reactive domain object is NULL). You can
access the current default reactive domain by calling
getDefaultReactiveDomain.

Unless you specify otherwise, newly created observers and reactive
expressions will be assigned to the current default domain (if any). You can
override this assignment by providing an explicit domain argument to
reactive or observe.

For advanced usage, it's possible to override the default domain using
withReactiveDomain. The domain argument will be made the
default domain while expr is evaluated.

Implementers of new reactive primitives can use onReactiveDomainEnded
as a convenience function for registering callbacks. If the reactive domain
is NULL and failIfNull is FALSE, then the callback will
never be invoked.