Registry / web-framework / shiny
library1.6.3pypypi✓ verified 85d ago

Shiny is an open-source web development framework for Python, enabling data scientists and developers to build interactive web applications and dashboards with purely Python code. Maintained by Posit, it is under active development with frequent releases that introduce features like OpenTelemetry integration, toast notifications, AI-powered test generation, and application bookmarking. It allows for the creation of rich user interfaces that react dynamically to user input.

pip install shiny
INSTALL
IMPORT
SIG · SHINY
S
shiny
web-frameworkpythonv1.6.3
Install
5.7s avg
Import
942ms
Disk
68MB
Pass rate
10/ 10
Env Coverage10 / 10
glibc
3.93.13
musl
3.93.13
Install & Compatibility
Where this runs
tested against v1.6.3 · pip install
no network on importno background threads
Install × environment matrix
Each cell = how many times install + import succeeded across repeated harness runs. Partial = flaky.
glibc = Debian/Ubuntu slim · musl = Alpine Linux
musl
py 3.103.920 runs
installs and imports cleanly · install 0.0s · import 0.972s · 67.2MB
glibc
py 3.103.920 runs
installs and imports cleanly · install 5.7s · import 0.911s · 67MB
68MB installed
● package 68MB
Code
Verified usage

Verified import paths — ran on the pinned version, not inferred.

App
from shiny import App
ui
from shiny import ui
render
from shiny import render
reactive
from shiny import reactive
input
from shiny.express import input
from shiny import input
`input` is typically used implicitly within `@reactive` or `@render` functions, or directly imported from `shiny.express` for Express mode applications. In Core mode, it's passed as an argument to the `server` function.
output
from shiny.express import output
from shiny import output
Similar to `input`, `output` is implicitly available in Express mode or passed to the `server` function in Core mode.
session
from shiny.express import session
from shiny import session
Similar to `input` and `output`, `session` is implicitly available in Express mode or passed to the `server` function in Core mode.

This minimal Shiny application demonstrates a basic slider input (`ui.input_slider`) and a reactive text output (`ui.output_text_verbatim`). The `server` function uses the `@render.text` decorator to reactively display the current value of the slider.

from shiny import App, ui, render app_ui = ui.page_fluid( ui.input_slider("n", "N", 0, 100, 20), ui.output_text_verbatim("txt"), ) def server(input, output, session): @render.text def txt(): return f"The value of N is {input.n()}" app = App(app_ui, server)
shiny --version
Debug
Known issues
breakingBreaking changes in `shiny.playwright.controllers` for testing. `.expect_inverse()` now requires a `bool` (use `False` for previous behavior). `.expect_layout()` was renamed to `.expect_fluid()` and also requires a `bool` (use `True` for previous behavior).
fix
Update test code to use `.expect_inverse(False)` and `.expect_fluid(True)` where applicable, or adapt to the new `bool` argument for `expect_inverse`.
affects: >=1.2.0
deprecatedThe `ui.Chat().set_user_message()` method has been deprecated.
fix
Use the new `ui.Chat().update_user_input()` method instead, which provides similar functionality and more flexibility.
affects: >=1.1.0
gotchaShiny applications, by default, sanitize error messages when deployed to prevent sensitive information leakage. This can make debugging deployed applications challenging.
fix
To view full error messages for debugging purposes, set `sanitize_errors=False` in the `App` constructor: `app = App(app_ui, server, sanitize_errors=False)`.
affects: All versions
gotchaStarting with v1.6.0, Shiny includes OpenTelemetry integration. The `SHINY_OTEL_COLLECT` environment variable controls the default collection level (e.g., 'none', 'session'). If not explicitly set, 'session' level telemetry might be collected.
fix
Set the `SHINY_OTEL_COLLECT` environment variable to `'none'` if you wish to disable all Shiny-specific telemetry collection for sensitive operations or to reduce overhead.
affects: >=1.6.0
gotchaIf an output in a Shiny app fails to render or shows a 'Missing output' error, it's often due to an attempt to read a non-existent input ID or an error within the `@render` function.
fix
Double-check input IDs for typos. If an error occurs within a `@render` function, the full Python stack trace will be available in the console where `shiny run` was executed. Debug the `@render` function's logic.
affects: All versions
Errors
Common errors & fixes
Error: An error has occurred. Check your logs or contact the app author for clarification.
This is Shiny's default sanitized error message for deployed applications, hiding the underlying Python exception for security reasons.
fix
Run the application locally (`shiny run app.py --reload`) to see the full stack trace, or disable error sanitization in the `App` constructor: `app = App(app_ui, server, sanitize_errors=False)`.
Output not appearing (e.g., a blank space where a plot or text should be) or 'Missing output' message.
The output function (`@render.text`, `@render.plot`, etc.) is trying to access an input ID that does not exist or is misspelled. Alternatively, there might be a runtime error within the render function.
fix
Verify that the `id` argument in `ui.output_*` matches the name of the decorated function in `server`. Ensure that `input.some_id()` refers to an existing `ui.input_some_id` component. Check the console for any Python exceptions or tracebacks.
TypeError: 'ReactiveValue' object is not callable
Attempting to access a reactive value (like `input.some_id`) without calling it as a function (`input.some_id()`) within a reactive context.
fix
Always append `()` when reading the value of an `input` or `reactive.value` within `@reactive.effect`, `@render.*`, or `@reactive.calc` functions, e.g., `input.slider_val()` instead of `input.slider_val`.
Upgrade
Version history
1.6.3latest on PyPI · released Jun 1, 2026
Audit
Dependencies
pythonrequiredRequires Python 3.10 or newer.
websocketsrequiredShiny requires websockets>=13.0 for core functionality, with compatibility for >=14.0 introduced in v1.2.1.
Agent activity
25 hits · last 30 days
node
22
OpenAI (training)
2
Resources
shiny — pip install shiny · libregistry