Skip to main content

🔍 Streamlit Code Diff

PyPI version Python 3.9+

A simple Streamlit component for code diff visualization using v-code-diff. Great for displaying code changes, git diffs, and side-by-side comparisons.

Features

  • Automatic Theme Detection - Adapts to Streamlit's light/dark theme
  • Multi-Language Support - Syntax highlighting for 10+ programming languages
  • Customizable Display - Side-by-side or line-by-line diff formats
  • Granular Diff Styles - Word-level or character-level difference highlighting
image

Installation

pip install streamlit-code-diff

Quick Start

import streamlit as st
from streamlit_code_diff import st_code_diff

old_code = """def hello():
    print("Hello")"""

new_code = """def hello(name="World"):
    print(f"Hello, {name}!")"""

# Display the diff
result = st_code_diff(
    old_string=old_code,
    new_string=new_code,
    language="python"
)

st.write(f"Changes detected: {result['isChanged']}")

Parameters Reference

st_code_diff()

Display a code diff visualization.

Parameters

Parameter Type Default Description
old_string str Required Original code content
new_string str Required Modified code content
language str "plaintext" Programming language for syntax highlighting
output_format "line-by-line" | "side-by-side" "side-by-side" Display format
diff_style "word" | "char" "word" Granularity of diff highlighting
context int 5 Number of context lines around changes
filename str | None None Original filename to display
new_filename str | None None New filename to display
theme "light" | "dark" | None None Force theme (auto-detects if None)
trim bool True Remove leading/trailing whitespace
no_diff_line_feed bool True Ignore line ending differences
height str | None None Maximum height (e.g., "300px", "50vh")
force_inline_comparison bool False Force inline comparison (word/char level)
hide_header bool False Hide header bar
hide_stat bool False Hide statistical part in header bar
ignore_matching_lines str | None None Pattern to ignore matching lines (regex)
key str | None None Unique component key

Returns

Returns a dictionary with diff statistics:

{
    "isChanged": bool,    # Whether differences were detected
    "addNum": int,        # Number of added lines
    "delNum": int         # Number of deleted lines
}

Supported Languages

The component supports syntax highlighting for:

  • plaintext (default)
  • python
  • javascript / js
  • typescript / ts
  • json
  • yaml / yml
  • java
  • bash / shell
  • sql
  • html
  • xml
  • css
  • markdown / md

Contributing

Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Acknowledgments

Metadata

Release files for streamlit-code-diff 0.1.2

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

Built distribution (wheel)

Table of built distributions (wheels) for streamlit-code-diff 0.1.2
File Interpreter ABI Platform
streamlit_code_diff-0.1.2-py3-none-any.whl Python 3 none any Details

Release files / streamlit_code_diff-0.1.2-py3-none-any.whl

Download URL streamlit_code_diff-0.1.2-py3-none-any.whl
Size 139.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
a39b360f811fca9280c173bf0ef1e34f57d68f525a3ade93fed904b489b0e74a
BLAKE2b-256 checksum
How to use checksums
aef1494e1999f3ef20f3941a784d16761c423bec73b3c57b046a4a7b36ba096f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.7.15

Release history Release notifications | RSS feed

This release

0.1.2 This release

1 release file

0.1.1

1 release file

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