← Back to all sparks
D

dockViewR

INFRA · APIS
Velocity0.0

Layout Manager Widget for R and 'shiny' Apps

Draggable dock panels for Shiny, learning that layout state belongs on the client

shinyhtmlwidgetsui-layoutjavascript-bindingsbreaking-changesr-package
Current state
dockViewR wraps the dockview JavaScript library so Shiny apps can offer draggable, splittable, tabbed panel layouts — the IDE arrangement, driven from R. Three releases since May 2025 have taken it from a working widget to one with a proper server-side control surface: panels can be added, removed, selected and moved from the server, and the dock exposes a reactive proxy.
Where it's heading
The design has been converging on the standard htmlwidgets pattern, and 0.3.0 is where it commits. Earlier releases routed panel-id checks through Shiny inputs, which meant the state was stale until the next reactive flush and forced awkward workarounds when manipulating the dock inside observeEvent(). Moving those checks to the browser and adding dock_view_proxy() drops that class of bug entirely, at the cost of a breaking API change and a dev-mode option for surfacing the warnings.
Prediction
Having taken one breaking change to reach the proxy idiom, the natural follow-on is filling out the proxy surface so every panel operation is reachable through it.

Recent moves

  1. 8mo ago

    Reactive proxy replaces stale input-based panel checks

    Panel-id validation moves from Shiny input state to the browser, where it raises JS console warnings and optional notifications in dev mode, and a new dock_view_proxy() gives a reactive handle on the dock. It resolves the reactive-flush lag that made server-side dock manipulation unreliable, and takes a breaking rename of add_panel()'s dock_id parameter to get there.

    View source ↗
  2. 1y ago

    Server-side panel control and add/remove tracking

    Adds update_dock_view() and select_panel() for driving the dock from the server, inputs that report which panel was added or removed, and a remove parameter controlling whether panels can be closed. The underlying dockview JS also moves to 4.4.0.

    View source ↗
  3. 1y ago

    First CRAN release of the dockview panel widget

    The initial CRAN release, bundling dockview v4 with panel add, remove and move support, tab buttons, layout serialisation and an introductory vignette. The proxy issue it patches at this stage is the same design tension 0.3.0 eventually resolved properly.

    View source ↗