← Back to all sparks
S

shiny

ANALYTICS
Velocity0.0

Web application framework for R

Shiny made reactive apps observable, then gave them a way to tear themselves down

rweb-frameworkopentelemetryobservabilityreactivity
Current state
Version 1.12.0 added OpenTelemetry support through the {otel} package, emitting spans for session start and end, reactive updates and individual reactive expressions, with collection depth set by an option or environment variable. The releases since have refined it - scoped collection controls in 1.12.1, cleaner stack traces in 1.13.0 - while 1.14.0 turned to lifecycle, adding session$destroy() on module proxies and a non-blocking startApp() for driving apps programmatically.
Where it's heading
The framework is addressing the two things that make Shiny apps hard to run in production: you could not see inside the reactive graph, and you could not reliably dispose of parts of it. Tracing answers the first; scoped destruction of module session proxies answers the second. Both are aimed at long-lived, dynamically composed apps rather than at the single-file demo.
Prediction
Expect the OpenTelemetry attribute names to settle once the deprecated spellings are dropped, and more of the reactive lifecycle to gain explicit teardown hooks now that session$destroy() has established the pattern. Editor integration is a likely area for follow-up after the Ark breakpoint support.

Recent moves

  1. 1mo ago

    Module scopes gain session$destroy() for reactive teardown

    Adds session$destroy() and session$onDestroy() to module session proxies, letting a parent tear down a child module's reactive values, expressions and observers by id when its dynamic UI is removed. startApp() also brings a non-blocking run mode with a handle object.

    View source ↗
  2. 5mo ago

    Interactive breakpoints under Ark; cleaner render stack traces

    Supports interactive breakpoints when running under Ark, and hides internal rendering pipeline frames from render-function stack traces so errors point at user code. Both make debugging a running app less indirect.

    View source ↗
  3. 8mo ago

    Scoped OpenTelemetry collection controls

    Adds withOtelCollect() and localOtelCollect() to vary telemetry collection for specific modules or code sections, and emits both preferred and deprecated OpenTelemetry attribute names for compatibility. Refinement of the tracing work from the previous release.

    View source ↗
  4. 8mo ago

    Shiny adds OpenTelemetry tracing of the reactive graph

    ⚡ SPARK

    Shiny gains OpenTelemetry support via {otel}, recording spans for sessions, reactive updates and reactive expressions, with collection depth configurable from none through to full reactivity tracing. The releases either side of it are setup and refinement.

    View source ↗
  5. 1y ago

    Regression fixes for input bindings and label updates

    A patch release correcting two regressions from 1.11.0: input bindings that omit a value in their subscribe callback stopped notifying Shiny, and label updates broke for action buttons and links.

    View source ↗
  6. 1y ago

    Auto-reload covers modules and support files

    Extends auto-reload to support files such as modules and web assets rather than just the app file, broadens busy indicators to tables and previously-errored htmlwidgets, and moves logging from {crayon} to {cli}. Developer-experience work ahead of the observability push.

    View source ↗