Supported frameworks

Apptrope runs R and Python web apps in a real native window, and it works with a wide range of popular app frameworks out of the box. You don’t have to tell Apptrope which framework an app uses or how to start it. When you point Apptrope at an app, it inspects the app’s entry file and the packages it imports, figures out the framework, and picks the right launcher automatically. This page lists every framework Apptrope supports and explains how that automatic detection works.

The frameworks

Apptrope supports 11 frameworks across R and Python, plus bare Python web apps.

Framework Language
Shiny R
Shiny Python
Streamlit Python
Gradio Python
Flask Python
Panel Python
Voilà Python
Marimo Python
Dash Python
Bokeh Python
Solara Python
Bare Python web app Python

Shiny is supported in both of its flavors, the original R version and Shiny for Python, so the same viewer handles apps written in either language. Everything else in the list is Python.

Bare Python web apps

Not every Python web app is built on one of the named frameworks. “Bare Python web apps” covers apps that serve a web interface without a framework Apptrope recognizes by name. These run too. Apptrope launches the app and shows it in a native window like any other.

How framework detection works

When you load an app, Apptrope looks at two things:

  • The entry file is the file that starts the app.
  • The imports are the packages the app actually pulls in.

From those signals, Apptrope determines which framework the app uses and selects the matching launcher. That means the right server is started the right way, whether the app is R Shiny, Python Shiny, Streamlit, or anything else in the table above. You get a working app in a native window without configuring commands, ports, or start-up flags yourself.

This detection runs the same way no matter how you loaded the app: a local folder, an archive, a Git repo, a direct archive URL, or a shareable .apptrope bundle.

Both R and Python, side by side

Because Apptrope supports both languages, you can keep R and Python apps together in the same Library and run them in the same Workbench. Each app runs in its own tab with its own isolated environment, so an R Shiny app and a Python Streamlit app can be open at the same time without interfering with each other.

Dependency resolution follows the app’s language automatically:

  • R apps: Apptrope uses rv to resolve and lock the app’s R packages. If no system R is present, a portable R toolchain is provisioned via micromamba so the app can still run.
  • Python apps: Apptrope uses uv to resolve the app’s Python packages.

Either way, the first run resolves the environment and later runs reuse it, so you only wait for setup once.

If an app doesn’t launch as expected

If a supported app doesn’t start the way you expect, the per-run logs capture the app’s full output live. Open the app’s menu and choose View logs to see exactly what happened during launch. That’s the fastest way to understand a framework-specific start-up issue.