Open-source project
verback2308/Opaline avatar
verback2308/Opaline

Opaline: a native YouTube client that gives old iPads their 1080p back

A lightweight, privacy-focused YouTube client for iOS built entirely with UIKit. No ads, no tracking, no dependencies.

350 stars36 forksSwiftGPL-3.0

At a glance

What is it?
A GPL-3.0 UIKit YouTube client for iOS 12 and newer, built for hardware Google's own app abandoned: 1080p60 everywhere, offline downloads with comments, SponsorBlock and a self-hostable playback helper.
Who is it for?
Opaline fits owners of older iPhones and iPads, iOS 12 and newer, who want proper YouTube playback, downloads with saved comments, SponsorBlock and background audio on hardware the official app abandoned, and who accept sideloading and a helper-server dependency. Skip it if you need comment posting, stable picture-in-picture before iOS 15, or a fully self-contained client with no external service.
Can I use it commercially?
Yes, with conditions. GPL-3.0 is a copyleft licence: if you distribute software that includes it, you must release that software's source code under the same licence. Running it internally without distributing it does not trigger that obligation.
Is it still maintained?
Yes. The repository last received commits 21 days ago.
What is it written in?
Mainly Swift, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 30, 2026, and from our analysis. They are not legal advice.

Editorial analysis

Born from devices Google left behind

When Google dropped the official YouTube app from older devices, the hardware did not stop working; the software did, and mobile browsers capped playback at a choppy 360p. Opaline, by verback2308, was built to restore what was lost: a lightweight, native UIKit client for iOS 12 and newer that plays up to 1080p at 60 frames per second on every device it supports, and 2K or 4K on hardware with AV1 decoding such as the iPhone 15 Pro and newer iPads.

The design goal is a focused client that does one thing well, and the engineering serves old hardware specifically: thumbnails and channel details are fetched and decoded a few at a time rather than all at once, which is what keeps scrolling smooth on a dual-core A7 chip. Formerly released as YTLite, it was renamed in August to avoid confusion with an unrelated tweak of the same name. The licence is GPL-3.0, with three releases and a last push on 2026-09-10.

The feature list runs deeper than a video player

Playback is the spine, and around it the README lists a full client: native Shorts viewing with vertical swiping and preloading, channel pages, playlists, search with filters and live suggestions, a local subscription feed, and an endless home feed with category chips read from the real shelves. Offline downloads save a video together with its page state, thumbnail, description, like counts and the comments as of the save moment, with settings for quality, comment count and subtitle languages, and a video that plays dubbed in your language is saved dubbed.

Community integrations are built in: SponsorBlock skips sponsored segments automatically, and Return YouTube Dislike restores dislike counts. Audio tracks switch between dubs on multi-language videos, with AI-generated dubs marked. Background audio, picture-in-picture, Control Center and lock-screen media controls, full VTT subtitle support and thirteen localizations round out the client, and the README notes wording follows the official YouTube app's own translations where equivalent strings exist.

Installing: four routes by device and jailbreak status

Everything starts from iOS 12 or newer. On non-jailbroken devices, the recommended route is adding the Opaline source to a sideloading app for automatic updates; the manual route downloads the latest IPA and installs it through SideStore, AltStore or LiveContainer. Building from source is three commands in the README:

bash
git clone https://github.com/verback2308/Opaline.git
cd Opaline
cp Config/Local.xcconfig.example Config/Local.xcconfig
./make_ipa.sh

Jailbroken devices get a Cydia, Sileo and Zebra repository with rootful and rootless packages, and every released version stays available for rollback. One operational warning carries a real cost: the repo package and the sideloaded IPA share a bundle identifier, so install one channel only, because having both leaves an app icon the Home Screen cannot delete. A separate downport by another developer extends support to armv7 hardware on iOS 9.3, iPad 2 and 3, the original mini and the iPhone 4S, explicitly as an unsupported, separate project.

The playback helper server, disclosed in detail

The most technically honest section covers a dependency users should know about. Signed-in playback, dubbed audio and kids videos require evaluating JavaScript from YouTube's public player page, which iOS 12-era devices cannot do on-device, so Opaline delegates that single step to a small helper server and receives the computed result. Since mid-August this covers more streams than before, and if the service is unreachable, dubs fall back to original audio and kids videos stop playing until it returns.

