Skip to main content

A Pure Python, React-style Framework for Scaling Your Jupyter and Web Apps

solara logo

Come chat with us on Discord to ask questions or share your thoughts or creations!

Discord Shield

Introducing Solara

While there are many Python web frameworks out there, most are designed for small data apps or use paradigms unproven for larger scale. Code organization, reusability, and state tend to suffer as apps grow in complexity, resulting in either spaghetti code or offloading to a React application.

Solara addresses this gap. Using a React-like API, we don't need to worry about scalability. React has already proven its ability to support the world's largest web apps.

Solara uses a pure Python implementation of React (Reacton), creating ipywidget-based applications. These apps work both inside the Jupyter Notebook and as standalone web apps with frameworks like FastAPI. This paradigm enables component-based code and incredibly simple state management.

By building on top of ipywidgets, we automatically leverage an existing ecosystem of widgets and run on many platforms, including JupyterLab, Jupyter Notebook, Voilà, Google Colab, DataBricks, JetBrains Datalore, and more.

We care about developer experience. Solara will give your hot code reloading and type hints for faster development.

Installation

Run:

pip install solara

Or follow the Installation instructions for more detailed instructions.

First script

Put the following Python snippet in a file (we suggest sol.py), or put it in a Jupyter notebook cell:

import solara

# Declare reactive variables at the top level. Components using these variables
# will be re-executed when their values change.
sentence = solara.reactive("Solara makes our team more productive.")
word_limit = solara.reactive(10)


@solara.component
def Page():
    # Calculate word_count within the component to ensure re-execution when reactive variables change.
    word_count = len(sentence.value.split())

    solara.SliderInt("Word limit", value=word_limit, min=2, max=20)
    solara.InputText(label="Your sentence", value=sentence, continuous_update=True)

    # Display messages based on the current word count and word limit.
    if word_count >= int(word_limit.value):
        solara.Error(f"With {word_count} words, you passed the word limit of {word_limit.value}.")
    elif word_count >= int(0.8 * word_limit.value):
        solara.Warning(f"With {word_count} words, you are close to the word limit of {word_limit.value}.")
    else:
        solara.Success("Great short writing!")


# The following line is required only when running the code in a Jupyter notebook:
Page()

Run from the command line in the same directory where you put your file (sol.py):

$ solara run sol.py
Solara server is starting at http://localhost:8765

Or copy-paste this to a Jupyter notebook cell and execute it (the Page() expression at the end will cause it to automatically render the component in the notebook).

See this snippet run live at https://solara.dev/documentation/getting_started

Demo

The following demo app can be used to explore a dataset (build in or upload yourself) using a scatter plot. The plot can be interacted with to filter the dataset, and the filtered dataset can be downloaded.

Running in solara-server

The solara server is build on top of Starlette/FastAPI and runs standalone. Ideal for production use.

fastapi

Running in Jupyter

By building on top of ipywidgets, we automatically leverage an existing ecosystem of widgets and run on many platforms, including JupyterLab, Jupyter Notebook, Voilà, Google Colab, DataBricks, JetBrains Datalore, and more. This means our app can also run in Jupyter:

jupyter

Resources

Visit our main website or jump directly to the introduction

Introduction Quickstart

Note that the solara.dev website is created using Solara

Metadata

Release files for solara 1.64.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for solara 1.64.1
File Size Uploaded Provenance
solara-1.64.1.tar.gz 5.4 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for solara 1.64.1
File Interpreter ABI Platform
solara-1.64.1-py3-none-any.whl Python 3 none any Details

Total release size: 11.4 kB

Release files / solara-1.64.1.tar.gz

Download URL solara-1.64.1.tar.gz
Size 5.4 kB
Tags Source
SHA-256 checksum
How to use checksums
e37e84d41959875004dd908138a091738d3cd6330f286a52faf24c6d55653cc0
BLAKE2b-256 checksum
How to use checksums
d16e91801c98d837acf3c45d197ce302f9af133136505114cd4ad0171fe8c9e1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via Hatch/1.18.1 {"ci":true,"cpu":"x86_64","distro":{"id":"noble","libc":{"lib":"glibc","version":"2.39"},"name":"Ubuntu","version":"24.04"},"implementation":{"name":"CPython","version":"3.10.22"},"installer":{"name":"hatch","version":"1.18.1"},"openssl_version":"OpenSSL 3.0.13 30 Jan 2024","python":"3.10.22","system":{"name":"Linux","release":"7.0.0-1017-azure"}} HTTPX2/2.14.0

Release files / solara-1.64.1-py3-none-any.whl

Download URL solara-1.64.1-py3-none-any.whl
Size 5.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
897431cf738cdde76f21985bfc722c69bb68e6de225eda90beec9fc8063f871b
BLAKE2b-256 checksum
How to use checksums
b575bd4f97f5e58dc9afaf2c51bcdeaed487e354ed89a9e211eb7fe50840f66f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via Hatch/1.18.1 {"ci":true,"cpu":"x86_64","distro":{"id":"noble","libc":{"lib":"glibc","version":"2.39"},"name":"Ubuntu","version":"24.04"},"implementation":{"name":"CPython","version":"3.10.22"},"installer":{"name":"hatch","version":"1.18.1"},"openssl_version":"OpenSSL 3.0.13 30 Jan 2024","python":"3.10.22","system":{"name":"Linux","release":"7.0.0-1017-azure"}} HTTPX2/2.14.0

Security for solara 1.64.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Release history Release notifications | RSS feed

This release

1.64.1 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page