Features
Current Features
Room Management
- Create rooms - Start a watch party with a custom name
- Join rooms - Enter a room ID to join an existing session
- Leave rooms - Exit cleanly with proper cleanup
- Room list - See all active rooms on the server
- Participant count - Track how many people are watching
Playback Synchronization
- Play/Pause sync - Host controls playback state for all clients
- Seek sync - Jumping to a position syncs everyone
- Position sync - Continuous updates keep clients aligned
- Drift correction - Automatic playback speed adjustment (0.85x-2.0x)
- HLS support - Works with Jellyfin’s adaptive streaming
User Interface
- OSD button - Watch Party button in the video player controls
- Slide-out panel - Room list and controls
- Home section - Watch parties shown on Jellyfin homepage
- System notifications - Centered toasts for play/pause, join/leave events
- Chat notifications - Stacking toasts for incoming messages (top-right)
- Sync indicator - Visual status showing sync state (synced/syncing/waiting)
- Connection status - Online/offline indicator
Chat
- Text chat - Real-time messaging within watch party rooms
- Username display - Shows sender’s Jellyfin username
- Timestamps - Message timestamps for context
- Unread badge - Notification when new messages arrive
- XSS protection - Messages are escaped to prevent injection
Networking
- WebSocket communication - Low-latency real-time sync
- Auto-reconnect - Automatic reconnection on disconnect
- Clock synchronization - NTP-like time sync between clients
- Rate limiting - Protection against abuse (10 tokens/min)
Security
- JWT authentication - Optional token-based auth
- Configurable secret - Admin-controlled JWT signing key
- CORS protection - Origin validation (configurable)
- Message size limits - 64KB max message size
Compatibility
Jellyfin Versions
| Version | Status | |———|——–| | 10.9.x | Supported | | 10.8.x | Supported | | 10.7.x | Not tested |
Browsers
| Browser | Version | Status | Notes |
|---|---|---|---|
| Chrome/Chromium | 80+ | Fully supported | Recommended for best experience |
| Firefox | 75+ | Fully supported | |
| Edge | 80+ | Fully supported | Chromium-based versions |
| Safari | 14+ | Supported | See known issues below |
| Safari (iOS) | 14+ | Partial | See mobile limitations |
| Chrome (Android) | 80+ | Partial | See mobile limitations |
| Firefox (Android) | 79+ | Partial | See mobile limitations |
Safari Known Issues
Safari uses its native HLS implementation which behaves differently:
- Buffering state reporting - Safari may report incorrect
readyStateduring HLS segment loading, causing brief sync hiccups - Playback rate limits - Safari may clamp playback rates more aggressively than other browsers
- Background tab throttling - Aggressive throttling can affect sync when tab is not focused
Workarounds:
- Keep the Safari tab in focus during watch parties
- If sync issues persist, try leaving and rejoining the room
Mobile Browser Limitations
Mobile browsers have reduced functionality due to platform restrictions:
| Feature | Desktop | Mobile |
|---|---|---|
| Background playback | Yes | Limited (OS may pause) |
| Playback rate adjustment | Full range | May be restricted |
| Auto-play | Yes | Requires user interaction |
| Picture-in-picture sync | Yes | Not supported |
Mobile-specific notes:
- iOS Safari - Auto-play restrictions require tapping play after joining
- Android Chrome - Background tabs may be suspended by the OS
- Data saver modes - May interfere with WebSocket connections
Media Types
| Type | Status | |——|——–| | Movies | Supported | | TV Episodes | Supported | | HLS streams | Supported | | Direct play | Supported | | Live TV | Not supported |
Known Limitations
- Host-only control - Only the host can control playback (democratic mode planned)
- Single media - One media item per room (by design)
- Ephemeral rooms - Rooms are closed when the host leaves or server restarts (by design)
- Web only - Only works in web browsers (no native mobile/TV apps planned)
- No message history - Chat messages are not persisted; late joiners won’t see previous messages
Roadmap
Planned Features
| Feature | Priority | Status |
|---|---|---|
| Text chat | High | Done |
| Message history for late joiners | Medium | Planned |
| Democratic mode | Medium | Planned |
| Automatic host transfer | Medium | Planned |
| Room passwords | Low | Planned |
Feature Descriptions
- Message history for late joiners - Send last N messages to clients joining a room
- Democratic mode - Allow all participants to control playback, not just the host
- Automatic host transfer - When host disconnects, transfer control to another participant instead of closing the room
- Room passwords - Optional password protection for private rooms
Long-term Goals
- Official Jellyfin plugin repository - Publish to the official Jellyfin plugin repository for native discoverability and installation
Version History
See the CHANGELOG for release notes.