Skip to main content

fastapi-swagger-ui-theme

PyPI version Downloads Python Versions License Ruff uv PyPI status

This package enhances the default Swagger UI by adding a persistent light/dark mode toggle, and better contrast.


fastapi-swagger-ui-theme.gif


Features

  • 🌗 Dark / Light theme toggle (persisted via localStorage)
  • ⚡ Zero JavaScript configuration required
  • 🔌 Plug-and-play setup with a single function call
  • 📦 Packaged static assets (no CDN hacks, no manual mounting)

Installation

Using pip:

pip install fastapi-swagger-ui-theme

Using uv:

uv add fastapi-swagger-ui-theme

Usage

Add the light/dark toggle to your FastAPI application by importing and calling the provided function:

from fastapi import FastAPI
from fastapi_swagger_ui_theme import setup_swagger_ui_theme

app = FastAPI(docs_url=None)  # Close the docs_url here.

setup_swagger_ui_theme(app, docs_path="/docs")

This will automatically inject the dark/light toggle and improved styles into the Swagger UI at /docs.


Configuration

The setup_swagger_ui_theme function supports optional parameters to customize the behavior:

from fastapi import FastAPI
from fastapi_swagger_ui_theme import setup_swagger_ui_theme

app = FastAPI(docs_url=None)  # Close the docs_url here.

setup_swagger_ui_theme(
    app,
    docs_path="/docs",
    title="API Docs",
    static_mount_path="/swagger-ui-theme-static",
    swagger_favicon_url=None,
    oauth2_redirect_url=None,
    init_oauth=None,
    swagger_ui_parameters=None,
)
  • docs_path: URL path for Swagger UI (default: /docs)
  • title: Title of the Swagger UI page (default: "Swagger UI")
  • static_mount_path: Path to mount the static assets (default: /static/swagger-ui-theme)
  • swagger_js_url: URL to the Swagger UI JavaScript bundle (default: https://unpkg.com/swagger-ui-dist@5/swagger-ui-bundle.js, uses bundled version)
  • swagger_css_url: URL to the Swagger UI CSS bundle (default: https://unpkg.com/swagger-ui-dist@5/swagger-ui.css, uses bundled version)
  • swagger_favicon_url: URL to the favicon for Swagger UI (default: None, uses bundled version)
  • oauth2_redirect_url: OAuth2 redirect URL for Swagger UI (default: None)
  • init_oauth: Dict of OAuth2 initialization parameters (default: None)
  • swagger_ui_parameters: Dict of additional Swagger UI parameters (default: None)

Screenshots

Light Mode

light-theme light-theme-2

Dark Mode

dark-theme dark-theme-2

Running the Demo / Test Application

To run the demo/test application, follow these steps:

  1. Clone the repository:

    git clone https://github.com/akutayural/fastapi-swagger-ui-theme.git
    cd fastapi-swagger-ui-theme
    
  2. Initialize the environment with uv:

    uv init
    
  3. Install the required dependencies:

    uv add uvicorn apiexception
    
  4. Run the demo application:

    .venv/bin/uvicorn test.app:app --reload
    

Credits

This project is inspired by and builds upon the official Swagger UI and FastAPI projects.

Special thanks to the following projects and their authors for their contributions to the dark theme lineage:

Thanks to all contributors and maintainers of these projects.

Metadata

Release files for fastapi-swagger-ui-theme 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 fastapi-swagger-ui-theme 0.1.0
File Size Uploaded
fastapi_swagger_ui_theme-0.1.0.tar.gz 36.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for fastapi-swagger-ui-theme 0.1.0
File Interpreter ABI Platform
fastapi_swagger_ui_theme-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 73.3 kB

Release files / fastapi_swagger_ui_theme-0.1.0.tar.gz

Download URL fastapi_swagger_ui_theme-0.1.0.tar.gz
Size 36.3 kB
Tags Source
SHA-256 checksum
How to use checksums
0c1dfbdb83d1a189a2fca795f077e2f4789f259cf9c229e7e71d656c53d1fea5
BLAKE2b-256 checksum
How to use checksums
b8fef399e6738aff9f110444b8dbfea26eb378b1e1e9b12113db510d64e170b9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.9.24 {"installer":{"name":"uv","version":"0.9.24","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

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

Download URL fastapi_swagger_ui_theme-0.1.0-py3-none-any.whl
Size 37.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
30252d6473a04f0a8ac360a2b382aab90828e597083010e686ba7fa84a0d73c0
BLAKE2b-256 checksum
How to use checksums
966b708d64b24a34c8b734c1cd720035270b0708af997f2d1f01cf4806427af0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.9.24 {"installer":{"name":"uv","version":"0.9.24","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

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