Skip to content

milika/SmartTubeIOS

Repository files navigation

SmartTube

A native Swift/SwiftUI YouTube client for iPhone, iPad, macOS, and Apple TV.
Zero ads. SponsorBlock auto-skip. DeArrow community titles. Google sign-in. Up to 8K.

iOS 17+ tvOS 17+ macOS 14+ Swift 6.0 Ko-fi

Download on the App Store

Inspired by the original SmartTube Android app.


Screenshots


Features

Playback

  • Adaptive HLS and DASH streaming — up to 8K via AVPlayer; manual quality picker (144p → 4K)
  • DASH adaptive quality switching via AVMutableComposition — no black frames, audio preserved on every switch
  • Audio-only playback mode
  • Landscape playback with one-tap orientation lock (iPhone)
  • Picture-in-Picture (iOS)
  • Mini-player with background audio
  • Adjustable playback speed, seek interval, and sleep timer
  • Previous / next video navigation
  • Now Playing metadata on lock screen and Dynamic Island

Audio & Captions

  • Multi-track audio selection with a preferred-language setting (original, English, dubbed, and more)
  • Caption / subtitle track selection — language choice remembered across videos

Content & Feeds

  • Home, Subscriptions, Shorts, History, Search, Playlists, Library
  • Local subscriptions — follow channels without a Google account
  • RSS channel feeds with background refresh and deduplication
  • iCloud sync for subscriptions, watch state, queue, and RSS feeds
  • Video publish date shown in search results and feed cards

Ad & Sponsor Blocking

  • Zero ads, no tracking
  • SponsorBlock — auto-skip with per-category controls and skip-button toast
  • DeArrow community titles and thumbnails

Integrations

  • Google OAuth sign-in (YouTube TV device-code flow)
  • Safari Web Extension — auto-redirects YouTube, Shorts, and Music links to SmartTube
  • Share Extension — share YouTube links from any app directly into SmartTube
  • Video downloads with live-activity progress; Downloads screen in Library
  • WatchTime reporting and Like / Dislike support
  • VPN / IP-block detection with a clear, non-retrying error banner
  • Comments, Stats for Nerds

Platforms

  • iPhone & iPad — iOS 17+
  • macOS — Mac Catalyst, macOS 14+ (Sonoma)
  • Apple TV — tvOS 17+, full Siri Remote / d-pad navigation

Project Structure

SmartTubeIOS/          Swift Package — core library (models, InnerTube API, SponsorBlock, views)
SmartTubeApp/          Xcode project — app targets (iOS/iPadOS/macOS + Apple TV)
SmartTube.xcworkspace/ Xcode workspace (references both above)

Requirements

Platform Minimum
iOS / iPadOS 17.0
macOS 14.0 (Sonoma)
tvOS 17.0
Xcode 16.0
Swift 6.0

Getting Started

git clone https://github.com/milika/SmartTubeIOS
cd SmartTubeIOS
open SmartTube.xcworkspace

Signing

The project requires an Apple Developer Team ID and a Firebase GoogleService-Info.plist to build.
Copy SmartTubeApp/Config/Secrets.xcconfig.example to SmartTubeApp/Config/Secrets.xcconfig and fill in your Team ID:

DEVELOPMENT_TEAM = YOUR_TEAM_ID
SMARTTUBE_TV_TEAM = YOUR_TEAM_ID

Add your own GoogleService-Info.plist to SmartTubeApp/SmartTubeApp/ (create a free Firebase project at console.firebase.google.com — only Analytics and Crashlytics are used).
Both files are gitignored and will never be committed.


Contributing

Pull requests are welcome. See .github/PULL_REQUEST_TEMPLATE.md for the checklist.
Please ensure Secrets.xcconfig and GoogleService-Info.plist are never included in a PR.


Changelog

See CHANGELOG.md for a full version history.


Support

If SmartTube is useful to you and you'd like to support its development, there's a Ko-fi.


License

GPL-3.0

About

Native Swift/SwiftUI YouTube client for iPhone, iPad, Apple TV & Mac — ad-free, SponsorBlock, DeArrow, Google sign-in, up to 8K. Open source.

Topics

Resources

License

Stars

Watchers

Forks

Contributors

Languages