My favorite podcast app recently took the leap from mobile platforms and the web to the world of making desktop applications for macOS and Windows. I’ve taken a long hard look at what you’re getting, and why it might not be the most impressive podcast app available for desktop.
It’s all the same webapp
There really is only one app and it lives over at play.pocketcasts.com. The macOS and Windows apps are primarily repackaged Pocket Casts versions of the webapp.
Pocket Casts have managed to pull off a design that doesn’t look completely native as either macOS nor a Windows 10-style app. However, it doesn’t look completely foreign either and everything is laid out so the design works on both platforms and the same design also serves the service well on the web.
Pocket Casts have built their desktop app/webapp hybrids using the native toolkits provided by Apple for macOS and Microsoft for Windows. However, as The Verge recently put it: The desktop belongs to Electron. Electron is a framework based on the Chromium, the web browser engine, for packaging webapps as desktop programs across multiple operating systems. Electron also grants webapps extra permissions to interact with the file system. I promise that this little technical detail will become important quite a few places throughout the article!
I’m not disrespecting on webapps or the web as an app platform. My initial reaction to the first version of the Pocket Casts webapp when it was released back in was “Shut up and take my money!” Three years later, I am, however, kind of disappointed to find that three years later the only feature that has been added since the initial release is a play queue.
Desktop app-only features
Pocket Casts’ macOS and Windows apps are for the most part identical to the webapp. You do, however, get some small extra features that aren’t available on the webapp:
- Multimedia keys work (play/pause, and back and forward)
- Windows only: app media controls on the lock screen
- macOS only: a small mini-player that floats on top of other windows
- Start menu entry on Windows (oddly labeled “Pocket Casts Desktop”) and Launchpad entry on macOS
You’re really not getting much in terms of desktop integration. Disappointingly, the apps don’t integrate with Spotlight search on macOS or with Windows Search or Windows Timeline. Searching on your device really should bring up your favorite podcast shows and episodes. This could be achieved on both operating systems by creating bookmark files containing the relevant metadata on the local device and deep linking into the relevant screens in the app. You could also get episode searching for free by caching episodes on disk, something I’ll go into in more details next.
Podcasts is an on-demand media. Most podcast apps, including Pocket Casts for Android and iOS, will periodically download new podcast episodes and store them on your device so they’re ready when you’ve got time to listen to them. Podcast apps for mobile devices will often download episodes when your device is on WiFi and plugged in to a charger to save on data cost and don’t impact your device’s battery life.
Pocket Casts for web can’t support this feature as the web platform doesn’t give websites enough storage capacity to download numerous large files to cache. Pocket Casts apps for macOS and Windows have inherited this limitation. You’re restricted to only stream podcast episodes over the web and can’t work the app offline.
However, if Pocket Casts had chosen to go down the Electron route it would be a small job to extend the webapp’s functionality and reimplement the download and storage management customers are familiar with from Pocket Casts for mobile.
Audio issues on macOS
The macOS version of the Pocket Casts’ app suffers from being built on Apple technologies. A popular feature found in almost every podcast app is the ability to slightly increase the playback speed. Safari degrades the audio quality considerably when playing it back at a faster rate.
Already at 10 % faster playback, the smallest increment that can be configured in Pocket Casts, the audio starts suffering from distortions and compression artifacts (cracking, popping). At even higher speeds these issues get more and more noticeable.
This issue also isn’t present when using the webapp in Firefox and Chrome on macOS, but it shows up in Safari. In other words, Pocket Casts could have avoided this issue by building their webapp on Electron instead of the macOS native toolkit. The first couple of reports and complaints I can find about Safari’s audio distortion issues at higher playback speeds date back to just a few months after Pocket Casts released their first webapp back in .
The Windows version of Pocket Casts don’t have this issue and neither does Microsoft Edge.
No silence trimming
Audio engineers and podcast producers may feel that five full seconds are important to tell a story properly, but I frankly don’t have that kind of time to listen to absolutely nothing. Pocket Casts for Android and iOS can detect and automatically shorten long silences. According to the trimmed-silences time tracking in the Android app, I’ve cut away over 16 hours of silence in the app. I sure hope that I did something productive with those 16 hours and didn’t just fill them with even more podcasts.
The new Pocket Casts webapp, and thus also the macOS and Windows desktop apps, don’t support this feature. I feel it’s a lesser experience because of it.
Podcast episodes aren’t served by Pocket Casts but come directly from the podcast publisher’s servers. Not every podcast episode served is identical with things like programmatic ad insertion make it unfeasible for Pocket Casts to analyze and pre-process the audio on their servers.
Pocket Casts’ mobile apps perform the audio processing on-device. The Web Audio API seems like it should be up to the task of detecting silence and trimming them down, but the standards work isn’t quite there yet and neither is the implementation in Safari and the other major web browsers.
Can’t subscribe to new shows, no data portability
It would seem Pocket Casts have learned a terrible lesson from Spotify and Google Podcasts and no longer allow users to subscribe to podcasts by their syndication feed (‘RSS’). Pocket Casts’ mobile apps and even the old webapp allowed users to just input the URL of an syndication feed into the search field to subscribe to it. The new beta webapp and the new desktop apps have just gotten rid of this option, and listeners are instead limited to the selection available in Pocket Casts’ catalog.
If you enjoy some fringe content, you’ll first have to submit it to Pocket Casts and hope they’ll add it to their catalog of podcasts. This isn’t an option for subscribing to personalized syndication feeds, like the ones you get from Patreon and other paid premium podcast vendors.
The new Pocket Casts apps also have another thing in common with Spotify and Google Podcasts: You also can’t export you podcast subscriptions to OPML or import an OPML from another podcasting app. The General Data Protection (GDPR) Article 20: Right to data portability be damned! However, you can still open Pocket Casts for Android or iOS (sold separately) and export your data from there. I doubt this would be enough to appease European regulators, however.
Whatever happen to podcasting being an open ecosystem with open standards?
Third-party analytics conundrum
Most podcasting apps set their own HTTP User-Agent, allowing for serer administrators to get some aggregate statistics about their partnership and which podcast clients are popular among their listeners.
Pocket Casts’ web app have to use the browser’s own User-Agent for most operations, and that is understandable. The web app will give analytics software some trouble figuring out what player was used; although the HTTP Referer (sic) header will contain *.pocketcasts.com/* for podcasts served over HTTPS so they can work it out.
The new desktop apps are a different matter. In the current beta versions, the macOS app uses the same User-Agent as AppleCoreMedia for streaming episodes and the same User-Agent as Safari when fetching other resources. The Windows app uses the same User-Agent as Microsoft Edge. However, Pocket Casts should have set their own User-Agent using the available native APIs when setting up the WebViews used internally by the apps. This only requires one–two lines of codes on each platform; or one line of code for both platform if Pocket Casts had gone for Electron instead.
This only matters to podcast publishers who’ll not be able to count Pocket Casts users properly.
Pocket Casts customers coming over from the Android or iOS apps have come to expect feature rich and high quality apps. Pocket Casts for web is a quality webapp, but the macOS and Windows versions doesn’t quite pull it off even though they’re literally the same app an experience. It’s a good companion app for the mobile apps for users who are always connected and don’t mind draining their battery on inefficient streaming.
I was initially quite happy to see that Pocket Casts had made a desktop app and an update to their webapp. However, the desktop apps turned out to be the webapp with very little system integration, it doesn’t bring any real advantages over using their webapp. You can pin the webapp to your Start menu from Microsoft Edge in Windows 10 and get pretty much the same experience.
Simply sticking the webapp into the system native browsers have seriously impeded the apps’ features and left users with bad audio quality on macOS. I really didn’t intend for this but this review quickly turned to a pitch for using Electron for desktop apps instead of native WebViews provided by the operating system. However, this would have made more sense for Pocket Casts and meant they could deliver a better experience and more features on Linux, macOS, and Windows for the same amount of development time.
I’ll continue to use Pocket Casts for web in Firefox on both macOS and Windows. Media key support would be great, but I can’t stand to listen to all the audio artifacts in Safari. Other than that, I’m not really getting much with this version of Pocket Casts for desktop.