How rstudio/shiny works
Shiny’s browser runtime turns user interactions with bound widgets into client inputs, sends them through the Shiny session to an R server, then dispatches server updates to output bindings for rendering. Initialization discovers bindings and wires the DOM; specialized image handlers add brush/click/hover interaction, while policies regulate input traffic. This map emphasizes sampled TypeScript runtime code. The R reactive engine, server protocol, and several documented integrations are external or represented only by their enclosing runtime modules.
Components 22
Runtime Initialization
- Runtime Entry
srcts/src/index.ts - Browser Initialization
srcts/src/initialize/browser.ts - Shiny Facade
srcts/src/shiny/index.ts - DOM Binding
srcts/src/shiny/bind.ts - History Support
srcts/src/initialize/history.ts
Inputs And Events
- Binding Registry
srcts/src/bindings/registry.ts - Input Bindings
srcts/src/bindings/input/index.ts - Input Policies
srcts/src/inputPolicies/index.ts - File Processor
srcts/src/file/fileProcessor.ts - Widget Assets
inst/www/shared/selectize/js/selectize.js
Session Transport
- Input API
srcts/src/shiny/initedMethods.ts - Shiny Session
srcts/src/shiny/shinyapp.ts - Notifications
srcts/src/shiny/notifications.ts - Reconnect Dialog
srcts/src/shiny/reconnectDialog.ts
Outputs And Rendering
- Output Registry
srcts/src/bindings/registry.ts - Output Bindings
srcts/src/bindings/output/index.ts - Content Renderer
srcts/src/shiny/render.ts
Interactive Features
- Image Handlers
srcts/src/imageutils/createHandlers.ts - Image Utilities
srcts/src/imageutils/index.ts - Timing Controls
srcts/src/time/index.ts
Other components
- Browser User
- R Shiny Server
Connections 25
- Browser User → Browser Initialization: opens app
- Runtime Entry → Browser Initialization: starts initialization
- Browser Initialization → Shiny Facade: initializes runtime
- Shiny Facade → Binding Registry: creates registries
- Shiny Facade → DOM Binding: binds DOM
- DOM Binding → Binding Registry: resolves bindings
- Binding Registry → Input Bindings: provides inputs
- Binding Registry → Output Bindings: provides outputs
- Browser User → Input Bindings: changes widgets
- Input Bindings → Input Policies: applies policies
- Input Bindings → File Processor: processes files
- Input Bindings → Input API: sets values
- Input API → Shiny Session: forwards inputs
- Image Handlers → Image Utilities: creates interactions
- Image Handlers → Timing Controls: throttles events
- Image Handlers → Input API: sets image inputs
- Shiny Session → R Shiny Server: sends session data
- R Shiny Server → Shiny Session: returns updates
- Shiny Session → Output Registry: dispatches updates
- Output Registry → Output Bindings: selects outputs
- Output Bindings → Content Renderer: renders content
- Shiny Session → Notifications: dispatches notices
- Shiny Session → Reconnect Dialog: handles reconnects
- Shiny Facade → History Support: manages history
- Input Bindings → Widget Assets: uses widget library