Feature description
I am requesting the implementation of Zstandard (zstd) support for all network communications between Symfonium and media providers. Specifically, Symfonium should include zstd in its Accept-Encoding HTTP header and be able to decode the compressed responses.
Problem solved
Currently, Symfonium primarily relies on gzip or deflate for data compression. When dealing with very large music libraries (over tens of thousands of tracks) and high-resolution metadata (24-bit ALAC tags, high-res lyrics, and extensive bio data), the JSON payloads from the server can become quite heavy.
On high-latency or mobile networks, gzip does not provide the best compression ratio or decompression speed. This leads to slightly slower sync times and higher data consumption when refreshing large libraries or fetching detailed track metadata from a remote server.
Brought benefits
-
Faster Synchronization: zstd offers significantly better compression ratios for JSON data, meaning faster library syncs for all users with large collections.
-
Reduced CPU Overhead: zstd decompression is generally faster than gzip, which can lead to better battery efficiency and a snappier UI during heavy data fetching.
-
Optimized for Modern Stacks: As more self-hosted servers move to HTTP/3 (QUIC) and modern kernels (like xanmod), supporting zstd allows Symfonium to take full advantage of the server’s maximum throughput and efficiency.
Other application solutions
Modern web browsers like Safari (WebKit) and Chrome have already implemented zstd support, showing significant performance gains in data-heavy web applications. While some music clients are still stuck on legacy protocols, bringing zstd to Symfonium would set a new technical standard for Android media players.
Device type
All
Additional description and context
My server environment is optimized at the kernel level to handle zstd at the edge. In my testing, I have verified via Nginx logs that browsers successfully negotiate zstd over HTTP/3, resulting in much smaller payloads compared to the gzip fallback used by Symfonium.
Implementing this in Symfonium (likely via OkHttp interceptors and a native decoder library like zstd-jni) would bridge this performance gap.
I searched existing feature requests
on