A native Android companion app for your self-hosted Stash library. Browse, search, queue, swipe through Shorts, and watch your scenes from a phone or tablet with a dark, thumbnail-first Jetpack Compose UI and gesture-friendly Media3 playback.
Stash Android Player is a mobile-first Android client for Stash.
It connects directly to your own Stash server and is designed for browsing, organizing, and watching your library on a phone or tablet without a hosted backend or third-party sync service.
Native Android app built with Kotlin and Jetpack Compose
Direct connection to your self-hosted Stash server
API key, username/password login, and session-based authentication support
Home screen for continuing playback, opening local lists, and jumping back into watching
Explore screen that combines browsing and searching in one mobile-first UI
Filter browsing by tags, date, duration, rating, watched state, resolution/media quality, file type, random/shuffle, and saved filters
Grid/list display options and multi-select actions for common library workflows
Shorts feed for vertically swiping through shorter scenes with local feedback
Media3/ExoPlayer-based scene playback
Gesture-friendly player controls:
tap to show/hide controls
double-tap seek
horizontal scrub
side brightness/volume gestures
long-press speed hold
fullscreen lock mode
stream selection
subtitle support
picture-in-picture support
previous/next and playlist navigation
orientation and aspect-ratio controls
Watch page with video, metadata, tags, rating, actions, similar videos, and recommendations
Local Favorites, Watch Later, playback queue, playback history, and Shorts feedback stored on-device
Fixed device authentication app lock activation when the app uses an in-app language context, so the biometric/device-credential prompt can still open from Settings.
1.5.1
Fixed the device authentication app lock option so devices with weak biometric enrollment or device credentials can enable and use app lock.
1.5.0
Added the Shorts tab with vertical swipe playback, prewarm, full-surface play/pause gestures, seek controls, long-press speed hold, delete actions, and configurable maximum clip duration.
Added Shorts recommendation learning from likes, not-interested feedback, watch outcomes, and liked-anchor Hybrid/GraphQL similarity signals, plus a Settings reset action.
Merged Browse and Search into one Explore tab and reserved the center tab for Shorts.
Added a Home recommended videos row powered by Shorts likes, Favorites, Hybrid/GraphQL similarity, and a broader whole-library candidate pool.
Added in-app update checks with changelist viewing and APK download/install handoff from Support.
Preserved password-based Stash sessions across app restarts by storing the login material needed to refresh the session cookie.
Refreshed the forum post, README copy, and screenshots for the current app shape.
Added a native Gallery tab with GraphQL-backed gallery browsing, detail photo grids, full-screen photo viewing, zoom/pan gestures, preloading, and Web-parity toolbar controls.
Added a global Image browsing mode with sort/random/page-size/display controls, ImageFilterType GraphQL filtering, saved/recent image filters, and Gallery/Image mode persistence.
Expanded photo-viewer controls with slideshow, display mode, rating and O-count actions, linked gallery access, appreciation mode, compact bottom chrome, and detail rows including the image path.
Improved Gallery/Image metadata parsing and display fallbacks, including privacy-safe basename titles, decoded filenames, VisualFile field selections, count fields, and retained toolbar/filter preferences.
Stash Android Player 1.7.3 is now available: GitHub Release
English
Highlights since the previous forum update:
Added Simplified Chinese and Traditional Chinese app language options, plus localized README files.
Added Settings access to Stashโs โcreate galleries from folders containing imagesโ server option, with a guarded library scan action.
Refined Gallery/Image browsing around folder-backed galleries: blank gallery titles now fall back to the server folder name, the old custom image-folder grouping mode was removed, and Images display modes are now simpler Grid/Wall options.
Fixed a Home tab crash caused by localized quick-action label collisions.
Fixed playlist playback when a sceneโs saved resume position is already at the watched threshold, so it restarts from the beginning instead of immediately auto-advancing.
Fixed the public release workflow so localized README files are included in the sanitized public source snapshot.
Stash Android Player 1.8.0 is now available: GitHub Release
Highlights since the previous forum update (1.7.3 โ 1.8.0):
English
Gallery continuity: preserved Gallery detail photo-grid loaded pages and scroll position when returning from the photo viewer, with a reset when switching to another gallery. A follow-up 1.7.5 release aligned the public version metadata and APK assets.
Photo viewer polish: appreciation mode now hides the top bar for cleaner image viewing, while the toggle remains available from the compact tools rail. The page-change HUD was also moved to the bottom edge so it covers less of the image.
Playback performance and controls: active-video preloading now uses a larger ExoPlayer forward buffer and an app-cache-backed media data source for better repeat/nearby seeks. Playback settings now include configurable long-press fast-forward speed and an option to swap the left/right brightness and volume side-drag gestures.
Shorts recommendations: client-side recommendation refresh now downranks recent local interactions and safely reranks only the tail when liked-scene similarity scores arrive, without changing the Settings-owned max-duration filter.
Browse/Explore filters: added a Scene O-Count comparator filter across Browse/Explore, saved/recent filters, active chips, and Stash GraphQL scene queries. Also fixed the O-Count clear action label.
Docs/release polish: refreshed the public README around the end-user install/viewing experience, added a polished screenshot hero, and updated localized release references.