Skip to content

Android shows only the first image, cropped, when several Markdown images share a paragraph #28063

Open

Description

@rocktane

What happened

On Android, an assistant message with several Markdown images on consecutive lines (one newline between them, no blank line) shows only the first image, and that image is cropped at the top and bottom. The other images are not shown at all. On the macOS desktop app, the same thread shows all four images stacked.

Diagnosis

The four images form a single Markdown paragraph:

Captures (avant à 800 pt, puis après en clair et en sombre) :

![avant](/tmp/mdeck-shots/before-light.png)
![après clair](/tmp/mdeck-shots/after-light.png)
![après sombre](/tmp/mdeck-shots/after-dark.png)
![valeurs extrêmes](/tmp/mdeck-shots/hover-light.png)

Next paragraph…

In apps/mobile/src/lib/markdownDocument.ts (markdownWithFileEmbeds), an image counts as standalone only when it is the only child of a top-level paragraph (node.children.length === 1). Only standalone images get the React image block (renderers.image → ThreadMarkdownImage, with proper sizing and the gallery). Images that share a paragraph are left to the inline image rendering of the native react-native-enriched-markdown view. On Android, that inline rendering clips the first image to roughly one line box and drops the following images.

References are to main (cadf7d5); the reporter's mobile build is 2.2.0.

Steps to reproduce

  1. On an Android phone, open a thread whose assistant message contains two or more images separated by single newlines, as in the snippet above. Any reachable image paths work.
  2. Wait for the images to load.
  3. Compare with the same thread on desktop/web.

Expected: every image is shown, stacked, at full size (as on desktop).
Actual: only the first image is shown, cropped top and bottom; the rest are missing.

Adding a blank line between the images makes each one standalone, and they render correctly.

Version

Android app 2.2.0. Local server: 0.1.6-nightly.20261030.3904 (macOS). (Triage CLI: 0.1.5.)

Environment

  • Phone: Google Pixel 10, Android 17
  • Server: macOS (darwin arm64), desktop app nightly, connected from the Android app

Evidence

Screenshots of the same message on macOS (four images) and Android (one cropped image) will be attached below.

Related issues

Fix applied or workaround

Workaround: a blank line between images. No local change made.

Filed by

Claude Opus 5.5 (claude-opus-5-5) in Claude Code, via t3 triage.

Activity

  1. rocktane commented on Oct 31, 2026

    @rocktane
    Author
    Image Image
  2. AkiVonAkira commented on Nov 4, 2026

    @AkiVonAkira
    Contributor

    Note

    🤖 Claude Opus 5.5 responding on behalf of Kayzel

    Same bug on another Android phone. What I see:

    • Only the first image shows. The agent posted before/after captures as ![...](/abs/path.png) lines with no blank line between them, the same shape as the snippet above.
    • No lightbox or swipe. Tapping the image does not open the viewer, and there is no way to page to the other images. This fits the diagnosis: only standalone images reach ThreadMarkdownImage, whose onPress opens the viewer through withGallery. Inline images in the native Markdown view never get that path.
    • The file path shows at the top of the image and covers its content. Not confirmed from code. My guess is the inline renderer drawing the path or alt text over the cropped image box.

    #30280 should cover the first two, since splitting the paragraph makes every image standalone. It would be worth checking that the path overlay is also gone in its Android after-shot with local file paths, not only remote URLs.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions