Droidrops

Droidrops support

Miniflux setup and sync troubleshooting

How to connect a Miniflux server, what a successful login does and does not confirm, and what to send when synchronization appears stuck.

Connect a Miniflux account

  1. In Droidrops, add a Miniflux account.
  2. Enter the service root, such as https://reader.example.org. Do not add /v1; Droidrops adds that API path.
  3. For an API key, leave Login blank and enter the key in Password. For HTTP Basic authentication, enter the Miniflux username and account password.
  4. Tap Validate. This checks authentication and identifies the Miniflux user; it does not confirm that feeds and articles have synced.

Large first imports

Droidrops imports a bounded batch of Miniflux entries at a time and automatically continues the import in subsequent sync jobs. The cursor is saved locally, so a later batch resumes from the last entry already imported. Both unread and read entries are included in a first import.

Use More → Preferences → Miniflux initial import batch to choose 500, 1,000, 2,000 (default), or 5,000 entries per batch. If Android reports that the app ran out of memory, lower this value and start another sync; the saved cursor lets the import resume. A higher value may reduce the number of batches but uses more memory.

If feeds or articles do not appear

  1. Open the Account tab and select the Miniflux account you intend to use. Then check the timeline and the Feeds tab; changing credentials or validating an account does not necessarily switch the currently selected account.
  2. Start one manual sync and note the time. Avoid repeatedly tapping refresh while it is still running.
  3. Check both the Feeds tab and the article timeline. A feed list can load separately from article entries.
  4. If nothing changes after a few minutes, record how long you waited and whether the sync indicator or notification remained active. Include the approximate number of feeds and unread/read entries in Miniflux, if known.

About the diagnostic log: it stays on the device. Recent builds record connector-specific sync stages and result counts. Miniflux entries include page cursors, server totals, and batch progress, but never article contents or credentials. Other remote account types record the resources they fetch, such as feeds, folders, articles, and read/star states. It does not log every successful API request or provide a live article counter. If a request is still pending, the last entry should identify the stage/page being requested. An empty log is not proof that the sync succeeded.

Tell a server problem from an app problem

A successful login only confirms that the server accepted the credentials. It does not prove that feed and entry requests completed. When possible, open the Miniflux site in a browser on the same device and check whether the same account can see its feeds and articles.

  • A connection timeout or ECONNREFUSED means the device could not establish a connection to that host and port. Check the address, HTTPS/reverse-proxy configuration, server availability, and firewall. It does not by itself identify whether the app or the server setup is at fault.
  • HTTP 401 or 403 points to rejected or insufficient credentials/permissions. Recheck the API key or username and password.
  • HTTP 404 can mean the base URL or API path is wrong. Enter the Miniflux service root, without /v1.
  • HTTP 5xx indicates that the server or a component in front of it returned a server error. Check the Miniflux and reverse-proxy logs.
  • If Miniflux works in the browser but Droidrops still fails, send the app version, timestamp, full diagnostic report, and relevant redacted server log lines. That gives enough evidence to investigate an app-side API or parsing problem.

These are clues, not definitive diagnoses: include the exact status or error text rather than guessing which side caused it.

Send a useful report

Open More → Diagnostic log. Review the entries, keep Hide server addresses on if you do not want to disclose your host, then choose one of these actions:

  • Email opens a draft addressed to droidrops@proton.me with the full diagnostic report attached. Review it and press Send in your mail app; Droidrops does not send it automatically.
  • Report on GitHub opens a prefilled issue. Long reports may not fit in the GitHub link; Droidrops copies the report to the clipboard so you can paste the remaining text into the issue.

If the log has no new entries, send the report anyway and add:

  • Droidrops version and Android version/device.
  • Miniflux version and authentication method (API key or username/password).
  • Approximate feed and article counts, when available.
  • When you started syncing, how long you waited, what the app displayed, and whether restarting or trying again changed anything.
  • Screenshots of the empty or loading screen, with private feed names hidden if needed.

Optional server-side details

If you administer the Miniflux server, check its logs around the time of the sync. With a Docker Compose deployment, a starting point is:

docker compose logs --since 15m miniflux

Share only the relevant lines and review them first. Remove passwords, API keys, authorization headers, private feed URLs, and any personal data. Never post credentials or an unredacted server log in a public issue.

Test coverage note

The 2.2.30 debug build was manually exercised on an Android 15 (API 35) emulator against Miniflux 2.3.4 using both API-key and HTTP Basic authentication. Tests covered account validation, a first sync, loading the feed/folder list, opening the timeline, refreshing, and opening an article. The test account had 31 feeds and 726 unread entries; no crash or OutOfMemoryError was observed. The app's 75 instrumented tests also passed on that emulator. This does not reproduce the reported hour-long sync or establish behavior with larger archives, other feed content, server configurations, or the tester's installed builds.