FrostWire 7 — The Next Generation of Desktop BitTorrent

18 years ago FrostWire began as a community-driven fork with a mission: keep decentralized file-sharing alive, open, and powerful. In 2025 we’re still here — evolving faster than ever.

Today, we’re proud to introduce FrostWire 7

Download FrostWire 7 today.



A massive leap forward. A brand-new era for the app.
Not a facelift — an entirely new heart.


🚀 A New BitTorrent Engine for a New Decade

Under the hood, FrostWire 7 is powered by jlibtorrent 2.0:
two years of engineering, hundreds of optimizations, and native support for BitTorrent v2.

What that means to you:

  • Faster swarm performance
  • Better integrity checking
  • More resilient downloading
  • Hybrid v1+v2 torrents that “just work”
  • Optimized disk I/O for modern hardware

This is the biggest peer-to-peer core upgrade in FrostWire’s history.


✂️ No More Ads. No Bundled Garbage. Just Open Source.

We’re done with the distractions.

  • 0% third-party ads
  • 0% bundled installer offers
  • 100% free & open-source

FrostWire is now fully community-supported — donations and optional VPN referrals keep the lights on.
The app belongs to users again.

If you believe in a world where software is free because it is free — we’d love your help.


🔍 The Search Experience Rebuilt From Scratch

We demolished our legacy search architecture and rebuilt the engine to be leaner and faster:

  • Up to 50% less memory allocation
  • New performers like Knaben and TorrentCSV
  • Far quicker result rendering
  • Smarter I/O scheduling so search doesn’t freeze the UI

Search feels snappy again — even on older systems.


⚡ FrostWire 7 Starts Faster and Stays Smooth

A huge part of this cycle focused on eliminating UI freezes and making startup feel instant. We pushed expensive tasks off the main UI thread — all 19+ offenders fixed.

Benefits you’ll feel right away:

  • Launch in seconds, not ages
  • Smooth scrolling through huge torrent lists
  • Zero-stall layout rendering
  • More responsive search result interaction

We want FrostWire to be a fast desktop app, not “a Java app that runs like one.”


🧩 Smarter Packaging: Simpler Installs, Broader Linux Support

This release also marks a major cleanup in how FrostWire ships across platforms.

Linux: One Package to Run Them All

We’ve moved away from distro-specific packaging like .deb and .rpm. They constantly forced us into whack-a-mole compatibility battles across dozens of flavors.

Instead, FrostWire 7 now ships as:

  • Linux x86_64 .tar.gz
  • Linux ARM64 .tar.gz (yes, Raspberry Pi users and macOS with Apple Silicon on UTM containers — finally!)

Just unpack and run:

./frostwire

Or choose a full installation so your desktop environment recognizes FrostWire automatically:

./install.sh

You can remove it just as easily:

./uninstall.sh

Tested across GNOME, KDE, XFCE, Cinnamon — everywhere Linux thrives.

One archive. All Linux. Zero drama.

macOS: The .pkg Era

We’ve retired the old .dmg drag-and-drop days.
FrostWire for macOS now uses a modern .pkg installer:

  • Double-click
  • Follow the dialog
  • Done

No more wondering where the app actually landed.


🎧 Less is More — Media Player Removed

FrostWire 7 no longer ships with its own audio/video player.

Why?

  • Less binary bloat
  • Less CPU/memory footprint
  • Less maintenance overhead

Your OS already has a media player — and usually a better one.
So now playback just hands off to the default app.

More focus, fewer bundled components.


🛠️ And Thousands of Under-the-Radar Improvements

Cleaner codebase.
Modern libraries.
Better diagnostics.
Safer crypto.
New hashing support.
Countless bug fixes from years of backlog.

We even finally removed legacy Azureus code that had been haunting the repo since the early 2000s.

FrostWire 7 is the most stable, modern, and maintainable version we have ever shipped.


🌎 Built by and for the Open-Source Peer-to-Peer Movement

FrostWire 7 is more than just revision numbers and changelog entries — it’s a statement:

Decentralized file sharing deserves fast, transparent, user-owned tools.
No corporate lock-in. No telemetry farms. No crypto-mining in the background.
Just freedom to share.

If that vision resonates with you…

Every bit of support helps keep the project alive and independent.


🔥 Welcome to the Future of FrostWire

Download FrostWire 7 today.
Rejoin the swarm.
Let’s keep building an internet that cannot be censored.

👉 The Future is Peer-to-Peer.

