Releases: Kwickflix/kwicktv-android
Release list
v1.0.97 — Plex, Emby, and Pairing Your TV With Your Phone
Plex and Emby join Jellyfin — connect your own media server and browse it alongside everything else. Plex signs in the proper way, with a code at plex.tv, so no Plex password ever goes into the app.
Setting up on a TV no longer means typing a web address with a remote. The app shows a six-character code and a QR; you fill your details in at kwickplayer.tv/link on your phone and the TV picks them up on its own. Prefer the remote? "Enter it on this TV instead" is right there.
Also new
- Swipe for brightness and volume on a phone — left side for brightness, right for volume.
- Picture shape — Fit, Fill or Stretch, as a button while you watch and as a default in Settings.
- Ends at 8:42 PM — see when a film or episode will actually finish, in the player and on its page.
- App size — set how big the app draws, from 75% to 130%.
- Background effect — grid lines, CRT lines, both or neither, chosen separately from your theme.
Fixed
- Films and shows pick up where you left them, including after closing the app and across your devices. Several separate faults were losing your place, one of which destroyed it permanently.
- Titles from a media server stopped disappearing from Continue Watching.
- The app no longer crashes when you open two channels quickly.
- On a television: the highlight showing what you are pointing at is visible from a sofa; the remote can reach the episode list, the media bar arrows and the settings rows it used to skip; and the sign-in screen is built for a remote instead of a phone.
- The screen no longer sleeps in the middle of a film.
v1.0.96 — Your Own Media Server
The biggest release this app has had: connect your own media server, and a set of protections that mean a provider having a bad day can no longer take your channel list with it.
New
- Connect your own Jellyfin media server. Settings › Sources › Media Server Sources takes a Jellyfin server — address, username, password — and the app reads its libraries and keeps a copy, so you can browse it even with the server asleep. Its films and shows sit in the same grids as your provider's, one row per library, with a chip for the server. Search finds them; detail pages carry poster, year, rating, genres and description; shows have seasons and episodes with the full watched-checkmark treatment, auto-next and Continue Watching. Favourite them, add them to lists, hide or PIN-lock a library like anything else. Genres become chips, and under your server's chip, All shows everything, newest first. Your sign-in stays on the device — never uploaded, never synced, never written into any stored address.
- Your media server follows you between devices. Favourite a film on the phone and it's favourited on the TV; stop halfway and the other device offers Resume from the same spot. Each device signs in once itself — that part never travels — and devices on older versions carry the records along untouched. The server is recognised by its own identity, not its address, so a phone on the home IP and a TV on the domain name agree.
- Give each source its own colour. Both source screens have a Colour option — the source's chip and poster tags carry a coloured dot, and colours follow you to your other devices.
Fixed
- A provider outage can no longer empty your channel list. A refresh that comes back with nothing — or a fraction of what you had — keeps your channels and tells you what happened, with both numbers and a Use the new list option for a genuine package change. Error pages, expired accounts and half-sent answers now say what they are instead of pretending to be an empty catalogue.
- The crash when opening a channel or film (worst on Fire TV): the player could be torn down in the instant it was starting, leaving a black screen with no error. Every crash report of the last week was this one fault — fixed at the root, on both engines.
- Sync hardening, end to end. Changes made while a sync runs are no longer forgotten; a favourite can't vanish because the app closed at the wrong moment; a device with a badly wrong clock no longer silently loses its changes; removing a server and re-adding it keeps your favourites and progress instead of duplicating or deleting them.
- Better artwork everywhere. Title logos where your server has them, borrowed artwork where it doesn't (shown only when the match is certain), and posters that survive a panel filing them under a different name.
Also: each server library listed with its size on the sources screen, a one-piece browse header, believable years in the Year picker, and artwork that collects itself on the first launch after updating.
Installing keeps all your profiles, favourites, and history.
v1.0.95 — Audio tracks and Multi-View
Kwick Player 1.0.95 (build 395)
New
Choose the audio track. Films and shows often carry several soundtracks and the app took whichever the file listed first. There is now an audio button in the player controls beside subtitles, on both video engines and inside Multi-View, where each pane has its own. Set a preferred language once in Settings > Playback and the app picks it by itself.
Getting that choice right took some care. A file listing IT - ENGLISH and ENGLISH - ENGLISH was read as English on the strength of the word appearing in both; a file offering en-IN alongside a plain English took the Indian English dub. The app now prefers a plain language tag over a regional variant, and a label that is the language over one that merely mentions it.
Multi-View. Watch up to four channels, films or episodes at once. It offers exactly as many panes as your line has connections, so a 2-connection account is offered 2 rather than being allowed to pick four and watch two fail. Panes start one at a time — devices have a limited number of video decoders, and starting four at once also hits your provider with four simultaneous opens from one address. Sound lives on one pane and moves with the remote or a tap. Reachable from the Live TV grid button, from inside any player, and from any channel, film or series page.
Fixed
One tap started two streams, and the second killed the first. Pressing play opened the same stream twice. The two shared one video engine, so the second one closing shut down the first — a black screen with no error, no crash, and two of your connections used for one tap. Live, films and episodes all affected.
The cause was nothing to do with playback: the decorative grid overlay switches off during fullscreen video, and the way it did that made Flutter discard and rebuild everything beneath it, including the router. Pressing play rebuilt the screen you had just opened.
The obvious fix was the wrong one and is now a regression test — deferring the flag by a frame moves the second build one frame later and leaves it there.
- "Couldn't load this series" on shows with no description. Panels answer with an empty array instead of an empty record for a show with no metadata, and the app gave up on the whole page — throwing away an episode list that was perfectly fine. Four other places had the same blind spot, including the one that reads your account details.
- A second account on the same service wouldn't load — every channel of the second account looked like a duplicate of the first and was rejected. Existing accounts keep identifying their channels exactly as before, so nothing needed converting and no favourites moved.
- Sources can be renamed, so two lines are not both just "KwickTV", and each has its own refresh button showing its channel and connection count. A line upgraded from 1 to 4 connections used to go unnoticed forever — which also silently disabled Multi-View.
- Leaving a series took more than one press of Back. Same root cause as the double-open above.
- The TV could sleep over a video that was still playing.
- Secure connections were being made insecurely and failed — the cause of missing posters and failed log uploads.
- The Resume button no longer looks doubled; plot and cast match the panel below them; Continue Watching resumes the right episode.
Also
Home opens with what you were watching, films and series filter by year, Sports has a search, Settings has a Media Bar section, error screens look like part of the app, and you can mark things as watched.
Behind the scenes
Test builds can no longer reach the live KwickTV server, and now say which server they are allowed to talk to on the first line of their log.
v1.0.94 — Getting Your Account Back
Also on Google Play — same app, auto-updating.
Two of the fixes here reach people who never touch a proxy, and neither group could tell us about it: one has an app that never opens, and the other looks like the app simply lost their account.
Fixed: some devices bricked by 1.0.91 were still bricked, even on 1.0.92 and 1.0.93. The hotfix cured most of them, but not all — and the ones it missed had no way of saying so, because the app still just sat on the loading screen.
When 1.0.91 crashed part-way through updating its database, the changes it had already made stayed put, while the note saying "this database is now up to date" was never written. Every launch afterwards started the update again from the beginning and tripped over its own earlier work. 1.0.92 fixed the exact step named in the crash report it was written from — so anyone whose update had got one step further kept crashing, just on a different step.
Every step of the update is now safe to run twice, from any starting point, so a device still stuck comes back on its own. Nobody's data was ever lost: the update simply never finished. (From member logs on a Walmart onn 4K box and a Galaxy S23, both still crashing after the 1.0.92 fix.)
Fixed: signing out and back in left your profiles, favourites and history behind on the server. You would sign in, everything would check out, and the app would ask you to set up a profile as though the account were brand new. Signing in again changed nothing, because the problem was not the sign-in.
Your device keeps a bookmark saying how far through your account's changes it has read. Signing out correctly wiped the local copy of your stuff — but left the bookmark at the end, so the next sign-in asked the server "what's changed since I last looked?" and the honest answer was "nothing". Everything was still safely on the server the whole time; the app was asking the wrong question. The bookmark is now cleared along with the data it describes, and devices already stuck this way heal themselves on the next sync.
SOCKS5 proxies are now supported, not just HTTP ones. Settings › Network › Proxy has an HTTP / SOCKS5 switch. SOCKS5 is what most people are actually given when a network blocks something outright, and it has a second advantage that matters here: it looks addresses up at the proxy, so it still works when the network's DNS is the thing doing the blocking — the single commonest reason a provider appears unreachable.
It covers everything the app does: signing in, channel lists, the guide, artwork, and video. Video needs a word of explanation — neither player engine can speak SOCKS5, so the app's built-in relay carries it, automatically, with nothing extra to switch on. HTTP and SOCKS5 keep their own address, port and sign-in details, so switching between them never mixes the two up.
You can now set up a proxy from the sign-in screen, before you sign in. If your network blocks your provider, the proxy setting was the thing that would have saved you — and it was locked behind signing in, which was the thing you couldn't do. There is now a Behind a proxy? Set one up button on that screen, and if sign-in fails for a network reason the way out appears right under the error. The button doubles as a status, so a proxy left switched on can never be a silent surprise.
Signing in no longer pretends your account is empty when KwickSync can't be reached. It used to drop you straight onto "Set up your profile", which looks exactly like losing everything. You now get told that sync couldn't get through, that nothing has been lost, and offered Try again — with the option to continue without it if you'd rather.
Fixed: the "Xtream Login" tab changed shape when you picked it. Selecting it added a tick that stole enough width to break the label onto two lines, so the tab visibly jumped as you moved across the row.
Installing keeps all your profiles, favourites, and history.
v1.0.93 — Telling You What Actually Went Wrong
Also on Google Play — same app, auto-updating.
Three problems members could hit and had no way to understand. Each one used to look the same from the outside — a dead channel, a stuttering picture, a refused sign-in — leaving you to guess between your internet, your device and the app. Each now says which it actually is.
Fixed: a channel could be dead on arrival because the app picked a video decoder the device can't use. On some TVs the app asked for the decoder in a way that particular chipset cannot set up, the setup failed, and that was that — every channel showed the raw engine text "Could not open codec." and stopped. The device was never the problem: the same TV played fine the moment a different decoding route was used.
It now tries the next route by itself — hardware-on-screen first, software only if that fails too — and remembers which route this TV can't do, so it stops choosing it. If none of them work you get a plain explanation and a pointer to Settings › Playback › Video decoding instead of engine jargon. (From a member's Sony BRAVIA log.)
The app now says when a channel's own timing is broken, instead of letting you blame your internet. Some channels send timing information that doesn't add up. The picture skips badly even though everything has arrived and the buffer is full — so the connection looks fine, the app looks broken, and there's no way to tell which.
It's now recognised and named: the channel is at fault, not your connection and not your device, another channel from the same provider may be perfectly fine, and the other player engine may cope better. It only says so when the numbers can't mean anything else — more frames being thrown away each second than the channel can possibly contain, for a sustained stretch, while the buffer is healthy. A struggling TV, a slow connection, or one hiccup after re-buffering will never trigger it. Works on both player engines.
Sign-in tells you what actually went wrong, and what to do about it. "Check your internet connection" was the catch-all for every failure, and it was usually the wrong advice. The commonest cause by far is a network blocking KwickTV — ad-blocking or filtered DNS on the Wi-Fi (Pi-hole, AdGuard, NextDNS, some internet providers' own), or a router blocking the port. The rest of the internet keeps working perfectly, so it reads as "my account is broken".
It now names the likely cause and gives you the ten-second test that settles it: try mobile data or a phone hotspot, and if it works there the network is the problem and there is nothing wrong with your account. The real reason also goes into Export Logs, so a sign-in problem can finally be diagnosed instead of guessed at.
Sign-in also gives up about twice as fast when a server genuinely isn't answering. It used to try three times no matter what went wrong, and every attempt waits fifteen seconds for a connection that is never coming. A real server-side error still gets all three tries; a network that cannot even find the server fails straight away; anything else gets one retry, then stops.
Google Play users can leave a rating from inside the app — Play's own rating card, once, well after launch, for someone who has actually kept and used it. Never during startup, and at most twice ever. There's also a Rate Kwick Player entry in Settings › About for anyone who wants to without waiting to be asked.
Installing keeps all your profiles, favourites, and history.
v1.0.92 — Emergency Fix: 1.0.91 Would Not Start
If 1.0.91 is stuck on the loading screen, this is the fix. Install it over the top — everything comes back exactly as you left it.
Also on Google Play — same app, auto-updating.
Fixed: 1.0.91 would not start if you already had the app. It sat on the loading screen forever. Updating brings the app's own database up to date first, and that step tried to add three columns to a table it had just built with those columns already in it. The database refused, and because this happens while the app is opening it, the app never got past loading.
A fresh install was unaffected — which is why clearing the app's data appeared to fix it, and why this got through testing: a new install builds the database in one go and never runs the update path at all.
Nothing was lost. The update simply never completed, so your profiles, favourites, history and settings stayed exactly as they were and come back intact.
Fixed: opening a movie or episode could close the player. If your history held two entries for the same title — KwickSync merging one in from another device is the likeliest way — looking up your resume point failed and took the whole player down with it, on opening and again on each auto-play-next. It now takes the most recent entry and carries on. (From a crash log on an Amazon Fire TV.)
Sign-in now tells you what actually went wrong. "Check your internet connection" was the catch-all for every failure, and it was usually the wrong advice. The commonest cause is a network blocking KwickTV — ad-blocking or filtered DNS on the Wi-Fi (Pi-hole, AdGuard, NextDNS, some internet providers' own), or a router blocking the port. The rest of the internet keeps working perfectly, so it reads as "my account is broken".
It now names the likely cause and gives you the ten-second test that settles it: try mobile data or a phone hotspot, and if it works there the network is the problem and there is nothing wrong with your account. The exact reason also goes into Export Logs, so a sign-in problem can finally be diagnosed instead of guessed at.
Installing keeps all your profiles, favourites, and history.
v1.0.91 — Your Own TV Guides & Playlists From a File
Also on Google Play — same app, auto-updating.
Use your own TV guides. Settings › Library › TV Guide source. If your provider's guide is missing or wrong, point it at one of your own — a link to an XMLTV file, or one off this device. Compressed .gz guides work as they come.
- Add as many as you like. One guide rarely covers a whole lineup — an over-the-air guide covers local stations, a sports guide covers sports. Each fills in the channels it can, in the order you added them, and your provider's guide covers everything left over.
- It matches guides whose channel IDs don't line up with your provider's — which is most of them. A guide might key a station
20431while your provider calls the same stationMA | Boston | CBS 4 WBZ. It now falls back to the station name and callsign, soWBZon one side findsWBZDTon the other. Where it can't be sure — two stations answering to the same word — it leaves the channel alone rather than guessing, because the wrong listings against a channel are worse than none. - Each guide shows how many of its channels matched yours and how many didn't, so a guide for the wrong region reads as the wrong guide rather than a broken feature.
Add an M3U playlist from a file. For a playlist too big to be worth downloading, or one that only exists on a USB stick. The file is copied into the app, so it keeps working after the stick comes out. Leave the name blank and the source is named after the file — a playlist can be added on a remote without typing anything. (Requested by crak3rjack.)
Favourited movies and shows are marked on their poster — a small heart while you browse Movies, Series and search, so you can see what you've already favourited without opening each one. (Requested by Ed.)
The bottom menu on phones no longer squeezes its buttons. Eight buttons across a phone left each one too small to hit reliably and the labels cut in half. The five you browse with keep their places; Recordings, Settings and Get KwickTV move behind a More button. The side menu on a TV is unchanged.
The TV Guide's category tabs now have a second level. Picking a tab shows your provider's own groups inside it, so instead of one merged "News" pile you can go straight to the one you want. 24/7 channels are gathered under 24/7, which now leads the row. (Requested on the Roku repo by crak3rjack.)
Sports can be hidden from the menu — Settings › Appearance, for anyone who doesn't watch sport. Per profile, and carried by KwickSync.
Fixed
- A crash when Back was pressed while the app was still starting. No message, just gone. It happened underneath everything the app itself controls, which is why nothing caught it. (From a member crash report on a Galaxy S25.)
- Back closed the app instead of going Home. Two causes: Sports was never added to the list of tabs Back knows about, and underneath that, newer Android had started asking the app up front whether it wanted the Back press and closing the app itself when it misread the answer — so none of the app's own Back handling ran, on any tab.
- The big Sports card was crushed on a phone. The fixture name, the time and the Watch button were squeezed into a sliver while the team badges took most of the width. On a phone the badges now sit above the text at full size.
- Hiding Sports didn't actually hide it — the switch saved, but the menu didn't update.
- "Auto-update on launch" showed the old value until you left Settings and came back.
- Removing a provider now deletes any guide file you loaded for it.
Installing keeps all your profiles, favourites, and history.
v1.0.90 — Sports Page, 15 New Themes & Google Play
Also now on Google Play — same app, auto-updating.
A new Sports page: find the game, then find a channel showing it.
Browse what's on now and what's coming up, filter by sport, and tap any game to see every channel in your own playlist carrying it — so you pick the best stream instead of hunting through the channel list.
- Badges and flags. Team and competition crests, plus a country flag on each game, so you can tell an American fixture from a South African one at a glance.
- Live games are unmistakable — marked and led to the top. Games with badges sort above the rest, so the page reads well from the top down.
- One game, not twelve rows. The same match usually appears on a dozen channels — regions, languages, qualities. Those collapse into a single game with the streams listed behind it, best quality first.
- Only actual games. Studio shows, league channels and highlight reels are deliberately left out. Golf, races and fight cards still appear, because those are events in their own right.
- Built entirely from your existing channels and TV guide. No sports service is involved and nothing about you is looked up. Where a badge can't be matched with confidence, you get a plain sport icon rather than a wrong crest.
Fifteen new themes, and a theme picker you can actually use.
Twenty-nine themes now, so the picker shows a grid of previews — each painted in that theme's own colours — instead of a scrolling list of names. You see the whole set at once and pick by eye, and it's far fewer button presses on a remote.
New: Deep Current, Clay, Neon Noir, Neon Drive, Tangerine, Bubblegum, Amber Mono, Amethyst, Kanagawa Wave, Kanagawa Dragon, Swizzin, Nightwalker, The Kyle, Minimal, and Napster 98 — a full Windows 98 tribute, and the only light one of the set.
Fixed
- Selected buttons and tabs could be almost unreadable on many themes, including several that shipped months ago. The text on a selected chip, tab or navigation button was being drawn in a colour that matched the button behind it. Fixed across every theme, old and new.
Installing keeps all your profiles, favourites, and history.
v1.0.89 — TV Icon Fix, Channel-Switch Crash & Connection Notices
Rebuilds the Android TV icon and banner, fixes a channel-switching crash, and tells you when your connection is the problem.
The TV icon was being assembled from a layered format that crops a third off every side, so the finished artwork reached the screen with the TV frame missing and the name clipped. That format is gone — the icon is now the plain full-size image and the banner the plain full-size banner, at every screen size. The last of the old KwickFlix artwork went with it.
Fixed
- A crash when changing channels on the ExoPlayer engine. Leaving one channel while the next player screen was still sliding into view could take the app down. The video window was reporting its position on screen a fraction too early, before the sliding page had been measured. The default engine was never affected. (Found in a member crash report from a Pixel 8.)
- Changing category in Movies or Series now takes you to the top of the new list instead of dropping you halfway down it. A catalog refresh while you're browsing still leaves your place alone.
New
- "Your connection isn't keeping up" now covers everything — both players, live TV and movies alike. When a stream has been starved long enough that the stuttering is clearly the connection's fault, the app says so on screen instead of leaving you wondering whether the app is broken. A momentary dip never triggers it, and it appears once per stream.
- Diagnostic reports no longer pile up on your device. A report used to contain everything the phone had ever logged. Once a report is safely delivered, the device now clears what it sent and keeps only a short tail for context — so the next one is about what actually happened since. Nothing is cleared if the report doesn't make it.
Installing keeps all your profiles, favourites, and history.
v1.0.88 — TV Artwork Rebuild & KwickFlix Cleanup
Finishes the Android TV artwork fix, and removes the last traces of the old app name.
The app icon turned out to be built from a padded copy of the artwork — a dark border baked into the image itself, so the logo only filled about half its frame. Every icon has been rebuilt from the original border-free art and now fills the frame properly, at the larger sizes televisions require. The TV banner now ships at all five screen densities so it's sharp on every set.
Three places the old KwickFlix name could still appear are gone:
- The exit confirmation asked "Are you sure you want to close KwickFlix?" — it now names the app you're actually using.
- The recording notification's description in Android settings.
- New recordings save under Documents/KwickPlayer/Recordings. Your existing recordings still play — they just remain in the old folder.
Installing keeps all your profiles, favourites, and history.