IReader is a novel reader whose content comes from plugins
Free and open source novel reader for Android and Desktop.
At a glance
- What is it?
- IReader is a free and open source reader for novels, light novels and web novels on Android and on the desktop, and its content model is the interesting part. Instead of shipping a catalogue, it loads book sources as extensions and JavaScript plugins, including LNReader sources and imported Legado sources, and it has no ads, no tracking and no in-app default repository.
- Who is it for?
- IReader fits a reader who wants an ad free, track free app that can follow sources other apps have dropped, and it fits a developer who wants to write a source plugin rather than an entire client, since the source and plugin APIs are separate packages in the repository.
- Can I use it commercially?
- Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 3 days ago.
- What is it written in?
- Mainly Kotlin, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 23, 2026, and from our analysis. They are not legal advice.
Editorial analysis
One codebase, two very different form factors
IReader is described as a powerful open-source reader app for Android and Desktop, for light novels, web novels and ebooks, and the positioning is that it is free and open source with no ads, no tracking and no data collection. The two platforms are not the same product. The Android build is distributed as an APK from the GitHub releases page, requires Android 7.0 or higher, and the reasons the project gives for that route are worth reading, because they are the reasons people actually use sideloaded APKs for a reader. No Google Play restrictions, always the latest features first, direct APK installation and no region locks. The desktop build covers Windows, macOS and Linux and adds things a phone cannot do well, with AI powered text to speech, larger screen optimization, keyboard shortcuts and multi-window support. The text to speech is powered by Piper, and the repository carries a directory named after the Coqui space in Hugging Face.
The content model is a plugin model
The feature that separates IReader from a normal reader is multi-source support, where novels are accessed from multiple sources via extensions and JavaScript plugins. The consequence for the user is that the app is a client and the catalogue is something you install. Two source ecosystems are supported. LNReader sources are the recommended path, and the setup is a repository rather than a single file, since you go to Settings, then Repository, tap the add icon, choose Quick Add Popular Repo, pick LNReader, and then save and refresh the remote sources in the Source screen. Legado sources are supported too, imported from the popular Chinese reader through the More, Community, Legado Sources path, where you enter a source URL or paste JSON directly and select which sources to import. Imported sources appear in the list immediately, so the import is a copy operation rather than a registration step.
No default repository, and that changes the setup
There is one line in the quick start that changes what you have to do on a first run, and it is a note rather than a step. IReader no longer supports the in-app default repository, and you must add repositories manually in Settings. For a user who is used to an app that works immediately, that is the first friction point, and it is worth knowing before you install. The storage side has a similar choice. By default, LNReader sources are saved to the app cache, which needs no permissions at all, and if you want them in external storage for easier access you disable the Saved Sources to Cache option in Settings, General, and grant the storage permission when prompted. The default is the more private and less convenient option, and the setting is the switch between them. There is also documentation for adding repositories, with a separate guide for the extension repository, and the extension projects live in their own repository, so the source ecosystem is maintained outside the app itself.
Reading features, and the ones that matter day to day
The rest of the feature list covers the parts of a reader that are easy to overlook until you are without them. Offline reading means downloading chapters and reading without an internet connection, which is the feature that turns a catalogue client into something you keep. Smart search runs across multiple sources at once, so a title you half remember can be looked for in every source you have installed rather than one at a time. Library management is a separate concern from reading, with categories, filters and custom collections so a long list of tracked series stays navigable. Customizable themes cover dark mode, custom themes and full UI customization, and the README is explicit that every aspect of the reading experience can be adjusted, from fonts and spacing to colours, themes and gestures. The keyword list at the end of the README names the intended reader precisely, with a reader app, a novel reader app, a light novel reader, a web novel reader and a tachiyomi alternative, which tells you the ancestry of the architecture.
A Compose multiplatform project with its own plugin APIs
The top level tree shows a large multiplatform project, and a few directory names explain the whole design. There is an android/ directory and a desktop/ directory for the two shipped platforms, and an iosApp/ directory for the iOS work. Then there are the layers, with core-utils/, domain/, data/ and presentation/ holding the shared code, and the interesting ones being source-api/ and plugin-api/, which are the contracts that a source plugin and an extension implement, plus source-runtime-js/ and kotlin-js-store/, which is the Kotlin to JavaScript compilation layer that lets a source be written in Kotlin and run as JavaScript. There are also metadata/ for the catalogues, i18n/ for the translations, supabase/ for the backend, benchmark/ and plans/ for performance work, home/ for the home screen, and a test_local_novel/ fixture. The build is Gradle with a settings file and a settings-gradle.lockfile, and there is a .maestro/ directory, which is a UI test runner, and a compose_stability_config.conf, which is the Compose compiler stability configuration for a large Compose codebase.
Distribution outside the store
The publishing setup is unusually wide, and it says something about the audience. The APK comes from the GitHub releases page, and the releases are named with a build suffix, with v2.0.26-patch2 published on 2026-09-14, v2.0.26-patch1 on 2026-09-10 and v2.0.26 on 2026-09-07, so a patch can be published without bumping the minor version. There is a .fdroidignore file, which means the project is aware of the F-Droid packaging rules and has chosen what to exclude, and an altstore-source.json, which is the manifest format for AltStore, the alternative app store for iOS sideloading. fastlane/ is there for the release automation, codemagic.yaml for the CI builds, and renovate.json for dependency updates, which is the tool that keeps the Android and JavaScript dependency trees current. The web presence is hosted on Netlify at ireaderorg.netlify.app, and the translations run through Weblate, so a community can localise the app without touching the code.
The iOS module exists but has no maintainer
One section of the README is unusual and worth reading carefully. The project is looking for an iOS developer to help wire the iOS module to the main app. The groundwork is done, the iOS module exists and the core components are ready, and only the final integration work remains, and the reason given is that a developer who started that work cannot continue because they do not have access to a Mac. The README also notes that the app can leverage the existing sources since they are compiled to Native and JavaScript, which makes the integration straightforward. That is an unusually specific and honest job posting, and it tells you something about the state of the project, which is a functioning Android and desktop app with an iOS port waiting for someone to finish it. The acknowledgements give the other half of the picture, thanking LNReader for maintaining the plugins, Tachiyomi for the architectural inspiration, and Piper for the text to speech engine, with the licence being Apache 2.0 and the last push on 2026-10-18.
Editorial conclusion
IReader fits a reader who wants an ad free, track free app that can follow sources other apps have dropped, and it fits a developer who wants to write a source plugin rather than an entire client, since the source and plugin APIs are separate packages in the repository. It does not fit someone who expects a curated catalogue with licensed content, because the sources are community supplied and you bring your own, and it does not fit anyone who wants the same build on iOS today, since that integration is explicitly unfinished and waiting for a maintainer. Before you install it, read the note that the in-app default repository is no longer supported and that you must add a repository by hand, and check where your sources are stored, since the default is the app cache and moving them to external storage is a setting you have to change.
Frequently asked questions
What is IReader?
It is a free and open source reader app for novels, light novels and web novels, built with Kotlin and Jetpack Compose, running on Android and on Windows, macOS and Linux, with no ads, no tracking and no data collection.
Where do IReader's books come from?
From sources loaded as extensions and JavaScript plugins rather than a bundled catalogue. LNReader sources are added through the repository settings with the Quick Add Popular Repo option, and Legado sources are imported from a URL or pasted JSON under More, Community, Legado Sources.
Do I need to add a repository manually?
Yes. IReader no longer supports the in-app default repository, so you have to add repositories yourself in Settings before any sources appear, and the LNReader sources are then refreshed from the Source screen.
Can IReader read books offline?
Yes, you can download chapters and read them without an internet connection. The desktop build also adds AI powered text to speech powered by Piper, along with larger screen optimization, keyboard shortcuts and multi-window support.
Is there an iOS version of IReader?
Not yet. The iOS module exists and the core components are ready, but the final integration is unfinished and the project is looking for a developer with iOS and macOS experience to complete it.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/ireaderorg-ireader)Was this useful?