frostwire (7.0.0) stable; urgency=high

  • New:Powered by Jlibtorrent 2.0.12.5 with bittorrent 2.0 support and hundreds of optimizations
  • New:Dynamic SoundCloud client ID and app version fetching from remote server for uninterrupted service
  • New:TorrentCSV search performer
  • New:Knaben Database Search Performer
  • New:Partial selection file dialog now allows shift-click to select ranges of files in torrents
  • New:settings panel to pick location for .torrent files
  • New:FlatLaf light theme
  • New:Header bar rearranged, search bar goes to the center, nav buttons on the left, FW Logo first
  • New:Torrent Transfer > Advanced > Check local data feature. If a file belonging to a torrent is now on disk it can be force checked
  • New:Audio and video playback now uses the operating system’s default media player instead of custom player infrastructure
  • New:Strict EDT Mode to catch long running tasks stalling event dispatch thread
  • EDT freeze:Comprehensive startup performance overhaul – defer heavy class loading and I/O to prevent EDT blocking during initialization (19 EDT violations fixed)
  • EDT freeze:ResourceManager uses deferred image loading instead of synchronous MediaTracker to avoid blocking on image I/O
  • EDT freeze:LibraryCoverArtPanel defers component listener initialization with SwingUtilities.invokeLater()
  • EDT freeze:SearchMediator uses lazy singleton pattern with deferred SearchResultDisplayer creation
  • EDT freeze:MPlayerInstance.runCommand() moved to background thread to avoid Process.waitFor() blocking EDT
  • EDT freeze:SearchResultDisplayer creation deferred with placeholder component to avoid class loading file I/O during tab initialization
  • EDT freeze:SplashWindow preloads OS icons during initialization to avoid file I/O during paint operations
  • EDT freeze:StatusLine defers bandwidth label icon loading to background EDT cycle using SwingUtilities.invokeLater()
  • EDT freeze:ApplicationHeader defers MediaPlayerComponent creation with placeholder panel to prevent class loading during startup
  • EDT freeze:MainFrame defers expensive minimum size calculations to background thread – prevents 2+ second EDT blocking from cascading layout calculations
  • EDT freeze:AbstractTab implements lazy icon loading to defer tab icon loading via SwingUtilities.invokeLater() on first getIcon() call
  • EDT freeze:SearchResultActionsRenderer defers 5 action button icons (play, download, details, speaker) via lazy static initialization with ensureIconsLoaded()
  • EDT freeze:AbstractActionsRenderer defers 3 action button icons (play, download, share) via lazy static initialization with ensureIconsLoaded()
  • EDT freeze:SourceRenderer defers 7 source icons (soundcloud, archive.org, tpb, zooqle, magnetdl, default, 1337x) via lazy static initialization with ensureIconsLoaded()
  • EDT freeze:TransferActionsRenderer defers 2 action button icons (play, share) via lazy static initialization with ensureIconsLoaded()
  • EDT freeze:TransferSeedingRenderer defers 2 seeding icons (seed, loading) via lazy static initialization with ensureIconsLoaded()
  • EDT freeze:TransferDetailFilesActionsRenderer defers 2 file action icons (play, share) via lazy static initialization with ensureIconsLoaded()
  • EDT freeze:PaymentOptionsRenderer defers 4 payment method icons (bitcoin_enabled, bitcoin_disabled, paypal_enabled, paypal_disabled) via lazy static initialization
  • EDT freeze:LogoPanel defers logo_header icon loading via SwingUtilities.invokeLater() with placeholder label
  • EDT freeze:MediaButton defers button icon loading (up and down icons) via SwingUtilities.invokeLater() in loadIcons() method
  • EDT freeze:LimeJFrame defers window icon loading via SwingUtilities.invokeLater() in loadWindowIcon() method
  • Performance:These EDT fixes significantly improve startup time and responsiveness, especially on resource-constrained systems and older hardware
  • Performance:Search architecture optimizations – 25-50% reduction in memory allocations
  • Performance:SizeParser utility consolidates duplicate implementations, 200+ lines of code eliminated
  • Performance:SearchMatcher memory optimization reduces garbage collection pressure by 25%
  • Performance:YT pattern static initialization and string operation optimization
  • Maintenance:SearchTimeoutException provides better diagnostics with performer and domain context
  • Maintenance:Search package hierarchy flattened, V2 package consolidated
  • Removed:TorrentDownloads search performer (site offline permanently)
  • Removed:BTDigg search performer (protected by Cloudflare, unable to reliably parse search results)
  • Maintenance:mplayer not available in linux warning can now not be shown ever again
  • Removed:Torlock search performer (old site is down, new site is malicious)
  • Removed:LimeTorrents search performer
  • Maintenance:MacEventHandler is now compatible with JDK 23 and JDK 24
  • Maintenance:Archive.org search
  • Maintenance:GloTorrents search
  • Maintenance:Idope search
  • Maintenance:MagnetDL search
  • Crash: fixed NPE in MultilineToolTip.updateUI() when switching from Synth L&F
  • Removed:FrostWire Media Player custom built-in audio/video player (fwplayer binaries for Windows/macOS/Linux)
  • Removed:MPlayer integration code and process management for audio playback
  • Removed:Player settings panel and configuration options
  • Removed:Playback state tracking and speaker icon indicators in UI components (TransferActionsRenderer, LibraryFilesTableDataLine, SearchResultActionsRenderer, etc.)
  • Removed:Speaker icon assets (speaker.png, speaker_light.png)
  • EDT freeze:moved media checks off EDT; coalesce selection; add EDT I/O guard
  • EDT freeze: Fix in TransferDetailFiles by moving heavy I/O to background thread, would stall app when opening large torrents on startup
  • Cleanup:removed all remnants of azureus source code
  • Optimization:PerformersHelper.sanitize() 8.8x speed gains in title normalization by not using a regex and instead simple string replacements
  • Fixed:logic bug in PerformersHelper.countMatchedTokens()
  • Cleanup:apple libdispatch removal
  • Cleanup:deprecated iTunes integration removed after cleanups. Users can manage their own playlists on Apple Music.
  • New: libtorrent::set_piece_hashes_posix_disk_io to avoid SIGSEGV/SIGBUS leaks to macos when creating torrents
  • Crash:don’t crash if a null set_piece_hashes_listener is passed to set_piece_hashes_ex
  • Crash:StatusLine seedingStatusButton.getText()
  • Crash:ConcurrentModificationException in Ssl$FWHostnameVerifier
  • Cleanup:Remove unused sun.awt.X11 classes (linux)
  • Maintenance:fix javadoc errors, javadoc cleanup
  • Maintenance:all license headers are consistent with GPL 3.0
  • Maintenance:simplified donations buttons in status bar to a single ‘Donate’ button
  • Maintenance:added don’t show me again for linux warning when mplayer isn’t found
  • Maintenance:fwplayer_osx.arm64 rebuilt with OpenSSL 3.5.3 support
  • Speed-up:reuse OkHttpClient instances to unlock connection pooling and reduce GC pressure
  • Speed-up:Cache torrent-search date parsers to eliminate per-result SimpleDateFormat allocations
  • Speed-up:Use buffered I/O for large transfers in OkHttpClientWrapper.save and ZipUtils.unzip. Up to 96% CPU savings in sys write calls, 30-50% reduction in CPU during I/O operations, search results should come out a lot faster
  • Speed-up:Optimize Levenshtein distance allocation footprint in PerformersHelper fuzzy matching
  • Speed-up:Optimize hot paths for string sanitizers – eliminate regex compilation overhead in search and scrapes (UrlUtils and StringUtils)
  • Speed-up:Optimize hot paths for Logger, ThreadPool, and collection sizing
  • Speed-up:Refactor SearchManager tasks to Runnable and remove Thread.yield() from hot path
  • Fixed:thread leak and data race in UrlUtils.getFastestMirrorDomain
  • EDT freeze:Comprehensive fix for EDT violations in transfers UI with multiple optimization layers
  • EDT freeze:Move BTDownloadModel.refresh() to background thread to prevent EDT blocking during model updates
  • EDT freeze:Add debouncing to BTDownloadDataLine.update() to prevent rapid successive JNI calls
  • EDT freeze:Throttle TransferActionsRenderer state checks to 200ms intervals during table rendering
  • EDT freeze:Move clearable downloads check to background thread in BTDownloadMediator.doRefresh()
  • EDT freeze:Add count caching to BTDownloadModel with background updates every 500ms
  • EDT freeze:Cache active uploads for hidden downloads in BTDownloadRowFilteredModel
  • EDT freeze:Use cached transfer state instead of expensive JNI calls in button state updates
  • jlibtorrent:libraries are now compiled with C++20 (ming/windows with C++2a which is the same)
  • jlibtorrent:g++-9 upgraded to g++-11 for linux build
  • jlibtorrent:new Sha256Hash::swig()
  • jlibtorrent:new SessionManager::find(Sha256Hash) and SessionManager::find(TorrentInfo) methods
  • jlibtorrent:built with android NDK r28c with 16K page size support
  • Android 64-bit binaries are compiled to have 16KB max-page-size
  • jlibtorrent:New com.frostwire:jlibtorrent- maven packages for easier integration with gradle/maven
  • jlibtorrent:new torrent_handle::get_resume_data() : add_torrent_params
  • jlibtorrent:new torrent_handle::get_resume_data(resume_data_flags_t flags) : add_torrent_params
  • jlibtorrent:new settings_pack.int_types i2p_inbound_length_variance
  • jlibtorrent:new settings_pack.int_types i2p_outbound_length_variance
  • jlibtorrent:Jar built with JDK 17 – JAVA_17 compatibility
  • jlibtorrentBoost 1.88.0 upgrade
  • jlibtorrent:OpenSSL 3.5.2 upgrade (from 1.1.1t)
  • jlibtorrent:Upgraded SWIG to 4.3.1
  • jlibtorrent:Gradle 9.0.0
  • dev:junit upgraded from 4.13.1 -> 4.13.2
  • lt:add option to send host header in HTTP proxy CONNECT command
  • lt:cache DNS failures for a shorter time
  • lt:file_renamed_alert is always posted, regardless of alert mask
  • lt:add feature to request resume data synchronously
  • lt:don’t leak file descriptors to child processes (O_CLOEXEC)
  • lt:optimize the utp resend
  • lt:optimize tracker announcements
  • lt:fix handling of invalid filenames
  • lt:add support for I2CP inbound.lengthVariance and outbound.lengthVariance tunnel settings
  • lt:validate add_torrent_params::save_path at run-time
  • lt:use stricter rules for what filenames are valid on Android
  • lt:fix applying IP filter to DHT traffic (HanabishiRecca)
  • lt:fix race condition when cancelling requests after becoming a seed
  • lt:fix performance bug in the file pool, evicting MRU instead of LRU (HanabishiRecca)
  • lt:fix bug where file_progress could sometimes be reported as >100%
  • jlibtorrent:BDecodeNode: hasList, hasDict, hasString, hasInt, getList, getDict, getString, getInt
  • lt:limit piece size in torrent creator
  • lt:don’t hint FADV_RANDOM on posix systems. May improve seeding performance
  • lt:allow boost connect while checking resume data if no_verify_files flag is set
  • lt:fix BEP-40 peer priority for IPv6
  • lt:fix file pre-allocation when changing file priority (HanabishiRecca)
  • jlibtorrent:SWIG interface files have been modularized for better maintainability and readability
  • jlibtorrent:Added missing alert types
  • jlibtorrent:Introduced typed_bitfield template
  • jlibtorrent:Operator renaming for Java compatibility
  • jlibtorrent:Included boost_system_error_code.i
  • jlibtorrent:Added prepare-macos.sh script
  • jlibtorrent:Updated run-swig.sh script
  • jlibtorrent:Set TORRENT_ABI_VERSION=4
  • jlibtorrent:Libtorrent updated to RC_2_0 (rev:2ab8fedabb7716947edc77958da6d0b5e1040df9)
  • jlibtorrent:Android NDK r26d (LTS) upgrade (from r25c)
  • jlibtorrent:Added --swig-only and --build-only options to swig/build scripts
  • jlibtorrent:Added prepare-macos.sh script for macOS build setup
  • jlibtorrent:Updated run-swig.sh script for improved SWIG processing
  • jlibtorrent:Enhanced exception handling in SWIG interfaces
  • jlibtorrent:Fixed issues in file_storage.hpp and ip_filter.hpp
  • jlibtorrent:Adjusted build flags and macros for Boost and libtorrent compatibility
  • jlibtorrent:Enabled SWIG directors for specific classes
  • lt:fix uTP issue where closing the connection could corrupt the payload
  • lt:apply DSCP/TOS to sockets before initiating the TCP connection
  • lt:assume copy_file_range() exists on linux (unless old glibc)
  • lt:fix issue where set_piece_deadline() did not correctly post read_piece_alert
  • lt:fix integer overflow in piece picker
  • lt:torrent_status::num_pieces counts pieces passed hash check, as documented
  • lt:check settings_pack::max_out_request_queue before performance alert
  • lt:allow on_unknown_torrent method in the absence of active torrents (new plugin feature added)
  • lt:add feature to async_move_storage() to not move files
  • lt:fix reject resume data if it contains mismatching info hashes
  • lt:fix clear the candidate_cache when clear peer_list
  • lt:fix missing python converter for dht::announce_flags_t
  • lt:fix issue with web seed connections when they close and re-open
  • lt:fallocate() not supported is not a fatal error
  • lt:fix proxying of IPv6 connections via IPv4 proxy
  • lt:treat CGNAT address range as local IPs
  • lt:add stricter checking of piece layers when loading torrents
  • lt:add stricter checking of v1 and v2 hashes being consistent
  • lt:cache failed DNS lookups as well as successful ones
  • lt:add an i2p torrent state to control interactions with clear swarms
  • lt:fix i2p SAM protocol parsing of quoted messages
  • lt:expose i2p peer destination in peer_info
  • lt:fix i2p tracker announces
  • lt:fix issue with read_piece() stopping torrent on pieces not yet downloaded
  • lt:improve handling of allow_i2p_mixed setting to work for magnet links
  • lt:fix web seed request for renamed single-file torrents
  • lt:fix issue where web seeds could disappear from resume data
  • lt:extend save_resume with additional conditional flags
  • lt:fix issue with retrying trackers in tiers > 0
  • lt:fix last_upload and last_download resume data fields to use posix time
  • lt:improve error messages for no_connect_privileged_ports, by untangle it from the port filter
  • lt:fix I2P issue introduced in 2.0.0
  • lt:add async tracker status query, post_trackers()
  • lt:add async torrent status query, post_status()
  • lt:support loading version 2 of resume data format
  • lt:fix issue with odd piece sizes
  • lt:add async piece availability query, post_piece_availability()
  • lt:add async download queue query, post_download_queue()
  • lt:add async file_progress query, post_file_progress()
  • lt:add async peer_info query, post_peer_info()
  • lt:fix uTP streams timing out instead of closing cleanly
  • lt:add write_torrent_file_buf() overload for generating .torrent files
  • lt:add create_torrent::generate_buf() function to generate into a buffer
  • lt:fix copy_file when the file ends with a sparse region
  • lt:uTP performance, fix packet loss when sending is stalled
  • lt:fix trackers being stuck after session pause/resume
  • lt:fix bug in hash_picker with empty files
  • lt:uTP performance, prevent premature timeouts/resends
  • lt:add option to not memory map files below a certain size
  • lt:settings_pack now returns default values when queried for missing settings
  • lt:fix copy_file fall-back when SEEK_HOL/SEEK_DATA is not supported
  • lt:improve error reporting from file copy and move
  • lt:tweak pad file placement to match reference implementation (tail-padding)
  • lt:uTP performance, more lenient nagle’s algorithm to always allow one outstanding undersized packet
  • lt:uTP performance, piggy-back held back undersized packet with ACKs
  • lt:uTP performance, don’t send redundant deferred ACKs
  • lt:support incoming SOCKS5 packets with hostnames as source address, for UDP trackers
  • lt:ignore duplicate network interface change notifications on linux
  • lt:fix total_want/want accounting when forcing a recheck
  • lt:fix merging metadata with magnet links added on top of existing torrents
  • lt:add torrent_flag to default all file priorities to dont_download
  • lt:fix &so= feature in magnet links
  • lt:improve compatibility of SOCKS5 UDP ASSOCIATE
  • lt:fix madvise range for flushing cache in mmap_storage
  • lt:open files with no_cache set in O_SYNC mode~
  • lt:fix issue in use of copy_file_range() on linux
  • lt:avoid open-file race in the file_view_pool
  • lt:fix issue where stop-when-ready would not close files
  • lt:fix issue with duplicate hybrid torrent via separate v1 and v2 magnet links
  • lt:added new function to load torrent files, load_torrent_*()
  • lt:support sync_file_range() on linux
  • lt:fix issue in write_torrent_file() when file size is exactly piece size
  • lt:fix file_num_blocks() and file_num_pieces() for empty files
  • lt:add new overload to make_magnet_uri()
  • lt:add missing protocol version to tracker_reply_alert and tracker_error_alert
  • lt:fix privilege issue with SetFileValidData()
  • lt:add asynchronous overload of torrent_handle::add_piece()
  • lt:default to a single hashing thread, for full checks
  • lt:Fix bug when checking files and the first piece is invalid
  • lt:fix issue creating a v2 torrent from torrent_info containing an empty file
  • lt:make recheck files also update which files use partfile
  • lt:add write_through disk_io_write_mode, which flushes pieces to disk immediately
  • lt:improve copy file function to preserve sparse regions (when supported)
  • lt:add function to truncate over-sized files part of a torrent
  • lt:fix directory creation on windows shared folders
  • lt:add flag to make add_files() not record file attributes
  • lt:deprecate (unused) allow_partial_disk_writes settings
  • lt:fix disk-full error reporting in mmap_disk_io
  • lt:fixed similar-torrents feature for v2 torrents
  • lt:fix potential unbounded recursion in add_completed_job, in disk I/O
  • lt:deprecated (unused) volatile_read_cache setting
  • lt:fix part files being marked as hidden on window
  • lt:on windows, explicitly flush memory mapped files periodically
  • lt:fix build with WolfSSL
  • lt:fix issue where incoming uTP connections were not accepted over SOCKS5
  • lt:fix several issues in handling of checking files of v2 torrents, esp. from magnet links
  • lt:make the token limit when parsing metadata from magnet files configurable
  • lt:fix issue with stalled pieces on disk full errors
  • lt:fix missing python binding for file_progress_flags
  • lt:fix torrent_file_with_hashes() to fail when we don’t have the piece layers
  • lt:restore path character encoding conversion for non UTF-8 locales on linux
  • lt:fix use-after-free bug in make_magnet_uri
  • lt:add write_torrent_file() to produce a .torrent file from add_torrent_params
  • lt:allow loading v2 .torrent files without piece layer
  • lt:fix issue with adding v2 torrents with invalid file root hash
  • lt:fix piece picker bug causing double-picks with prefer-contiguous enabled
  • lt:expose session_params in python bindings
  • lt:fix (deprecated) use of add_torrent_params::info_hash
  • lt:fix issue creating and loading v2 torrents with empty files. Improves conformance to BEP52 reference implementation
  • lt:add new torrent_file_with_hashes() which includes piece layers for creating .torrent files
  • lt:add file_prio_alert, posted when file priorities are updated
  • lt:fix issue where set_piece_hashes() would not propagate file errors
  • lt:add missing python binding for event_t
  • lt:add work-around for systems without fseeko() (such as Android)
  • lt:add convenience header libtorrent/libtorrent.hpp
  • lt:increase default max_allowed_in_request_queue
  • lt:fix loading non-ascii filenames on windows with torrent_info constructor (2.0 regression)
  • lt:add std::hash<> specialization for info_hash_t
  • lt:fix integer overflow in hash_picker and properly restrict max file sizes in torrents
  • lt:strengthen SSRF mitigation for web seeds
  • lt:add v1() and v2() functions to torrent_info
  • lt:fix piece_layers() to work for single-piece files
  • lt:fix python binding regression in session constructor flags
  • lt:fix unaligned piece requests in mmap_storage
  • lt:improve client_data_t ergonomics
  • lt:fix issue with concurrent access to part files
  • lt:fix attribute in single-file v2 torrent creation
  • lt:fix padding for empty files in v2 torrent creation
  • lt:add function to ask a file_storage whether it’s v2 or not
  • lt:fix mtime field when creating single-file v2 torrents
  • lt:fix performance regression in checking files
  • lt:disable use of SetFileValidData() by default (windows). A new setting allows enabling it
  • lt:dropped dependency on iconv
  • lt:deprecate set_file_hash() in torrent creator, as it’s superceded by v2 torrents
  • lt:deprecate mutable access to info_section in torrent_info
  • lt:removed deprecated lazy_entry/lazy_bdecode
  • lt:stats_alert deprecated
  • lt:remove bittyrant choking algorithm
  • lt:update userdata in add_torrent_params to be type-safe and add to torrent_handle
  • lt:add ip_filter to session_params
  • lt:added support for wolfSSL for SHA-1 hash and HTTPS (no Torrents over SSL)
  • lt:requires OpenSSL minimum version 1.0.0 with SNI support
  • lt:deprecated save_state() and load_state() on session in favour of new
  • lt:write_session_params() and read_session_params()
  • lt:added support for BitTorrent v2 (see docs/upgrade_to_2.0.html)
  • lt:create_torrent() pad_file_limit parameter removed
  • lt:create_torrent() merkle- and optimize-alignment flags removed
  • lt:merkle_tree removed from add_torrent_params
  • lt:announce_entry expose information per v1 and v2 info-hash announces
  • lt:deprecated sha1_hash info_hash members on torrent_removed_alert,
  • lt:torrent_deleted_alert, torrent_delete_failed_alert and add_torrent_params
  • lt:undeprecate error_file_metadata for torrent errors related to its metadata
  • lt:remove support for adding a torrent under a UUID (used for previous RSS support)
  • lt:remove deprecated feature to add torrents by file:// URL
  • lt:remove deprecated feature to download .torrent file from URL
  • lt:requires boost >= 1.66 to build
  • lt:update networking API to networking TS compatible boost.asio
  • lt:overhauled disk I/O subsystem to use memory mapped files (where available)
  • lt:libtorrent now requires C++14 to build
  • lt:added support for GnuTLS for HTTPS and torrents over SSL
  • lt:fix issue where stop-when-ready would not close files
  • lt:uTP performance, fix packet loss when sending is stalled
  • lt:uTP performance, prevent premature timeouts/resends
  • lt:uTP performance, more lenient nagle’s algorithm to always allow one outstanding undersized packet
  • lt:uTP performance, piggy-back held back undersized packet with ACKs
  • lt:uTP performance, don’t send redundant deferred ACKs
  • lt:fix wanted_done/done accounting when force-rechecking
  • lt:expose userdata via torrent_handle (back-port from 2.0)
  • lt:fix renaming of filenames that are too long for the filesystem
  • lt:made UPnP and LSD code avoid using select_reactor (to work around an issue on windows in boost.asio < 1.80)

