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

Languages SupportedPython, R, and JuliaR onlyPython onlyPython
OSS LicenseMITAGPLApache 2.0BSD
Back-end ArchitectureStatelessStatefulStatefulStateful
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
Front endReactjQueryReactCustom-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
Dynamic LayoutsPattern-Matching Callbacks
Long Running Tasks✔️✔️
Year founded2017201220192013
Funding (USD)$20M$8M$27M
GitHub contributors475554462
GitHub Stars12.5k3.9k10.1k13.7k