Skip to main content

dash-loading-components (dlc)

Loading indicators for Plotly Dash, wrapping nine React spinner libraries as one install. 107 components under stable namespaces, with a common factory over the top so you can switch families without relearning each one's props.

Browse them all in the live gallery: https://dash-loading-components.phylatech.com

pip install dash-loading-components

One contract, every component

import dash_loading_components as dlc

dlc.loading_dev.Dual(size=48, color="#f97316", rate=1.5)
dlc.premium.OrbitRings(size=48, color="#f97316", ring_count=4, playing=False)
dlc.ldrs.Ring(size=48, color="#f97316", stroke=5)

Every component takes the same four props with the same meaning:

prop meaning
size pixels (react-loading-indicators takes its own "small" / "medium" / "large" tokens)
color any CSS color
rate relative tempo: 1.0 is this spinner's own tempo, 2.0 twice as fast. Unset keeps the upstream tempo
playing False pauses the animation

Each library's own props are there too, in snake_case, in the library's own units: dlc.loading_dev.Arc(duration=1600, easing="stacked"), dlc.spinners.ClipLoader(speed_multiplier=2). A native tempo or pause prop passed alongside rate or playing wins.

Need a loading overlay? Use Dash's own:

dcc.Loading(children, custom_spinner=dlc.ldrs.Ring(size=48))

Discover what is available at runtime:

dlc.list_libraries()          # ['loading_dev', 'ldrs', 'spinners', ...]
dlc.list_spinners("ldrs")     # ['Ring', 'Helix', 'DotPulse', ...]

Requirements

React ≥19 and Dash ≥4.5, both hard requirements. The loading_dev family needs React 19, and this package will not claim Dash 4.4 / React 18 compatibility.

Dash 4.5 is not on PyPI as a stable release yet, so the dependency is pinned as dash>=4.5.0rc0. That specifier names the pre-release, which is what lets pip resolve it; it will accept the final 4.5 release once published.

Families

Namespace Upstream Components
loading_dev loading-dev 29
premium premium-react-loaders 15
ldrs ldrs 12
spinners react-spinners 12
indicators react-loading-indicators 11
loader_spinner react-loader-spinner 10
spinners_react spinners-react 9
epic react-epic-spinners 8
m3 @alerix/m3-loading-indicator 1

Every component is also exported prefixed at the top level (dlc.LoadingDevArc, dlc.LdrsRing) for Dash callbacks that want a flat name.

Version pins, SPDX licenses, upstream URLs and React peers: docs/UPSTREAM-INVENTORY.md. Attribution: NOTICE.

Relative tempo

rate is a rate, not a duration. 1.0 reproduces the tempo the upstream component runs at on its own, and the value is translated per family in the wrappers: a duration in milliseconds for loading-dev, epic and premium, seconds per loop for ldrs, a multiplier for react-spinners and m3, a percentage for spinners-react, an offset for react-loading-indicators.

That baseline is per spinner, not per family. loading_dev.Compass is normally 500ms and loading_dev.Slide is 2400ms, so rate=1.0 gives each of them its own tempo and rate=2.0 halves both. react-loader-spinner has no tempo prop, so rate does nothing there.

Compared with dash-loading-spinners

dash-loading-spinners is a focused package built largely around react-spinners-era indicators. dlc is not a rename or a silent re-export of it. The goals differ:

  • A multi-upstream umbrella with stable namespaces, dlc.<family>.<Component>
  • An explicit React 19 / Dash ≥4.5 floor, driven by loading-dev
  • A license inventory and NOTICE covering every wrapped family
  • Room to add families without flattening name collisions

Where the APIs overlap, credit upstream; this is honest coexistence, not a drop-in replacement.

Contributing

Pull requests only, against main. Family wrappers land as focused follow-up PRs, one family or a small batch per PR. Releases are cut by release-please from Conventional Commits merged to main, so commit subjects need a feat: / fix: / chore: prefix.

Local setup:

pixi install           # Python, Node, Dash, the gallery's deps, test tooling
npm install
pixi run build         # JS bundle + generated Python wrappers
pixi run python usage.py   # minimal demo app
pixi run gallery       # the full gallery, http://127.0.0.1:8050/
pixi run test

The deployed gallery runs under gunicorn (gallery:server); pixi run serve does the same locally.

pixi run build-js alone is enough when you have only changed React or CSS under src/.

License

MIT, Copyright (c) 2026 Phyla Technologies. See LICENSE. Wrapped third-party libraries remain under their own licenses, listed in the inventory.

Release files for dash-loading-components 0.1.0

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

Source distribution (sdist)

Source distribution for dash-loading-components 0.1.0
File Size Uploaded
dash_loading_components-0.1.0.tar.gz 353.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for dash-loading-components 0.1.0
File Interpreter ABI Platform
dash_loading_components-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 831.3 kB

Release files / dash_loading_components-0.1.0.tar.gz

Download URL dash_loading_components-0.1.0.tar.gz
Size 353.4 kB
Tags Source
SHA-256 checksum
How to use checksums
af6120dc1fb45ae89c6b0798ae9793f273216de9998406c80ef0756e4358489a
BLAKE2b-256 checksum
How to use checksums
8c6c924b75d0beb710263a30245363e3c0961795523959f92c1e37840893dc8a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 25, 2026.

Transparency log

Release files / dash_loading_components-0.1.0-py3-none-any.whl

Download URL dash_loading_components-0.1.0-py3-none-any.whl
Size 477.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
1d7c7af0c4c59b9c8074f2f886c479accbe17bbe42972b9ccf89f43e18fc3e07
BLAKE2b-256 checksum
How to use checksums
f24baf095daa1213286fbfc56a0ac517adf1898ce08c7d8113d3ebc73fc9b9cf
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 25, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

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