github spotiflacapp/SpotiFLAC-Mobile v3.5.2
SpotiFLAC v3.5.2

latest releases: v4.7.1, v4.7.0, v4.6.0...
5 months ago

What's New

Performance

  • Home tab search result sections are now virtualized with SliverList (lazy item build) instead of eager Column rendering, reducing frame drops on large result sets
  • Home tab now narrows Riverpod subscriptions using field-level select(...) for search/provider state to reduce unnecessary full-tab rebuilds
  • Search provider dropdown now watches only required fields (searchProvider, metadataSource, extensions) instead of full provider states
  • Track row rendering in Home search now receives precomputed thumbnail sizing/local-library flags from parent to avoid repeated per-item provider watches
  • Removed thumbnail debugPrint calls inside track row build() to reduce runtime overhead during scrolling/rebuilds
  • Queue tab root subscription no longer watches full queue item list; it now watches only queue presence (items.isNotEmpty) to avoid full Library UI rebuilds on every progress tick
  • Queue download header/list rendering has been isolated into dedicated Consumer slivers; header now watches only queue length (items.length) while item list watches queue item updates
  • Queue filter/sort computations are now centralized and memoized per filter mode within a build pass (all/albums/singles), reducing repeated list transforms for chip counts and page content
  • Selection bottom bar content is now computed only when selection mode is active, removing hidden-state heavy list preparation
  • File existence checks in queue/library rows now use per-path ValueNotifier + ValueListenableBuilder updates instead of triggering global setState, reducing unnecessary whole-tab repaints

Changed

  • Replaced date range filter with sorting options in Library tab: Latest, Oldest, A-Z, Z-A
  • Sorting applies to all views: unified items, downloaded albums, and local library albums
  • Local library items now use file modification time (fileModTime) for sorting instead of scan time, providing more accurate chronological ordering
  • Removed redundant manual "Export Failed Downloads" button from Library UI (auto-export setting in Settings is sufficient)
  • Library filters (quality, format, source) now correctly apply to album tabs and update tab chip counts (All/Albums/Singles)

Fixed

  • Fixed local library scan crashing on Samsung One UI devices due to MediaStore URI mismatch in SAF tree traversal
  • Added MediaStore URI fallback in SAF file reader: when SAF permission is denied for Samsung-returned MediaStore URIs, automatically retries using READ_MEDIA_AUDIO permission
  • Hardened SAF scan with per-directory and per-file error handling: scan now skips problematic files instead of aborting entirely
  • Added visited directory tracking to prevent infinite loops from circular SAF references
  • Fixed metadata enrichment cascading failure after one queued download fails: metadata APIs (Deezer, SongLink, Spotify) now use isolated metadataTransport so failed download connections cannot poison metadata requests
  • Added immediate connection cleanup on every download failure path (error response and exception), not only periodic cleanup every N downloads
  • Fixed incremental SAF scan edge case where lastModified() failure could misclassify existing files as removed (removedUris)
  • Fixed tracks marked "In Library" still showing active download button - download button now shows as completed (checkmark) for local library tracks across all screens (album, playlist, artist, home/search)
  • Fixed FFmpeg M4A-to-FLAC conversion erroneously triggered on already-existing FLAC files when re-downloading duplicates via Tidal
  • Fixed SAF download creating empty artist/album folders when re-downloading duplicate tracks; directory is now only created after confirming the file does not already exist

Downloads

Android

  • arm64: SpotiFLAC-v3.5.2-arm64.apk (recommended for modern devices)
  • arm32: SpotiFLAC-v3.5.2-arm32.apk (older devices)

iOS

  • iOS: SpotiFLAC-v3.5.2-ios-unsigned.ipa (sideload required)

Installation

Android: Enable "Install from unknown sources" and install the APK
iOS: Use AltStore, Sideloadly, or similar tools to sideload the IPA

arm64 arm32 iOS

Don't miss a new SpotiFLAC-Mobile release

NewReleases is sending notifications on new releases.