1 unstable release
Uses new Rust 2024
| new 0.1.0 | Mar 6, 2026 |
|---|
#2 in #dioxus
1.5MB
24K
SLoC
Synpad
A full-featured Matrix chat client built with Rust and Dioxus.
Synpad aims for near-complete feature parity with Element Web, delivering a fast, secure, and cross-platform Matrix experience.
Features
Messaging
- Rich Markdown formatting, inline code, and code blocks
- Message editing, deletion, replies, and threads
- Reactions, read receipts, and typing indicators
- Polls, voice messages, and location sharing
- Message forwarding and edit history
- Message effects (confetti, fireworks)
Encryption & Security
- End-to-end encryption enabled by default for private rooms
- Cross-device verification (QR code and emoji)
- Key backup, recovery, export, and import
- Secure session persistence
Rooms & Spaces
- Room creation with encryption, permissions, and alias configuration
- Space hierarchy navigation and space-based filtering
- 23 configurable room permissions
- Room upgrades and chat history export (HTML, plain text, JSON)
Calls & Media
- Voice and video calls via Element Call integration
- Screen sharing and video rooms
- Media uploads with progress tracking
- Image viewer and file downloads
Search & Navigation
- Spotlight search (Ctrl+K) for rooms and users
- Server-side and local persistent search index
- Breadcrumb navigation for recent rooms
Customization
- Light and dark themes with custom theme support
- Bubble layout option
- Configurable notification rules
- Keyboard shortcuts
Tech Stack
| Layer | Technology |
|---|---|
| Language | Rust |
| UI Framework | Dioxus 0.7 |
| Matrix SDK | matrix-rust-sdk |
| Async Runtime | Tokio |
| State Store | SQLite (bundled) |
| Markdown | comrak + ammonia |
Getting Started
Prerequisites
- Rust (stable)
- Dioxus CLI (
cargo install dioxus-cli)
Desktop (default)
# Development
cargo run --bin synpad
# Or with Dioxus hot-reload
dx serve
# Release build
cargo run --bin synpad --release
Packaging
# Desktop package
dx bundle --release --desktop
# Android package
dx bundle --release --android --features mobile --no-default-features
# iOS package
dx bundle --release --ios --features mobile --no-default-features
Mobile packaging requires the platform SDKs:
- Android: Android SDK + NDK available to the Dioxus CLI toolchain
- iOS: Xcode and Apple signing tools on macOS
Web
dx serve --features web
dx build --release --features web
Mobile
dx serve --android --features mobile --no-default-features
dx serve --ios --features mobile --no-default-features
Project Structure
src/
app.rs # App routing and global state initialization
main.rs # Entry point (desktop/web/mobile)
auth/ # Login, registration, SSO, OIDC, password reset
client/ # Matrix SDK client setup, session management, sync
state/ # Global application state and signals
room/ # Room view, timeline, composer, calls, media, widgets
room_list/ # Room list, spaces, filtering, room creation
right_panel/ # Room info, members, threads, files panels
components/ # Reusable UI components
settings/ # User settings pages
encryption/ # E2E encryption, verification, key management
notifications/ # Desktop notifications and push rules
cache/ # Media and avatar caching
persistence/ # Session and state persistence
theme/ # Theming and design tokens
i18n/ # Internationalization
utils/ # Markdown, HTML rendering, search, formatting
layouts/ # Main and auth layout containers
pages/ # Top-level page components
assets/
css/main.css # Application styles
fonts/ # Font files
icons/ # Icon assets
License
Dependencies
~93–155MB
~2.5M SLoC