FrostWire for Android 3.0 is here. Next generation bittorrent 2.0 and privacy with no more third party ads

We’re incredibly excited to announce the biggest overhaul of FrostWire for Android in years, representing two years of dedicated development. This update delivers unprecedented speed, stability, and a renewed commitment to your privacy.

DOWNLOAD frostwire-android-release-3.0.12-b766-plus.apk NOW


🔒 Core Principle Change: Zero Ads and Tracking

The most significant change is our commitment to a truly private experience:

  • 🚫 Complete Ad Removal: We have permanently eliminated all third-party ads and advertising tracking of any kind.
  • 🧘 Distraction-Free Search: Search is now optimized for speed and focus, with the distraction-free mode enabled by default.

⚡ Performance & Stability: Upgrading the Core Engine

We’ve integrated the new jlibtorrent 2.0.12.7, bringing hundreds of bug fixes and next-generation features:

New Features

  • BitTorrent v2 Protocol Support: Full support for the modern v2 and hybrid v1/v2 protocols.
  • New Search Sources: Added Knaben and TorrentCSV search performers for more results.
  • Flexible Port Selection: New setting: Settings > Torrent Settings > Incoming Connection Port Range selection.
  • Automatic Seeding: Finished HTTP transfers are now seeded automatically if seeding is enabled (matching desktop functionality).