The privacy statement is specific: the server sees no account data, no tokens, no cookies and no watch history, only the challenge strings from the public player code and the video ID being prepared. Traffic inspection will show requests to a non-YouTube host, and the README says so before you wonder. The server's source is promised for future publication so users can host their own instance and point the app at it through a debug setting, which will close the loop on trust for this component.

Known issues, stated with unusual precision

The limitations section reads like honest release notes. Playback above twice speed may misbehave. Comments are read-only: browsing, sorting and replies open fine, but posting, replying and liking are not available. Notification delivery is bounded by iOS's background-time decisions, so app news arrives within hours of publication rather than minutes, and possibly not at all with Background App Refresh off or Low Power Mode on.

Picture-in-picture has system-imposed ceilings before iOS 15, documented down to the specifics: the window survives exactly one video, switching closes it and leaves audio running, and before iOS 14.2 the system only starts PiP from fullscreen, with inline exits degrading to background audio. An issue link carries the full findings. This granularity, per-OS-version behavior with a link to the investigation, is documentation most commercial apps never provide.

Building it yourself

The developer documentation covers the full local build: clone, copy the example local configuration, open the Xcode project, set your own product bundle identifier in Config/Local.xcconfig, and build. The same file holds APP_MANIFEST_URL, which points the in-app update check at a release manifest; leave it default to follow this repository or aim it at your own file for testing, and release builds get the URL of whichever repository they were built from written in by the workflow.

The architecture section maps the codebase: a composition root with dependency injection, a shared core holding the YouTube Innertube API client, OAuth device-code flow, transport decorators and playback, with features depending on the core and never on each other. For an indie iOS project, that structure plus SwiftFormat and SwiftLint configurations in the root signals a codebase meant to be read, which pairs with the exported debug-log feature for bug reports.

Limits, and the category it lives in

The boundary worth stating first is categorical: a third-party client that plays YouTube without the official app's advertising and tracking sits outside YouTube's terms, and projects in this category live with account, playback and availability risks that can change at any time. The helper server adds a second dependency beyond YouTube itself. Feature gaps are documented rather than hidden: read-only comments, speed ceilings, notification timing and the pre-15 PiP behavior.

Against the alternatives, the positioning is clear. The official app no longer supports these devices at all; mobile browsers cap quality; and other open clients tend to require newer iOS or depend on proxy instances. Opaline's niche is the abandoned-hardware rescue: a maintained, native client for iOS 12 and newer that treats an old iPad as a first-class citizen. For devices Google still supports, the official app remains the supported path; for everything older, this is the rare client still being engineered for the A7.

Editorial conclusion

Opaline fits owners of older iPhones and iPads, iOS 12 and newer, who want proper YouTube playback, downloads with saved comments, SponsorBlock and background audio on hardware the official app abandoned, and who accept sideloading and a helper-server dependency. Skip it if you need comment posting, stable picture-in-picture before iOS 15, or a fully self-contained client with no external service. Verify on your own device first: install via the AltStore source, play a 1080p video and a Short, save one download offline, and confirm the helper-server streams work on your network before relying on it daily.

Frequently asked questions

Which iOS versions does Opaline support?

iOS 12 and newer. For armv7 hardware on iOS 9.3 such as the iPad 2, iPad 3 and iPhone 4S, a separate downport exists by another developer, which this project does not build, test or support.

How do I install Opaline without jailbreaking?

Add the Opaline source to your sideloading app for automatic updates, or download the IPA from releases and install it through SideStore, AltStore or LiveContainer. Building from source is also documented and produces an IPA via make_ipa.sh.

Why does Opaline contact a non-YouTube server?

Signed-in playback, dubbed audio and kids videos require evaluating JavaScript from YouTube's public player page, which old devices cannot do, so a small helper server performs that step. Per the README it sees only challenge strings and the video ID, never account data or history.

Official sources

  1. Issues
  2. License: GPL-3.0
  3. README
  4. Releases
  5. verback2308/Opaline on GitHub
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/verback2308-opaline.svg)](https://hysenlabs.com/projects/verback2308-opaline)