The Principal Dev – Masterclass for Tech Leads

The Principal Dev – Masterclass for Tech Leads28-29 May

Join

Shiny for Python

PyPI Latest Release Build status Conda Latest Release Supported Python versions License

Shiny for Python is the best way to build fast, beautiful web applications in Python. You can build quickly with Shiny and create simple interactive visualizations and prototype applications in an afternoon. But unlike other frameworks targeted at data scientists, Shiny does not limit your app's growth. Shiny remains extensible enough to power large, mission-critical applications.

To learn more about Shiny see the Shiny for Python website. If you're new to the framework we recommend these resources:

Join the conversation

If you have questions about Shiny for Python, or want to help us decide what to work on next, join us on Discord.

Getting started

To get started with shiny follow the installation instructions or just install it with uv.

uv pip install shiny

To install the latest development version:

uv pip install git+https://github.com/posit-dev/py-shiny.git

You can create and run your first application with shiny create, the CLI will ask you which template you would like to use. You can either run the app with the Shiny extension, or call shiny run app.py --reload --launch-browser.

Agent Skills

Coding agents write better Shiny apps when they can read Shiny's own documentation. The shiny package ships bundled Agent Skills for exactly that: reference material that teaches agents (Claude Code, Cursor, and others) how to build, style, test, and debug Shiny for Python apps using shiny's public APIs.

The skills ship inside the package, so installing shiny installs them too — you only need to point your agent at them. Run one of these from your project directory:

# Claude Code (installs into .claude/skills/):
uvx library-skills --claude

# Any other agent (standard .agents/skills/ location):
uvx library-skills

Run this from your own project rather than a clone of this repository: library-skills reads your project's dependencies and installs the skills bundled with the packages you actually have installed. It symlinks rather than copies, so the skills keep tracking your version of shiny as you upgrade. On Windows, add --copy if symlinks are unavailable.

To see what's bundled without installing anything, run shiny skills list.

Development

If you are working from a fork you may not have the git tags from the original repo. Git tags are required for the install to succeed. To add tags to your own fork:

git remote add upstream https://github.com/posit-dev/py-shiny.git
git fetch --tags upstream

Then install:

uv pip install -e ".[dev,test,doc]"

Additionally, you can install pre-commit hooks which will automatically reformat and lint the code when you make a commit:

pre-commit install

# To disable:
# pre-commit uninstall

Tests should now pass:

make check
# To apply formatting fixes instead of erroring:
# make check-fix

Or get a full list of helpers with just:

make

Typically, when developing new features for Shiny, you'll want to try them out in an application. In a separate application directory, use can use -e to reference your local checkout of py-shiny:

# Rather than
#   uv pip install shiny
# run:
uv pip install -e ../py-shiny --config-settings editable_mode=compat

See the docs README for instructions on building the documentation locally.

Join libs.tech

...and unlock some superpowers

GitHub

We won't share your data with anyone else.