Major Performance Optimizations

  • Architectural Overhaul: Achieved a 25-50% reduction in memory allocations and significantly reduced garbage collection pressure.
  • Blazing Fast Search: Search sorting has been optimized from $O(n^2 \log n)$ to $O(n \log n)$.
  • 8.8x Speed Gains: Title normalization and cleaning is now dramatically faster by eliminating heavy regular expressions.
  • Efficient I/O: CPU usage during disk I/O operations is reduced by 30-50% (up to 96% in system write calls) by using buffered I/O.

Critical Crash & Freeze Fixes

  • Eliminated ANR Crashes: Fixed numerous ANR (Application Not Responding) crashes in the Transfers list, menu preparation, and playback services by moving blocking tasks to background threads.
  • Network API Migration: Fixed critical issues with VPN Guard and Wi-Fi-Only protection by migrating from deprecated network APIs to the modern NetworkCallback API.
    • VPN Guard: Now correctly stops torrents when a VPN is required but not connected.
    • Wi-Fi-Only: Correctly pauses torrent downloads on mobile data.
  • Protection Visuals: Added visual status indicators in the transfers screen to show when protections pause downloads.

🔧 Maintenance & Library Upgrades

We’ve updated the entire internal technology stack for security and modern compatibility:

  • Image Loading: Replaced the older Picasso library with the modern Coil image loading library.
  • Library Updates: Updated Kotlin, Gradle, OkHttp, and many core AndroidX libraries.
  • Removal of Dead Performers: Removed the TorrentDownloads, BTDigg, Torlock, and LimeTorrents search performers due to being permanently offline or unreliable.
  • jlibtorrent Updates: Upgraded to jlibtorrent 2.0.x with C++20 compilation, OpenSSL 3.5.2, and Boost 1.88.0.

This update ensures FrostWire is faster, more stable, more private, and ready for years to come!

FULL CHANGELOG

