Large comic files (300+ MB CBR/CBZ) were causing 30-60 second load times because the entire file was downloaded to the mobile client before extraction could begin.
Changes
Uses new server-side /api/items/:id/comic-pages and /api/items/:id/comic-page/:page endpoints
Pages are extracted and cached on the server, then sent individually to the client
Preloads 2 pages ahead, 1 behind for smooth page turning
Falls back to client-side extraction for local/downloaded files (file already on device)
🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.
## 📋 Pull Request Information
**Original PR:** https://github.com/advplyr/audiobookshelf-app/pull/1809
**Author:** [@mattmanning](https://github.com/mattmanning)
**Created:** 2/21/2026
**Status:** 🔄 Open
**Base:** `master` ← **Head:** `fix/comic-performance`
---
### 📝 Commits (4)
- [`cbe77d2`](https://github.com/advplyr/audiobookshelf-app/commit/cbe77d277dc2220098daddfb2f04c9b90eff8828) perf: use server-side extraction for remote comic books
- [`29997d2`](https://github.com/advplyr/audiobookshelf-app/commit/29997d289dc3e7ee587478d1b129d2692e05bd97) fix: use full server URL for comic page images
- [`2cc2072`](https://github.com/advplyr/audiobookshelf-app/commit/2cc2072b70874e291092cb1fd48b0e4249686dfe) fix: use nativeHttp for server-side comic extraction on mobile
- [`bb5d354`](https://github.com/advplyr/audiobookshelf-app/commit/bb5d354d1b698bab8c157d46c9beee34c9458179) chore: remove debug toasts, keep console logs
### 📊 Changes
**1 file changed** (+161 additions, -6 deletions)
<details>
<summary>View changed files</summary>
📝 `components/readers/ComicReader.vue` (+161 -6)
</details>
### 📄 Description
## Summary
Large comic files (300+ MB CBR/CBZ) were causing 30-60 second load times because the entire file was downloaded to the mobile client before extraction could begin.
## Changes
- Uses new server-side `/api/items/:id/comic-pages` and `/api/items/:id/comic-page/:page` endpoints
- Pages are extracted and cached on the server, then sent individually to the client
- Preloads 2 pages ahead, 1 behind for smooth page turning
- Falls back to client-side extraction for local/downloaded files (file already on device)
## Dependencies
**Requires server PR:** advplyr/audiobookshelf#5078
The server PR adds the comic-pages and comic-page endpoints that this mobile app PR depends on. Both PRs need to be merged for the full fix.
## Testing
1. Merge server PR first (or test against a server with that PR applied)
2. Open a large CBR/CBZ comic from the server (not downloaded locally)
3. Pages should load quickly instead of waiting for full file download
4. Page navigation should be smooth with preloading
## Related
Fixes: advplyr/audiobookshelf#3505
---
<sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
📋 Pull Request Information
Original PR: https://github.com/advplyr/audiobookshelf-app/pull/1809
Author: @mattmanning
Created: 2/21/2026
Status: 🔄 Open
Base:
master← Head:fix/comic-performance📝 Commits (4)
cbe77d2perf: use server-side extraction for remote comic books29997d2fix: use full server URL for comic page images2cc2072fix: use nativeHttp for server-side comic extraction on mobilebb5d354chore: remove debug toasts, keep console logs📊 Changes
1 file changed (+161 additions, -6 deletions)
View changed files
📝
components/readers/ComicReader.vue(+161 -6)📄 Description
Summary
Large comic files (300+ MB CBR/CBZ) were causing 30-60 second load times because the entire file was downloaded to the mobile client before extraction could begin.
Changes
/api/items/:id/comic-pagesand/api/items/:id/comic-page/:pageendpointsDependencies
Requires server PR: advplyr/audiobookshelf#5078
The server PR adds the comic-pages and comic-page endpoints that this mobile app PR depends on. Both PRs need to be merged for the full fix.
Testing
Related
Fixes: advplyr/audiobookshelf#3505
🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.