Status: Draft for maintainer review
Date: 2026-07-17
Author: Community contributor
This document proposes adding Simkl as a first-class tracking and sync provider in NuvioTV, modeled after the existing deep Trakt integration. Simkl is the fastest-growing Trakt alternative, with dedicated anime support, a modern API, and strong community demand — currently the most requested feature on the NuvioTV repository.
| Metric | Value |
|---|---|
| GitHub issue reactions | 25 total (16 👍, 5 ❤️, 2 🚀) |
| Related open issues | #803, #1723, #500 |
| Reddit threads (last 6 months) | 8+ threads requesting Simkl |
| NuvioSync already supports | Simkl import (web tool) |
| TV Time shutdown (July 2026) | Mass migration to both Trakt and Simkl |
- TV Time shutdown (July 15, 2026) — massive migration to Simkl, the #2 destination after Trakt.
- Trakt limits free accounts to 1 app connection — users are being logged out of NuvioTV because Trakt now limits free accounts to a single connected app. This is actively breaking the Trakt integration for the majority of users who also connect other apps.
- NuvioSync already has Simkl import — the server-side bridge exists. Only the TV client integration is missing.
- Trakt reliability issues — persistent bugs with continue watching and watchlist/library sync (Reddit reports, issues #2491, #2298, #598).
- Simkl's anime support fills a gap — Trakt has weak anime metadata.
- Differentiation: NuvioTV would be one of the first Android TV apps with native Simkl scrobbling.
| Issue | Title | Status | Reactions | Comments |
|---|---|---|---|---|
| #777 | Simkl full integration | Open (enhancement) | 25 total | 12 |
| #803 | add simkl | Open (enhancement) | 7 total | 1 |
| #1723 | Sync service (Simkl, AniList, MAL) | Open (enhancement) | 0 | 0 |
| #500 | Enhancement simkl | Closed (not_planned) | 0 | 1 |
- We need SIMKL integration please 🙏 (19d ago, 13 upvotes)
- Simkl support for tracking (4mo ago, 12 upvotes)
- Simkl Android TV (3mo ago, 3 upvotes, 8 comments)
- Nuvio integration with Simkl syncing on TV (3mo ago)
- BIG NuvioSync Update: Sign in with Stremio, Simkl Sync (1mo ago, 269 upvotes)
- When will Nuvio support AniList, Simkl and MyAnimeList (1mo ago, 17 upvotes)
- SIMKL question (4mo ago)
- Sync issue (1mo ago)
- Trakt started to limit connection in free account (70 votes, 37 comments) — free accounts now limited to 1 app connection; users being logged out of NuvioTV
- Trakt kicked me out today — their new limit (29 votes, 29 comments) — confirmed limit of 1 connected app on free plan; user explicitly says "answer is to move to Simkl"
- You can now only auth 1 trakt app for free — "Seriously?! Trakt integration is becoming worthless."
- AIOMetadata addon — can scrobble but can't end scrobble (no stop event)
- Syncribullet addon — inconsistent, described as "hit or miss"
- Third-party browser extensions — no TV integration
"I added SIMKL to my Windows fork. I think Trakt competition is extremely important to at least have them hesitate on bending us over any further." — community member
| Feature | Trakt | Simkl |
|---|---|---|
| Auth for TV | Device PIN flow | PIN flow (same pattern) |
| Scrobble | start / stop (no pause) | start / pause / stop / checkin |
| Auto-watch threshold | 80% | 80% |
| Watch history sync | ✅ Full | ✅ Two-phase incremental |
| Continue Watching | ✅ | ✅ (with explicit pause endpoint) |
| Ratings | 1-10 scale | 1-10 scale |
| Custom lists | ✅ Full CRUD | ✅ Full CRUD |
| Anime tracking | ❌ Weak (TMDB-backed) | ✅ Dedicated (AniDB-mapped) |
| External IDs | IMDb, TMDB, TVDB | IMDb, TMDB, TVDB, MAL, AniDB, AniList, Kitsu |
| Trakt ID reuse | N/A | ✅ Accepts traktslug directly |
| Token lifetime | 3 months (with refresh) | 5 years (no refresh needed) |
| API rate limit | 1,000/5min (apps) | 10 GET/s, 1 POST/s |
- Anime support: AniDB-mapped seasons, MAL/AniList/Kitsu IDs. This is a major gap in Trakt.
- Explicit pause endpoint: Trakt has no pause — it reuses
stopfor both pause and completion. - 5-year tokens: No refresh-token complexity. Token only expires if user revokes.
- Inline ID resolution: Scrobble and sync endpoints accept IDs directly — no search round-trip needed. NuvioTV's existing
contentId(IMDB/TMDB) maps directly. - Accepts
traktslug: Existing Trakt-sourced IDs can be reused.
Simkl fits naturally into a consolidated Integrations section (following #2015 — "Move Trakt into Integrations"):
Settings → Integrations
├── Trakt ● Connected as @username
│ [Disconnect] [Settings ▸]
│
├── Simkl ○ Not connected
│ [Connect to Simkl]
│
└── Watch Progress Source
○ Nuvio Sync ● Trakt
○ Simkl ○ Trakt + Simkl ⏳
Same UX as connecting Trakt today:
- User taps "Connect to Simkl" in Settings
- TV shows a 5-character code: "Go to simkl.com/pin and enter ABCDE"
- User enters code on their phone/computer
- TV detects approval and shows "Connected as @username"
┌─────────────────────────────────┐
│ Back Simkl │
├─────────────────────────────────┤
│ Status: ● Connected │
│ User: @username │
│ [Disconnect] │
│ │
│ ☑ Scrobble playback │
│ ☑ Sync watch history │
│ ☑ Sync continue watching │
│ │
│ Continue Watching Window: │
│ [90 days ▾] │
│ │
│ [Sync Now] Last sync: now │
└─────────────────────────────────┘
Simkl and Trakt are mutually exclusive — the user picks one as their single tracking provider. This avoids merge conflicts, dual-write complexity, and confusing UX.
Available modes:
| Mode | Scrobble Target | History Source | Continue Watching |
|---|---|---|---|
| Trakt | Trakt | Trakt | Trakt |
| Simkl | Simkl | Simkl | Simkl |
| Nuvio Sync | Local | Nuvio Sync | Nuvio Sync |
Migrating from Trakt to Simkl is a one-time external step:
- User goes to simkl.com/apps/import/trakt — Simkl's native Trakt importer
- User authorizes both Trakt and Simkl; the import transfers watch history, ratings, and watchlists
- Back in NuvioTV Settings, user switches Watch Progress Source from Trakt to Simkl
- NuvioTV imports the Simkl library, Continue Watching populates, done
No data is lost — Trakt data remains on Trakt. The user can switch back any time, but note the important caveat below.
⚠️ Migration is one-way. Simkl does not offer a native export back to Trakt. If you migrate to Simkl and later want to return to Trakt, your watch history accumulated on Simkl would not automatically transfer back. Only migrate when you're confident in the switch. Your old Trakt history remains untouched on your Trakt account — it just won't include anything you watched after switching.
When the user switches their Watch Progress Source:
- Clean transition: progress and watched items from the old source are preserved in local cache
- New source populates Continue Watching and library indicators
- Non-Trakt IDs (
kitsu:,mal:from anime addons) are always preserved
| Phase | Feature | What the User Gets |
|---|---|---|
| P1 | Auth + Scrobbling + Library Sync | Connect Simkl account; playback auto-tracks to Simkl |
| P2 | Sync + Continue Watching | Watched history syncs; cross-device resume works |
| P3 | Custom Lists | Simkl lists appear in library |
| P4 | Settings polish | Full settings page, source switching |
The user connects their Simkl account in Settings via PIN code (same UX as Trakt). From that moment, every movie and episode they watch is automatically tracked — playback start, pauses, and completion are reported to Simkl. Items finished (≥80%) appear as watched on Simkl. The full watch history is pulled from Simkl on first connect, so library watched indicators reflect the user's Simkl history immediately.
What changes for the user:
- New "Connect to Simkl" option in Settings
- Simkl appears as a Watch Progress Source option
- Library watched indicators sync with Simkl on connect
- Playback progress scrobbles to Simkl in real time
The user's full watch history is imported from Simkl — watched indicators in the library now reflect what's on Simkl. Continue Watching pulls from Simkl's cross-device paused sessions, so starting a show on another app and resuming on NuvioTV works seamlessly.
What changes for the user:
-
Library watched indicators sync with Simkl
-
Continue Watching works from any device that scrobbles to Simkl*
-
"Sync Now" button in Settings for manual refresh
* Paused playback sessions expire server-side after 7 days on the Free plan (30d Pro, 90d VIP). The local cache preserves titles in Continue Watching beyond expiry, so the typical daily user won't notice. Cross-device resume may not work for sessions older than the retention window.
Simkl custom lists (Watching, Plan to Watch, Completed, etc.) appear in the NuvioTV library. Users can add/remove items from lists directly in the app.
What changes for the user:
- Simkl lists appear as rows/sections in the library
- Manage lists (create, rename, add/remove items) from the app
Full Simkl settings page with all toggles (scrobble, sync, CW window). Clean source switching between Simkl, Trakt, and Nuvio Sync.
What changes for the user:
- Full settings page with individual feature toggles
- "Continue Watching Window" configuration (14–365 days)
- Seamless switching between progress sources without data loss
- API key registration: Who registers the Simkl client ID? Needs a
SIMKL_CLIENT_IDin BuildConfig. - NuvioSync bridge: NuvioSync already imports from Simkl. Should it sync bidirectionally, or keep Simkl as a client-only integration?
- Simkl as Library source: Trakt can be used as a catalog provider. Should Simkl also provide catalogs, or only sync?
- Anime support: Should the integration expose anime-specific catalog endpoints, or only track anime watch history?
isTraktCompatibleId()generalization: Currently, non-Trakt IDs (kitsu:,mal:,anilist:) are quarantined locally. When Simkl is active, these should flow through the remote source instead.- Trakt-only features: Comments and "More Like This" remain Trakt-only. Should the UI clarify this?
- User can connect Simkl account via PIN flow in Settings
- Playback scrobbles to Simkl in real time (start → pause/resume → stop)
- Items auto-mark watched at 80% completion
- Watched history syncs from Simkl into NuvioTV
- Continue Watching works from Simkl paused playback sessions
- Ratings submit to Simkl (1-10 scale)
- Custom lists sync (read + write)
- User can select Simkl as watch progress source
- Source switching preserves watched history from the previous source
- Non-Trakt IDs (kitsu:, mal:, anilist:) are preserved when switching sources
| Issue | Relevance |
|---|---|
| #777 | Feature request for full Simkl integration (25 reactions) |
| #803 | Simkl request (7 👍) |
| #1723 | Multi-service sync request |
| #500 | Simkl enhancement (closed not_planned) |
| #2298 | Trakt sync reliability — Simkl addresses this |
| #2015 | Move Trakt into "Integrations" — aligns with Simkl |
| #1189 | Trakt rating prompt PR — pattern for Simkl |