FrostWire 3.0.12 build 766 DEC/02/2025

  • new:Powered by jlibtorrent 2.0.12.7 with bittorrent v2 protocol support with hundreds of bug fixes and performance improvements
  • new:No more third party ads or advertising tracking of any kind. Only frostwire support requests, vpn suggestions and promotional free downloads.
  • new:Knaben search performer, a new torrent search source
  • new:TorrentCSV search performer, a new torrent search source
  • new:Settings > Torrent Settings > Incoming Connection Port Range selection
  • new:Seed finished HTTP transfers if seeding is enabled (automatically creates torrent of finished download like on desktop)
  • new:Dynamic SoundCloud client ID and app version fetching from remote server for uninterrupted service
  • new:YT search results now handled via details URL detection (youtube.com)
  • new:SearchResultUtils utility class for reusable search result utilities
  • new:Telluride dialog now works with generic SearchResult instead of YTSearchResult
  • new:Distraction free search now on by default, much better experience
  • performance:Search architecture optimizations – 25-50% reduction in memory allocations
  • performance:SizeParser utility consolidates duplicate implementations, 200+ lines of code eliminated
  • performance:SearchMatcher memory optimization reduces garbage collection pressure by 25%
  • performance:YT pattern static initialization and string operation optimization
  • performance:PerformersHelper.sanitize() 8.8x speed gains in title normalization by not using a regex and instead simple string replacements
  • performance:Optimize stackBlur() with array pooling to reduce allocations
  • performance:Added periodic VPN/WiFi protection state monitoring to detect VPN disconnections immediately
  • performance:Performance optimized periodic checks run on background thread to keep UI responsive
  • performance:Added visual status indicators in transfers screen when protections pause downloads
  • performance:Optimize search sorting from O(n² log n) to O(n log n)
  • performance:reuse OkHttpClient instances to unlock connection pooling and reduce GC pressure
  • performance:Replace global Hashtable throttling with lock-free ConcurrentHashMap in TaskThrottle
  • performance:Cache torrent-search date parsers to eliminate per-result SimpleDateFormat allocations
  • performance:Use buffered I/O for large transfers in OkHttpClientWrapper.save and ZipUtils.unzip. Up to 96% CPU savings in sys write calls, 30-50% reduction in CPU during I/O operations, search results should come out a lot faster
  • performance:Optimize Levenshtein distance allocation footprint in PerformersHelper fuzzy matching
  • performance:Optimize hot paths for string sanitizers – eliminate regex compilation overhead in search and scrapes (UrlUtils and StringUtils)
  • performance:Optimize hot paths for Logger, ThreadPool, and collection sizing
  • performance:Optimize MainApplication startup by deferring heavy initialization
  • performance:Optimize RecyclerView onBindViewHolder() hot paths
  • crash:ANR crashes in Transfers list when updating transfer state due to blocking JNI calls
  • crash:ANR crash in menu preparation – menu visibility now cached on background thread
  • crash:ANR crash during transfer list adapter initialization – UI state capture moved to background thread
  • crash:ANR crash in transfer detail fragment – download/upload speeds cached on background thread
  • crash:ANR crash in onCheckDHT – DHT status updates cached on background thread
  • crash:ANR crash in BasePlaylistDialog – removed blocking CountDownLatch.await() on main thread
  • crash:ANR crash in transfer list adapter – DiffUtil calculations moved to background thread
  • crash:NullPointerException in AbstractConfirmListDialog when “select all” clicked with empty list
  • crash:logic bug in PerformersHelper.countMatchedTokens(), matched tokens were not counted correctly
  • crash:ForegroundServiceStartNotAllowedException by adding foreground check and error handling
  • crash:Android 14+ ForegroundServiceStartNotAllowedException in MusicPlaybackService
  • crash:Android JobScheduler alarm limit exceeded crashes by configuring WorkManager
  • crash:ClassCastException in SearchResultListAdapter OnLinkClickListener
  • crash:HandlerDispatcher NullPointerException crashes in Picasso image loading (removed on build 760)
  • crash:NPE in ImageFetcher.loadCurrentArtwork()
  • crash:WiFi-Only protection and VPN Guard were broken due to deprecated network API changes
  • crash:Migrated network monitoring from deprecated CONNECTIVITY_ACTION broadcasts to modern NetworkCallback API
  • crash:WiFi-Only protection now correctly pauses torrent downloads on mobile data when setting is enabled
  • crash:VPN Guard protection now correctly stops torrents when VPN is required but not connected
  • crash:NullPointerException in BasePlaylistDialog when fragment is detached from activity
  • crash:NullPointerException in MusicUtils.getIdForPlaylist() with defensive null check
  • crash:NameError in telluride.py query_video() – undefined qjs_path variable
  • crash:ConcurrentModificationException in Ssl$FWHostnameVerifier
  • crash:Picasso HandlerDispatcher NullPointerException on network state changes when app is backgrounded by keeping Picasso alive instead of shutting down (removed on build 760)
  • crash:thread leak and data race in UrlUtils.getFastestMirrorDomain
  • freeze:ensure MusicUtils.removeFromPlaylist ContentResolver activity is in the background
  • freeze:sorting through too many results could cause an ANR when cleaning up titles
  • freeze:ANR in MusicPlaybackService.setDataSource
  • freeze:ANR in MusicPlaybackService.playFDs
  • freeze:in playFDs
  • freeze:in MusicPlaybackService.setDataSource
  • maintenance:Guard favorites toast when fragment detached
  • maintenance:ProGuard now uses proguard-android-optimize.txt for better code optimization and APK size reduction
  • maintenance:Updated gradle plugin to 8.13.1
  • maintenance:Updated okhttp3 to 5.3.2
  • maintenance:Updated androidx.lifecycle:lifecycle-viewmodel-ktx to 2.10.0
  • maintenance:Updated Kotlin to 2.2.21
  • maintenance:Updated com.google.gms:google-services to 4.4.4
  • maintenance:Updated com.google.android.ump:user-messaging-platform to 4.0.0
  • maintenance:SearchTimeoutException provides better diagnostics with performer and domain context
  • maintenance:Search package hierarchy flattened, V2 package consolidated
  • maintenance:Removed commented imports and debug code
  • maintenance:Fixed typo in PREF_KEY_NETWORK_ENABLE_DHT constant (froswire -> frostwire)
  • maintenance:Avoid possible context leak on EngineBroadcastReceiver
  • maintenance:all license headers are GPL 3.0
  • maintenance:archive.org search fixed
  • maintenance:ArchiveorgSearchPerformer -> InternetArchiveSearchPerformer
  • maintenance:glotorrents search fixed
  • maintenance:idope search fixed
  • maintenance:magnetdl search fixed
  • maintenance:add BitmapFactory.inSampleSize to prevent OOM crashes
  • maintenance:Add Bitmap.recycle() to prevent native memory leaks
  • maintenance:Replace deprecated setDrawingCacheEnabled() with Canvas API
  • refactor:SearchManager tasks to Runnable and remove Thread.yield() from hot path
  • removed:TorrentDownloads search performer (site offline permanently)
  • removed:BTDigg search performer (protected by Cloudflare, unable to reliably parse search results)
  • removed:Torlock search performer (old site is down, new site is malicious)
  • removed:LimeTorrents search performer
  • replaced:Picasso for Coil image loading library
  • yt_dlp-2025.11.12
  • org.jetbrains:annotations:26.0.2-1
  • androidx.appcompat:appcompat:1.7.1
  • androidx.browser:browser:1.9.0
  • com.chaquo.python:gradle:16.1.0, now with linked 16KB mode compatible with android compile sdk 36
  • org.codehaus.groovy:groovy-all:3.0.25
  • com.squareup.picasso3:picasso:3.0.0-alpha06 and refactor of ImageLoader to use it (removed on build 760)
  • new: io.coil-kt.coil3:coil:3.0.4 and io.coil-kt.coil3:coil-network-okhttp:3.0.4
  • com.google.gms:google-services:4.4.4
  • com.google.firebase:firebase-crashlytics-gradle:3.0.6
  • androidx.core:core:1.17.0
  • androidx.exifinterface:exifinterface:1.4.1
  • androidx.lifecycle:lifecycle-viewmodel-ktx:2.10.0
  • com.google.android.material:material:1.13.0
  • com.google.code.gson:gson:2.13.2
  • com.google.re2j:re2j:1.8
  • com.squareup.okhttp3:okhttp:5.3.2
  • androidx.work:work-runtime-ktx:2.11.0
  • com.google.firebase:firebase-bom:34.6.0
  • com.google.android.ump:user-messaging-platform:4.0.0
  • org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.2.21
  • io.coil-kt.coil3:coil:3.3.0
  • io.coil-kt.coil3:coil-network-okhttp:3.3.0
  • removed: com.applovin:applovin-sdk
  • removed: com.applovin.mediation:unityads-adapter
  • Maintenance:all license headers are consistent with GPL 3.0
  • jlibtorrent:libraries are now compiled with C++20 (ming/windows with C++2a which is the same)
  • jlibtorrent:g++-9 upgraded to g++-11 for linux build
  • jlibtorrent:new Sha256Hash::swig()
  • jlibtorrent:new SessionManager::find(Sha256Hash) and SessionManager::find(TorrentInfo) methods
  • jlibtorrent:built with android NDK r28c with 16K page size support
  • Android 64-bit binaries are compiled to have 16KB max-page-size
  • jlibtorrent:New com.frostwire:jlibtorrent- maven packages for easier integration with gradle/maven
  • jlibtorrent:new torrent_handle::get_resume_data() : add_torrent_params
  • jlibtorrent:new torrent_handle::get_resume_data(resume_data_flags_t flags) : add_torrent_params
  • jlibtorrent:new settings_pack.int_types i2p_inbound_length_variance
  • jlibtorrent:new settings_pack.int_types i2p_outbound_length_variance
  • jlibtorrent:Jar built with JDK 17 – JAVA_17 compatibility
  • jlibtorrentBoost 1.88.0 upgrade
  • jlibtorrent:OpenSSL 3.5.2 upgrade (from 1.1.1t)
  • jlibtorrent:Upgraded SWIG to 4.3.1
  • jlibtorrent:Gradle 9.0.0
  • dev: junit upgraded from 4.13.1 -> 4.13.2
  • lt:add option to send host header in HTTP proxy CONNECT command
  • lt:cache DNS failures for a shorter time
  • lt:file_renamed_alert is always posted, regardless of alert mask
  • lt:add feature to request resume data synchronously
  • lt:don’t leak file descriptors to child processes (O_CLOEXEC)
  • lt:optimize the utp resend
  • lt:optimize tracker announcements
  • fix handling of invalid filenames
  • add support for I2CP inbound.lengthVariance and outbound.lengthVariance tunnel settings
  • lt: validate add_torrent_params::save_path at run-time
  • lt: use stricter rules for what filenames are valid on Android
  • lt: fix applying IP filter to DHT traffic (HanabishiRecca)
  • lt: fix race condition when cancelling requests after becoming a seed
  • lt: fix performance bug in the file pool, evicting MRU instead of LRU (HanabishiRecca)
  • lt: fix bug where file_progress could sometimes be reported as >100%
  • jlibtorrent:BDecodeNode: hasList, hasDict, hasString, hasInt, getList, getDict, getString, getInt
  • lt:limit piece size in torrent creator
  • lt:don’t hint FADV_RANDOM on posix systems. May improve seeding performance
  • lt:allow boost connect while checking resume data if no_verify_files flag is set
  • lt:fix BEP-40 peer priority for IPv6
  • lt:fix file pre-allocation when changing file priority (HanabishiRecca)
  • jlibtorrent:SWIG interface files have been modularized for better maintainability and readability
  • jlibtorrent:Added missing alert types
  • jlibtorrent:Introduced typed_bitfield template
  • jlibtorrent:Operator renaming for Java compatibility
  • jlibtorrent:Included boost_system_error_code.i
  • jlibtorrent:Added prepare-macos.sh script
  • jlibtorrent:Updated run-swig.sh script
  • jlibtorrent:Set TORRENT_ABI_VERSION=4
  • jlibtorrent:Libtorrent updated to RC_2_0 (rev:2ab8fedabb7716947edc77958da6d0b5e1040df9)
  • jlibtorrent:Android NDK r26d (LTS) upgrade (from r25c)
  • jlibtorrent:Added --swig-only and --build-only options to swig/build scripts
  • jlibtorrent:Added prepare-macos.sh script for macOS build setup
  • jlibtorrent:Updated run-swig.sh script for improved SWIG processing
  • jlibtorrent:Enhanced exception handling in SWIG interfaces
  • jlibtorrent:Fixed issues in file_storage.hpp and ip_filter.hpp
  • jlibtorrent:Adjusted build flags and macros for Boost and libtorrent compatibility
  • jlibtorrent:Enabled SWIG directors for specific classes
  • lt:fix uTP issue where closing the connection could corrupt the payload
  • lt:apply DSCP/TOS to sockets before initiating the TCP connection
  • lt:assume copy_file_range() exists on linux (unless old glibc)
  • lt:fix issue where set_piece_deadline() did not correctly post read_piece_alert
  • lt:fix integer overflow in piece picker
  • lt:torrent_status::num_pieces counts pieces passed hash check, as documented
  • lt:check settings_pack::max_out_request_queue before performance alert
  • lt:allow on_unknown_torrent method in the absence of active torrents (new plugin feature added)
  • lt:add feature to async_move_storage() to not move files
  • lt:fix reject resume data if it contains mismatching info hashes
  • lt:fix clear the candidate_cache when clear peer_list
  • lt:fix missing python converter for dht::announce_flags_t
  • lt:fix issue with web seed connections when they close and re-open
  • lt:fallocate() not supported is not a fatal error
  • lt:fix proxying of IPv6 connections via IPv4 proxy
  • lt:treat CGNAT address range as local IPs
  • lt:add stricter checking of piece layers when loading torrents
  • lt:add stricter checking of v1 and v2 hashes being consistent
  • lt:cache failed DNS lookups as well as successful ones
  • lt:add an i2p torrent state to control interactions with clear swarms
  • lt:fix i2p SAM protocol parsing of quoted messages
  • lt:expose i2p peer destination in peer_info
  • lt:fix i2p tracker announces
  • lt:fix issue with read_piece() stopping torrent on pieces not yet downloaded
  • lt:improve handling of allow_i2p_mixed setting to work for magnet links
  • lt:fix web seed request for renamed single-file torrents
  • lt:fix issue where web seeds could disappear from resume data
  • lt:extend save_resume with additional conditional flags
  • lt:fix issue with retrying trackers in tiers > 0
  • lt:fix last_upload and last_download resume data fields to use posix time
  • lt:improve error messages for no_connect_privileged_ports, by untangle it from the port filter
  • lt:fix I2P issue introduced in 2.0.0
  • lt:add async tracker status query, post_trackers()
  • lt:add async torrent status query, post_status()
  • lt:support loading version 2 of resume data format
  • lt:fix issue with odd piece sizes
  • lt:add async piece availability query, post_piece_availability()
  • lt:add async download queue query, post_download_queue()
  • lt:add async file_progress query, post_file_progress()
  • lt:add async peer_info query, post_peer_info()
  • lt:fix uTP streams timing out instead of closing cleanly
  • lt:add write_torrent_file_buf() overload for generating .torrent files
  • lt:add create_torrent::generate_buf() function to generate into a buffer
  • lt:fix copy_file when the file ends with a sparse region
  • lt:uTP performance, fix packet loss when sending is stalled
  • lt:fix trackers being stuck after session pause/resume
  • lt:fix bug in hash_picker with empty files
  • lt:uTP performance, prevent premature timeouts/resends
  • lt:add option to not memory map files below a certain size
  • lt:settings_pack now returns default values when queried for missing settings
  • lt:fix copy_file fall-back when SEEK_HOL/SEEK_DATA is not supported
  • lt:improve error reporting from file copy and move
  • lt:tweak pad file placement to match reference implementation (tail-padding)
  • lt:uTP performance, more lenient nagle’s algorithm to always allow one outstanding undersized packet
  • lt:uTP performance, piggy-back held back undersized packet with ACKs
  • lt:uTP performance, don’t send redundant deferred ACKs
  • lt:support incoming SOCKS5 packets with hostnames as source address, for UDP trackers
  • lt:ignore duplicate network interface change notifications on linux
  • lt:fix total_want/want accounting when forcing a recheck
  • lt:fix merging metadata with magnet links added on top of existing torrents
  • lt:add torrent_flag to default all file priorities to dont_download
  • lt:fix &so= feature in magnet links
  • lt:improve compatibility of SOCKS5 UDP ASSOCIATE
  • lt:fix madvise range for flushing cache in mmap_storage
  • lt:open files with no_cache set in O_SYNC mode~
  • lt:fix issue in use of copy_file_range() on linux
  • lt:avoid open-file race in the file_view_pool
  • lt:fix issue where stop-when-ready would not close files
  • lt:fix issue with duplicate hybrid torrent via separate v1 and v2 magnet links
  • lt:added new function to load torrent files, load_torrent_*()
  • lt:support sync_file_range() on linux
  • lt:fix issue in write_torrent_file() when file size is exactly piece size
  • lt:fix file_num_blocks() and file_num_pieces() for empty files
  • lt:add new overload to make_magnet_uri()
  • lt:add missing protocol version to tracker_reply_alert and tracker_error_alert
  • lt:fix privilege issue with SetFileValidData()
  • lt:add asynchronous overload of torrent_handle::add_piece()
  • lt:default to a single hashing thread, for full checks
  • lt:Fix bug when checking files and the first piece is invalid
  • lt:fix issue creating a v2 torrent from torrent_info containing an empty file
  • lt:make recheck files also update which files use partfile
  • lt:add write_through disk_io_write_mode, which flushes pieces to disk immediately
  • lt:improve copy file function to preserve sparse regions (when supported)
  • lt:add function to truncate over-sized files part of a torrent
  • lt:fix directory creation on windows shared folders
  • lt:add flag to make add_files() not record file attributes
  • lt:deprecate (unused) allow_partial_disk_writes settings
  • lt:fix disk-full error reporting in mmap_disk_io
  • lt:fixed similar-torrents feature for v2 torrents
  • lt:fix potential unbounded recursion in add_completed_job, in disk I/O
  • lt:deprecated (unused) volatile_read_cache setting
  • lt:fix part files being marked as hidden on window
  • lt:on windows, explicitly flush memory mapped files periodically
  • lt:fix build with WolfSSL
  • lt:fix issue where incoming uTP connections were not accepted over SOCKS5
  • lt:fix several issues in handling of checking files of v2 torrents, esp. from magnet links
  • lt:make the token limit when parsing metadata from magnet files configurable
  • lt:fix issue with stalled pieces on disk full errors
  • lt:fix missing python binding for file_progress_flags
  • lt:fix torrent_file_with_hashes() to fail when we don’t have the piece layers
  • lt:restore path character encoding conversion for non UTF-8 locales on linux
  • lt:fix use-after-free bug in make_magnet_uri
  • lt:add write_torrent_file() to produce a .torrent file from add_torrent_params
  • lt:allow loading v2 .torrent files without piece layer
  • lt:fix issue with adding v2 torrents with invalid file root hash
  • lt:fix piece picker bug causing double-picks with prefer-contiguous enabled
  • lt:expose session_params in python bindings
  • lt:fix (deprecated) use of add_torrent_params::info_hash
  • lt:fix issue creating and loading v2 torrents with empty files. Improves conformance to BEP52 reference implementation
  • lt:add new torrent_file_with_hashes() which includes piece layers for creating .torrent files
  • lt:add file_prio_alert, posted when file priorities are updated
  • lt:fix issue where set_piece_hashes() would not propagate file errors
  • lt:add missing python binding for event_t
  • lt:add work-around for systems without fseeko() (such as Android)
  • lt:add convenience header libtorrent/libtorrent.hpp
  • lt:increase default max_allowed_in_request_queue
  • lt:fix loading non-ascii filenames on windows with torrent_info constructor (2.0 regression)
  • lt:add std::hash<> specialization for info_hash_t
  • lt:fix integer overflow in hash_picker and properly restrict max file sizes in torrents
  • lt:strengthen SSRF mitigation for web seeds
  • lt:add v1() and v2() functions to torrent_info
  • lt:fix piece_layers() to work for single-piece files
  • lt:fix python binding regression in session constructor flags
  • lt:fix unaligned piece requests in mmap_storage
  • lt:improve client_data_t ergonomics
  • lt:fix issue with concurrent access to part files
  • lt:fix attribute in single-file v2 torrent creation
  • lt:fix padding for empty files in v2 torrent creation
  • lt:add function to ask a file_storage whether it’s v2 or not
  • lt:fix mtime field when creating single-file v2 torrents
  • lt:fix performance regression in checking files
  • lt:disable use of SetFileValidData() by default (windows). A new setting allows enabling it
  • lt:dropped dependency on iconv
  • lt:deprecate set_file_hash() in torrent creator, as it’s superceded by v2 torrents
  • lt:deprecate mutable access to info_section in torrent_info
  • lt:removed deprecated lazy_entry/lazy_bdecode
  • lt:stats_alert deprecated
  • lt:remove bittyrant choking algorithm
  • lt:update userdata in add_torrent_params to be type-safe and add to torrent_handle
  • lt:add ip_filter to session_params
  • lt:added support for wolfSSL for SHA-1 hash and HTTPS (no Torrents over SSL)
  • lt:requires OpenSSL minimum version 1.0.0 with SNI support
  • lt:deprecated save_state() and load_state() on session in favour of new
  • lt:write_session_params() and read_session_params()
  • lt:added support for BitTorrent v2 (see docs/upgrade_to_2.0.html)
  • lt:create_torrent() pad_file_limit parameter removed
  • lt:create_torrent() merkle- and optimize-alignment flags removed
  • lt:merkle_tree removed from add_torrent_params
  • lt:announce_entry expose information per v1 and v2 info-hash announces
  • lt:deprecated sha1_hash info_hash members on torrent_removed_alert,
  • lt:torrent_deleted_alert, torrent_delete_failed_alert and add_torrent_params
  • lt:undeprecate error_file_metadata for torrent errors related to its metadata
  • lt:remove support for adding a torrent under a UUID (used for previous RSS support)
  • lt:remove deprecated feature to add torrents by file:// URL
  • lt:remove deprecated feature to download .torrent file from URL
  • lt:requires boost >= 1.66 to build
  • lt:update networking API to networking TS compatible boost.asio
  • lt:overhauled disk I/O subsystem to use memory mapped files (where available)
  • lt:libtorrent now requires C++14 to build
  • lt:added support for GnuTLS for HTTPS and torrents over SSL
  • lt:fix issue where stop-when-ready would not close files
  • lt:uTP performance, fix packet loss when sending is stalled
  • lt:uTP performance, prevent premature timeouts/resends
  • lt:uTP performance, more lenient nagle’s algorithm to always allow one outstanding undersized packet
  • lt:uTP performance, piggy-back held back undersized packet with ACKs
  • lt:uTP performance, don’t send redundant deferred ACKs
  • lt:fix wanted_done/done accounting when force-rechecking
  • lt:expose userdata via torrent_handle (back-port from 2.0)
  • lt:fix renaming of filenames that are too long for the filesystem
  • lt:made UPnP and LSD code avoid using select_reactor (to work around an issue on windows in boost.asio < 1.80)

jlibtorrent 2: powering the next generation of BitTorrent clients in Java and on arm64

Since its inception, jlibtorrent has bridged the high-performance C++ BitTorrent engine libtorrent with Java environments—enabling developers to build full-featured torrent clients on Android, desktop Java, and server applications. With the recent jlibtorrent 2 release series (version 2.0.11.0 onward) the library undertakes a major leap—both in API richness, platform portability (including native arm64 binaries), and runtime capability—positioning it as the backbone for the next generation of BitTorrent clients built in Java (many targeting Android) and for server-side deployments on Linux arm64 for low-energy hosting.

Java API changes in jlibtorrent 2

  • A fluent builder API for creating .torrent files: the TorrentBuilder class now offers TorrentBuilder.Listener (for file-filtering and progress callbacks) and TorrentBuilder.Result to expose rich metadata output.
  • Time-series metrics support via TorrentStats.SeriesMetric (including metrics like TIME, DOWNLOAD_RATE, UPLOAD_RATE) enabling richer monitoring and analytics.
  • Enhanced DHT/item support for mutable items: SessionManager.MutableItem introduces editable DHT items with Ed25519 signatures and versioning, opening up advanced peer/data-anchoring use-cases.
  • Networking introspection via EnumNet.IpInterface (address, netmask, friendly names) and EnumNet.IpRoute (routing table entries with gateway and MTU) to support complex network-aware clients.
  • Comprehensive API refinements: many previously internal types (AnnounceInfohash, Pair, PiecesTracker, Vectors, AlertMulticaster, MoveFlags, IntSeries, and nested types) have been documented, and now offer full JavaDoc coverage with dozens of example usage patterns.
  • Zero HTML/critical errors in the generated javadoc for the 2.0.12.8 release, marking a maturation of API stability and documentation quality.

Platform and build improvements

  • Native binaries now support Linux arm64 (alongside Apple Silicon and Android arm64) enabling client applications and servers to run on modern low-power, high-efficiency hardware (e.g., AWS Graviton, Ampere Altra, Raspberry Pi-class boards).
  • The jlibtorrent 2 series is built on libtorrent’s “RC_2_0” branch and uses modern toolchains (C++20, Boost 1.88.0+, OpenSSL 3.5.2) and updated SWIG bindings (e.g., 4.x series) ensuring performance, security, and long-term compatibility.
  • Android builds are optimized for 16KB page-size (NDK r28c) and modern Android SDKs; desktop builds support macOS (arm64), Windows, and Linux.
  • Maven/Gradle artifacts now include both class wrappers and native libraries for multiple architectures, simplifying client-side dependency management across platforms.

Why this matters

For Java and Android developers building BitTorrent clients, jlibtorrent 2 offers:

  • Java-friendly, high-performance torrent engine: Access to libtorrent’s capabilities (v2.0 engine) via Java wrappers means full-featured clients (seeding, DHT, magnets, v1/v2 torrents) without having to implement C++ JNI layers from scratch.
  • Cross-platform consistency: One set of Java APIs works on Android (arm/arm64/x86/x86_64), desktop (Windows, macOS, Linux), and now server/embedded arm64.
  • Server-side arm64 deployments: As hosting moves toward energy-efficient arm64 hardware (e.g., cloud Graviton/Altra, edge servers), jlibtorrent supports native binaries for these platforms—enabling server-side torrent applications, indexing, seeding farms, or hybrid models (mobile+backend) on modern infrastructure.
  • Rich API & observability: Features like the series metrics, IP route introspection, DHT mutable items, and builder APIs for .torrent generation make it easier to build advanced clients: monitoring, analytics, plugin extensions, custom storage strategies, or even BitTorrent-native plugin ecosystems.
  • Maturation: With more than 50 public API classes now fully documented, dozens of example use-cases, and a clean JavaDoc build, jlibtorrent 2 is positioned as a production-ready library rather than an exploratory layer.

