vercel / vercel/streamdown

Remend partial markdown can sometimes have FOUM

Open
#539 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bug
Dominant language
TypeScript
Stars
5.6k
Forks
302
Avg merge
3d 19h
Merged PRs (30d)
14

Description

Bug Description

When streaming, markdown can arrive in chunks remend can't be sure how to complete. Currently there is no way to handle that and the result is small flashes of un-styled markdown.
Two examples:

  1. my name is ** - will return literal ** but the next char that will arrive will make it bold thus a flashing **.
  2. - item\n - will return the same text and a - will be shown until the next character that will make it a list

I think there should be a way to identify those cases (optional?) and maybe even buffer until the parser can be sure if incomplete or not.
There are also tougher cases like tables (might need to wait longer to be sure if a table or not). Maybe provide built in handlers for those cases?

Steps to Reproduce

Call remend with the above text

Expected Behavior

Either buffer (drop the incomplete text until sure) or at least inform somehow there is ambiguous incomplete markdown.
Can be another option or some other way.

Actual Behavior

Completes only when 100% sure but does nothing when ambiguous

Code Sample

Streamdown Version

remend 1.3.0

React Version

Node.js Version

22.22.3

Browser(s)

Chrome

Operating System

Windows

Additional Context

No response

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

The issue names no files or tests; start by reproducing the remend 1.3.0 behavior with the bold-marker and list examples while tracing the relevant parser entry point. Done means ambiguous partial Markdown can be identified or buffered without flashes, with coverage for the reported streaming cases.

Written by the indexing model from the issue text.

Assessment

Tech stack
typescript
Domain
frontend
Issue type
Bug
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.