How do Dash, Shiny, Streamlit, and Bokeh compare
as low-code, UI layers for AI and ML models?

DashShinyStreamlitBokeh
Languages SupportedPython, R, and JuliaR onlyPython onlyPython
OSS LicenseMITAGPLApache 2.0BSD
Backend ArchitectureStatelessStatefulStatefulStateful
Downloads/month350,000370,000100,000900,000
Web protocolHTTP(S)WebsocketsWebsocketsWebsockets
Recommended deploymentKubernetes (Dash Enterprise)Shiny Server Pro (RStudio Connect)HerokuHeroku or Anaconda Enterprise
User experienceWeb appModel output with controls in a Web pageNotebook with controlsNotebook or Web app
App structureMulti-pageSingle pageNotebook with codeSingle Page
FrontendReactjQueryReactCustom-Only
InteractivityComplete: any component can be an input/output, including tablesPartial: some components can be inputs/outputsLimited: only widgets as inputs, graphs and tables can only be outputsComplete: any component can be an input/output, including tables
Styling controlDash Design Kit, Basic Bootstrap, or CSSBasic Bootstrap or CSSLimitedCustom-Only
Crossfiltering✔️✔️✔️
Dynamic LayoutsPattern-Matching Callbacks
Long Running Tasks✔️✔️
Year founded2017201220192013
Funding (USD)$20M$8M$27M
GitHub contributors475554462
GitHub Stars12.5k3.9k10.1k13.7k