How FrostWire leverages jlibtorrent 2

The open-source project FrostWire (which began as a fork of LimeWire and evolved into a Java-based BitTorrent client) now transitions into its next era: FrostWire for Android 3 and FrostWire 7 for Desktop. These versions (available today for developers that compile from source) incorporate jlibtorrent 2 as their underlying torrent engine.

  • On Android, the native arm64 builds of jlibtorrent allow FrostWire to run efficiently across modern mobile chipsets and tablets, with lower power consumption and full support for BitTorrent v2 features.
  • On desktop and server contexts, FrostWire 7 (and related server/daemon variants) leverage the arm64 Linux binaries to run on cost-effective, high-density hostings (such as Graviton nodes) for seeding, indexing, or cloud-based media distribution.
  • By basing on the new builder APIs, FrostWire can offer built-in “create and share a torrent” workflows, advanced analytics (upload/download rate time series), and network topology awareness (choosing optimal interfaces/routes).
  • FrostWire’s evolution thus illustrates how a modern Java client can span mobile, desktop, and backend/cloud deployments — all running the same torrent core logic via jlibtorrent 2.

Implications for the wider BitTorrent ecosystem

  • Java ecosystem: Historically, most BitTorrent client engines have been C++ (libtorrent), C (Transmission), or in other languages. By providing a fully-featured Java wrapper, jlibtorrent 2 lowers the barrier for Java/Kotlin (Android) developers to build native-capable clients without rewriting complex protocol engines.
  • Mobile-first torrenting: As mobile devices become more capable and power-efficient, having a mature Java/Android torrent engine means richer P2P apps, offline media distribution, peer-to-peer content delivery, etc., are more feasible on mobile platforms.
  • Edge/Server hybrid deployments: The availability of arm64 native binaries means torrent-based services can run on low-power edge servers, small VPS instances, or even embedded devices—broadening deployment scenarios beyond traditional x86 desktops.
  • BitTorrent v2 readiness: As the ecosystem moves toward BitTorrent v2 (merkle tree torrents, enhanced hashing), jlibtorrent 2 supports those features, enabling clients built today to be future-proof.
  • Extensibility: With plugin-capable API surfaces (builder APIs, DHT mutable items, network introspection), new use-cases—such as cryptocurrency-anchored DHT items, content-distribution overlays, branded client workflows, or hybrid peer/edge architectures—become more accessible to Java teams.

Summary

In short: jlibtorrent 2 represents the modern foundation for Java-based BitTorrent applications—high-performance native bindings across architectures (including arm64 servers and mobile), deeply-documented APIs, builder patterns, monitoring capabilities, and extensibility hooks. With FrostWire for Android 3 and FrostWire 7 for Desktop as flagship users, this library sets the stage not only for mobile and desktop clients, but also for server and edge deployments that use BitTorrent technology in new ways.

🎉 FrostWire Desktop 6.14.0 is Here – A Sleeker, Smarter, Darker Experience

We’re excited to announce a brand new update for FrostWire Desktop, now at version 6.14.0 (build 326). This release focuses on aesthetic upgrades, smarter search filtering, and a smoother experience for dark theme users.


📥 Download FrostWire 6.14.0

Available now for Windows, macOS (Intel & Apple Silicon), and Linux:

✨ What’s New in FrostWire 6.14.0?

🔍 Smarter Search

  • Search results now filter out junk more intelligently. If a result doesn’t actually match your keywords — even in a fuzzy way — it won’t clutter your screen.

🎨 Massive Dark Theme Overhaul

  • We’ve polished the dark mode experience throughout the app:
    • Darker, cleaner backgrounds in search, library, and transfers.
    • Unified colors across tables, text fields, and panels for a more consistent look.
    • Brightened icons so they’re visible even in the darkest corners of the app.
    • Dialogs, tooltips, and toggle buttons are now easier to read.
    • More natural gradients and dynamic row striping for tables.

🖼️ UI Refinements All Around

  • The new app splash image makes a bold entrance.
  • Slide panels now have a transparent download button and black background behind author names.
  • The Settings button in the status bar has been cleaned up.
  • Fixes and cleanup across the board for layout and responsiveness.

⚙️ Behind the Scenes

  • Better handling of theme changes without glitches.
  • Improved memory of what theme you’re using.
  • Exceptions during UI updates are now safely ignored to prevent crashes.
  • A complete cleanup of unnecessary or outdated UI rendering code.

FrostWire for Android 2.9.7 (Build 752 – FINAL 2.9.7 RELEASE) Is Live! 🚀

We’re excited to announce the latest FrostWire for Android release, version 2.9.7 (build 752). This update packs critical crash fixes, stability improvements, and under-the-hood tweaks to keep your BitTorrent experience smooth and reliable.


🔧 Crash Fixes & Stability Improvements

  • NPE Guard in PerformersHelper
    Fixed a NullPointerException in PerformersHelper.sortByRelevance when the current query was null or empty, eliminating random app crashes.
  • Safe UI Handling
    Guarded against showing UI after an activity is paused in local broadcast receivers, preventing IllegalStateException.
  • Notification Daemon Refinement
    Moved the startForeground() call from onCreate() to onStartCommand() in MusicPlaybackService, ensuring our notification update daemon starts exactly once—and only when it’s supposed to.
  • DrawerLayout Hardening
    Swapped out DrawerLayout for a new SafeDrawerLayout that catches measurement-related IllegalStateException and falls back gracefully.
  • Bundle Size Management
    Avoided TransactionTooLargeException by writing large torrent metadata to a temporary file (rather than squeezing it into an Intent bundle).
  • Chaquopy Packaging Fix
    Ensured Python code under src/main/python is included in the APK, fixing “marshall data too short” errors for scripting features.

🛠 Additional Under-the-Hood Tweaks

  • Version Bump
    Updated versionCode to 752 and versionName to 2.9.7 in the AndroidManifest.
  • Gradle Integration
    Added a Gradle block to package Chaquopy’s Python sources automatically.
  • Changelog Update
    Refreshed changelog.txt with all the above fixes, dated APR/24/2025.

📲 How to Update

frostwire-android-release-2.9.7-b752-plus.apk 106 MB
frostwire-android-debug-2.9.7-b752-plus.apk 108 MB (in case you want to send nice crashlogs)

Grab the FREE APK installer from our Github Release or directly from our official website and enjoy the seamless download experience.

Stay tuned for more updates as we get ready for a transition to Bittorrent 2.0!


Thank you for using FrostWire 🙌
As always, we appreciate your feedback—feel free to drop us a line on our GitHub issues page

Happy Torrenting! 🌐📲

❄️ FrostWire 2.9.6 for Android is here – Faster, Safer, Smoother

We just released FrostWire 2.9.6 (Build 748) and it’s more responsive than ever. This update brings performance improvements, upgraded libraries, and an important fix to avoid freezes when sorting large search result sets.

DOWNLOAD FROSTWIRE 2.9.6-b748 FOR ANDROID


🔧 What’s new in 2.9.6

  • ✅ Fix: Avoid ANR (freeze) when sorting massive search result sets
    • Sorting is now done asynchronously to keep the UI responsive, even with thousands of results.
  • 🧠 Updated yt-dlp to version 2025.03.31 for improved video/audio compatibility.
  • 📦 Dependency upgrades for performance and security:
    • androidx.core:core → 1.16.0
    • firebase-bom → 33.12.0
    • applovin-sdk → 13.2.0
    • unityads-adapter → 4.14.1.0
    • com.google.android.ump → 3.2.0
    • Kotlin plugin and stdlib → 2.0.21
    • Gradle wrapper → 8.11.1
    • Android Gradle Plugin → 8.8.2

🚀 Why this matters

This update is all about smoother performance and reliability. If you’ve ever experienced lag or freezes when handling large search result lists, this version eliminates that pain point. We’ve moved sorting logic to a background thread, keeping the app snappy and responsive on all devices.


🧊 Stay tuned…

More enhancements and features are in the works. Got feedback or requests? Join us on GitHub or drop your ideas in the community forums. We’re listening.


Built with ❤️ by the FrostWire Team

FrostWire 2.9.5 for Android – Smarter Search & Performance Boosts!

We’re excited to introduce FrostWire 2.9.5 for Android! This update brings significant improvements to search accuracyperformance, and stability.

DOWNLOAD IT NOW FREE FOR ANDROID DEVICES


🔍 Smarter & More Relevant Search Results

  • We’ve made huge improvements to how search results are ranked.
  • Results without keyword matches are now filtered out, so you only see what’s relevant.
  • Fuzzy matching is now used to improve search accuracy even when there are minor typos or variations in keywords.
  • We’ve also removed common stopwords (like and, the, in, on) from affecting search accuracy.

🚀 Performance & Stability Enhancements

  • Upgraded yt-dlp to version 2025.2.19 for better video downloading.
  • Updated Firebase Crashlytics (v3.0.3) to improve app diagnostics and stability.
  • Updated Google Firebase SDK to 33.10.0.
  • Optimized how search results are sorted to reduce lag when loading many results.
  • Various bug fixes and stability improvements across the app.

📡 Better Media Support & Advertising Integrations

  • Updated AppLovin SDK to 13.1.0.
  • Updated Unity Ads Mediation Adapter to 4.13.1.1 for a better monetization experience.
  • Improved playlist management and removed some outdated methods for better compatibility.

Why Update?

If you’re using an older version of FrostWire, you’ll immediately notice the difference in search speed and accuracy. No more irrelevant search results clogging your screen—just the content you’re looking for, ranked smartly with our improved algorithm.

REMINDER: When you download and install FrostWire you must agree that you will not use it for the purpose of copyright infringement otherwise the software won’t work. FrostWire condemns copyright infringement.

