# Absorb is a Flutter audiobook client with a card-based player and four release tracks

> Absorb is a cross platform Audiobookshelf client for Android and iOS that replaces the usual player screen with full-screen cards, and its distribution is unusually layered, with GitHub pre-releases, Obtainium, Google Play open testing, the App Store and TestFlight each mapped to a different maturity level. It is also a solo project that states plainly how much of it was written with AI assistance.

**pounat/absorb** — A cross platform Audiobookshelf client for Android and iOS

- Repository: https://github.com/pounat/absorb
- Website: https://github.com/pounat/absorb/releases
- Stars: 769 · Forks: 56
- Language: Dart
- License: GPL-3.0
- Published: 2026-10-21 · Updated: 2026-10-21 · Language: en
- Canonical page: https://hysenlabs.com/projects/pounat-absorb

## The card player replaces the screen you expect to see

Absorb is a modern audiobookshelf client with a card-based player experience, and the first feature listed is the one that defines it. Full-screen Absorbing cards replace the traditional player screen.

That is a design decision with consequences for how the app is used. A conventional audiobook player is a small strip with a scrub bar, and the listening happens in the background of whatever else you are doing. A card-based player makes the app the foreground, which suits the app's other features: the sleep timer with a visual fill bar countdown, the equalizer with bands and presets, bookmarks, and dual progress bars for book and chapter.

The rest of the feature list covers a lot of ground. Audiobookshelf integration connects to your self-hosted audiobookshelf server. Offline playback downloads books for listening without a connection. Podcast support covers chaptered podcasts with rich HTML descriptions. Backup and restore exports all settings to a `.absorb` file and imports on any device, with optional account credentials so a device migration carries the login with it. Multi-account lets you sign into multiple servers and switch between them.

The playback details are more considered than most clients get. Playback speed control has a fine-grained slider and per-book speed memory. Auto-rewind is configurable based on how long you were away, so returning after a short break does not lose your place and returning after a long one rewinds a sensible amount.

The project is Dart and Flutter, GPL-3.0 licensed, and the last push was on 2026-10-20 with release v1.12.0 published on 2026-10-15.

## Four release tracks, and knowing which one you are on matters

The distribution section is the most unusually detailed part of the documentation, and it is the thing to read before you install anything.

There are two tracks on GitHub. GitHub Pre-Releases, which are Alpha, get frequent updates with new features and bug fixes, and in Obtainium you can toggle pre-releases on or off. GitHub Full Releases, which are Beta or Stable, are promoted once a pre-release is solid, and these match what is pushed to Google Play and the App Store.

On Google Play, open testing is live, and open testing and production releases match the GitHub full releases. Internal testing, which is the alpha track, matches the GitHub pre-releases, and to join it you have to join the Discord to request access to the internal track.

On iOS, the App Store release matches the GitHub full releases, and the documentation notes that some features are still Android-only or in progress, with a link to the iOS section. The iOS TestFlight track is the alpha track matching the GitHub pre-releases, and the builds are more frequent and less polished than the App Store version. There is also an iOS Alpha sideload route, where alpha `.ipa` files are included in the GitHub pre-releases alongside the Android APK, for people who know how to sideload IPAs via AltStore or Sideloadly. The documentation says that for most users TestFlight is easier, because of automatic updates and no sideloading setup.

So there are effectively four maturity levels in one project: alpha on GitHub and Obtainium, alpha on Google Play internal and iOS TestFlight, beta and stable on GitHub, and production on Google Play and the App Store. The mapping is consistent, which is unusual and helpful, and the trade-off is that the alpha tracks get fixes days earlier at the cost of polish.

## A solo developer says exactly how much AI was involved

The note on AI in the project documentation is worth quoting, because it is more direct than most.

Absorb is developed by a human with AI assistance, mostly Claude Code, helping write, refactor and review code. It is not vibe coded or auto-generated, every change is reviewed, tested and shipped intentionally. The developer then adds that they are all in on AI as a development tool, that it massively speeds up the work and lets a solo developer ship features and fixes at a pace that would not be possible otherwise, and that they are sharing this openly so you know what is behind the app.

That framing matters for how you read the rest of the project. The copyright line names a single person, Nathan Poulson, and the feature list is long for one person, which is the point being made. The release cadence supports it too, with v1.11.1-296 and v1.11.1-295 published on the same day two days before v1.12.0, which is a build-numbering scheme that only makes sense if you are shipping continuously.

The AI disclosure is also relevant to the security posture, given that the app holds credentials for a self-hosted server and can administer it. The server admin feature means managing users, backups and podcasts from the app, which is a meaningful amount of trust to place in a client. The project also ships a PRIVACY_POLICY.md at the root, and the openness about the development method is part of the same posture.

## The server is yours, and the client talks to it in several ways

The requirement list is short. You need an audiobookshelf server, which is self-hosted, and Android 7.0 or newer or iOS 16 or newer.