FrostWire 2.9.5 build 747 MAR/09/2025

  • Search works much better
  • Filter out search results with no keyword matches
  • yt_dlp-2025.2.19
  • com.google.firebase:firebase-crashlytics-gradle:3.0.3
  • com.google.firebase:firebase-bom:33.10.0
  • com.applovin:applovin-sdk:13.1.0
  • com.applovin.mediation:unityads-adapter:4.13.1.1

FrostWire 2.9.2 Update: A Wintry Blast of Innovation!

As winter paints the world with frosty hues, FrostWire steps into the spotlight with its latest update—version 2.9.2 build 743. This release is more than just an update; it’s a technological blizzard designed to enhance your music experience while embracing the latest in Android development. Here’s everything you need to know about this feature-packed release.

DOWNLOAD FROSTWIRE 2.9.2 BUILD 743 FOR ANDROID DEVICES


Why This Update Matters

In the ever-changing world of Android, keeping up with the latest trends and requirements is essential. FrostWire 2.9.2 doesn’t just keep pace; it sets a new standard by targeting Android 14, embracing Java 17, and ensuring compatibility with modern devices. Whether you’re a long-time FrostWire fan or a newcomer, this update is crafted to bring you a seamless, reliable, and cutting-edge experience.


The Highlights

1. Platform Evolution:

  • Targeting Android 14 (SDK 34) with Java 17 compatibility ensures FrostWire runs smoothly on the latest devices.
  • Minimum SDK bumped to Android 8.0 (Oreo), bringing improved security and features.

2. Streamlined Codebase:

  • Removed outdated dependencies for a cleaner, more efficient app.
  • Leveraged Android’s Workers API to replace background services, boosting performance and maintainability.

3. Notification Magic:

  • Notifications have been modernized to comply with Android 13/14 standards. Say goodbye to outdated alerts and hello to streamlined notifications with buildBasicNotification().

4. Playlist Perfection:

  • Unified playlist fetching using MusicUtils.getPlaylists().
  • Fixed pesky bugs, ensuring user-created playlists always display as intended.

5. Thread Safety and Error Handling:

  • Introduced CountDownLatch and AtomicReference to handle app states more robustly.
  • Enhanced error logging and defensive checks to keep issues at bay.

6. Ad Smarts:

  • Fixed ad debounce issues to prevent unnecessary reloads, ensuring a smoother user experience.

What’s New for Developers

For the tech-savvy among us, here’s a glimpse into the developer-focused upgrades:

  • Dependency updates, including androidx.core:core:1.15.0 and firebase-bom:33.7.0.
  • Removed play-services-location and play-services-ads-identifier to stay aligned with modern standards.
  • Improved MusicPlaybackService for lifecycle handling and state management.

Read the full changelog here


Built for the Future

This release isn’t just about the present; it’s a step toward a more sustainable FrostWire. By adopting modern APIs and practices, we’re ensuring the app continues to thrive as Android evolves. Whether it’s enhanced lifecycle management, better compliance with strict mode policies, or improved dependency management, every change is a step forward.


A Winter Adventure Awaits

Just like a frosty breeze invigorates the senses, FrostWire 2.9.2 revitalizes your app experience. Whether you’re curating playlists, discovering music, or simply vibing to your favorite tunes, this update ensures a smoother, more enjoyable journey.

So, what are you waiting for? Update to FrostWire 2.9.2 and let this wintry wonderland of features transport you to a new era of music enjoyment.

Download the update now, and let’s make this a winter to remember!


Share Your Thoughts

We’d love to hear from you! Found a new favorite feature or have suggestions for the next update? Drop us a comment below or join the conversation on our social media channels. Together, let’s keep FrostWire cool and cutting-edge.

Enhancing User Experience and Performance: A Comprehensive Overview of FrostWire for Android 2.8.0 Updates

Introduction

In the current landscape of mobile application development, user experience (UX) and performance are paramount to maintaining an application’s relevance and engagement. With the release of FrostWire for Android 2.8.0, several key updates have been implemented to enhance the overall performance, streamline the user interface (UI), and adapt to changing platform requirements. These updates include the introduction of dark mode support, enhanced theme management, and the removal of the deprecated in-app store functionality—a decision driven by FrostWire’s recent removal from the Google Play Store. This release marks a pivotal moment in FrostWire’s development, as we shift our focus toward a more streamlined and responsive application.

This paper provides a detailed analysis of the technical updates introduced in FrostWire 2.8.0, including changes to the project’s dependency structure, the refactoring of legacy code, and the implementation of UI adjustments to ensure consistency across different screen sizes and themes. Additionally, we explore the rationale behind the removal of the in-app store, an element that no longer serves its original purpose following FrostWire’s de-listing from Google Play.

Background

Mobile applications operate in an environment of continuous change, where both platform-specific requirements and user expectations evolve rapidly. One of the most notable trends in recent years is the adoption of dark mode, which offers users a visually comfortable alternative to traditional light themes, especially in low-light settings. Additionally, dark mode has been shown to conserve battery life on devices with OLED screens. With Android introducing system-wide support for dark mode in Android 10, it became essential for FrostWire to integrate this feature to meet user expectations.

In response to this demand, FrostWire 2.8.0 introduces full dark mode support via the new colors.xml resource file. This file defines color values that are applied across the application’s UI when dark mode is enabled. The addition of dark mode is complemented by the inclusion of the ThemeManager class, which dynamically adjusts the app’s theme based on user preferences or system settings. This flexible theme management system ensures seamless transitions between light and dark modes, improving the overall user experience.

An equally significant change in this release is the removal of the in-app store functionality. Historically, the in-app store allowed users to make purchases and access promotional content via Google Play. However, due to FrostWire’s removal from the Google Play Store, maintaining this functionality no longer made sense. The classes responsible for this integration, including PlayStore.java, Store.java, and StoreBase.java, have been deprecated and removed. The decision to remove these components reflects a shift in FrostWire’s strategic priorities, focusing on providing users with a cleaner and more efficient file-sharing experience, without the need for in-app purchases or offers.

Project Dependencies and Code Refactoring

The 2.8.0 release also involves critical updates to the application’s underlying infrastructure. The build.gradle file has been updated to align with the latest Android library versions, ensuring that the application benefits from improved security, performance optimizations, and enhanced compatibility with newer Android devices. Regular updates to project dependencies are crucial in maintaining the integrity and stability of the application, particularly as older libraries become obsolete and are no longer supported by the Android ecosystem.

In addition to dependency updates, the release features extensive refactoring of existing code. Key UI layout files such as activity_base.xml, activity_player_base.xml, and audio_player_controls.xml have been modified to ensure consistency across different screen resolutions and device types. These changes are particularly important for maintaining a cohesive user experience as FrostWire continues to support a broad range of devices.

Significant refactoring was also conducted in the fragment and preferences management systems. For example, ApplicationPreferencesFragment.java has been streamlined for better performance and maintainability, removing unnecessary code paths and optimizing UI rendering. These changes reduce the technical debt of the project and ensure that the application remains agile and responsive to future feature enhancements.

Finally, localization has been improved across multiple languages, reflecting FrostWire’s commitment to serving its global user base. The updates to translation files address longstanding issues with certain language strings, ensuring a more polished and accessible user experience for non-English speakers.

Installer (95 MB)
https://github.com/frostwire/frostwire/releases/download/frostwire-android-2.8.0-build-737/frostwire-android-release-2.8.0-b737-plus.apk

FrostWire for Android 2.8.0: Introducing Dark Mode

We’re excited to announce FrostWire for Android 2.8.0, packed with updates that improve the way you experience the app! Whether you’re a music lover, a file sharer, or someone who enjoys sleek design, this release has something for everyone. Let’s dive into what’s new!

OFFICIAL INSTALLER!
frostwire-android-release-2.8.0-b737-plus.apk 95.1 MB

1. Dark Mode is Here!

You asked, and we listened. Dark Mode has officially arrived in FrostWire! With Dark Mode, you can now enjoy a more comfortable viewing experience, especially in low-light environments. Whether you’re browsing your downloads late at night or simply prefer a darker aesthetic, FrostWire will automatically adapt to your system settings or personal preference.

  • Why you’ll love it:
    • Easier on the eyes during nighttime use.
    • Helps save battery life on devices with OLED screens.
    • A sleek, modern look that feels great to use.

2. Say Hello to the New Theme Manager

We’ve revamped the way FrostWire handles themes with our all-new Theme Manager. This behind-the-scenes upgrade ensures smoother transitions between themes and gives us the flexibility to add more customization options in the future.

  • What this means for you:
    • Seamless switching between light and dark modes.
    • A cleaner, more cohesive look across the app.
    • Future updates could bring more personalization options, so stay tuned!

3. Goodbye to In-App Store

As we continue refining the FrostWire experience, we’ve decided to remove the in-app store functionality. While it was fun while it lasted, we realized that our users prefer a more streamlined app without the extra distractions. This change helps us focus on what really matters—delivering the best file-sharing experience.

  • What’s changed:
    • We’ve removed all code related to the in-app store and offers.
    • FrostWire is now leaner and faster without unnecessary features.

4. A Smoother, More Efficient Experience

This update isn’t just about adding features—it’s about making the entire app run smoother. With less clutter and more focus on what you love about FrostWire, you’ll notice faster performance and an even more intuitive interface.


Update Now and Enjoy the New FrostWire!

Ready to take the new features for a spin? Update FrostWire for Android to version 2.8.0 and enjoy the best experience yet. As always, we’d love to hear what you think. Drop us a review or join the conversation on our community forums!

Stay tuned for more exciting updates as we continue to evolve FrostWire, your favorite file-sharing app!