That is the whole dependency, and it is the reason this app is not a mainstream podcast player. Audiobookshelf is a server you run, and Absorb is a client for it. The feature list shows how deep that integration goes. Real-time sync of progress, library changes and series updates via socket.io, so the phone and the server agree without a manual refresh.

There is also a server admin feature, letting you manage users, backups and podcasts from the app itself, which is unusual for a client and useful if the server is on hardware you control but on a network you reach only from your phone.

The authentication story is the one to look at if your server is behind a reverse proxy. Custom headers let you add custom HTTP headers for reverse proxy setups, and OIDC or SSO login is supported alongside standard auth. Both of those exist because a self-hosted server is very often behind a proxy that does its own authentication.

Metadata is enriched from outside the server. Audnexus metadata gives enriched book covers, descriptions and series info, and there is a feature that discovers upcoming books in a series via Audible's catalog, so you know what is coming next. Audible ratings let you see star ratings from Audible on your books. And the podcast support, with chaptered podcasts and rich HTML descriptions, is what makes the client work for audiobooks and podcasts through the same server.

## The car, the home screen and the things that are still Android-only

The last group of features is about the contexts in which an audiobook gets played, and it is where the platform differences show.

Android Auto and Apple CarPlay are both supported, for browsing and listening from your car. There is also a car mode with a large-button driving UI for use without Android Auto, which is a sensible fallback for a head unit that supports neither.

If you are using the GitHub version on Android Auto, there is a configuration step. You open the Android Auto settings on your phone, tap Version at the bottom repeatedly to enable Developer mode, tap the three-dot menu in the top right and select Developer settings, and enable Unknown sources. The reason is given plainly: this is required because Absorb from GitHub is not distributed through Google Play's production track. The same restriction does not apply to a build from the Play Store, because the store track is a different distribution path with its own signing.

Home screen widgets are supported on both platforms, a now-playing widget on Android and iOS. Chromecast playback is listed as Android only, and a fullscreen mode exists.

The platform split is not limited to the feature list, either. The Android directory and the ios/ directory sit side by side, and there is a fdroid/ directory for F-Droid packaging, plus fastlane/ for store submission, codemagic.yaml for the build pipeline, and a packages/ directory for shared Dart packages within the repository.

## Where the project sits among the Audiobookshelf clients

There are not many Audiobookshelf clients, and the ones that exist split along predictable lines.

The web interface that ships with the server works everywhere, needs no installation, and is the obvious default. Its limitation is that it is a web page, so it has no home screen widget, no car integration in the way a native app has, and its offline behaviour is whatever the browser's cache gives you. Absorb's offline playback downloads books, which is a real difference for someone on a train.

The other category is the native player that is not tied to a server at all, the kind of app that syncs a library from a service. Those work without any self-hosting, and that is their advantage. Absorb deliberately does not offer that, and the requirement of an audiobookshelf server is the price of the deep server integration, including the socket.io real-time sync and the server admin features that a service-backed player has no equivalent of.

For a user already running Audiobookshelf, the practical comparison comes down to the playback experience and the release model. The card-based player is a differentiator, and so is the availability of a build for your exact configuration, since you can take the alpha if you want the newest fixes and the store build if you want stability.

One thing to weigh is that the app is young and moving quickly. The version numbers with build suffixes, the alpha tracks, and the explicit statement about AI-assisted development all point the same way: this is a project in motion, and the documentation is honest about it in a way that helps you calibrate your expectations.

## Conclusion

Adopt Absorb if you run your own Audiobookshelf server and want a mobile client that feels like a native app on both Android and iOS rather than a web interface wrapped in a browser. Skip it if you need a podcast app that does not depend on a self-hosted server, or if you need a guaranteed feature parity between the two platforms, because the documentation states some features remain Android-only or in progress on iOS. Verify first which release track you want, since the App Store and Google Play production tracks match GitHub full releases while the alpha tracks are far more frequent and less polished, and check that your server is reachable and your Android version is 7.0 or newer, or iOS 16.

## FAQ

### What does Absorb need to run?

An audiobookshelf server, which is self-hosted, and Android 7.0 or newer or iOS 16 or newer. The app connects to your server for library, progress and podcast data, and synchronises in real time over socket.io.

### How do I install Absorb?

From GitHub releases, through Obtainium, from Google Play open testing, from the App Store, or through the iOS TestFlight track. GitHub pre-releases are the alpha track, GitHub full releases are the beta and stable track, and the store production releases match those full releases.

### Can I use Absorb with a server behind a reverse proxy?

Yes. There is support for custom HTTP headers for reverse proxy setups, and OIDC or SSO login alongside standard auth. If you are using the GitHub build on Android Auto you also need to enable unknown sources in the Android Auto developer settings, because that build is not distributed through the Play Store production track.

## Sources

- [License: GPL-3.0](https://github.com/pounat/absorb/blob/main/LICENSE)
- [pounat/absorb on GitHub](https://github.com/pounat/absorb)
- [Project website](https://github.com/pounat/absorb/releases)
- [README](https://github.com/pounat/absorb/blob/main/README.md)
- [Releases](https://github.com/pounat/absorb/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/pounat-absorb
