Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

Blank lines in a fenced code block inside a custom tag render as `<!---->`

Chiusa Adatta ai principianti
#683 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

@auraseb ci sta già lavorando.

Dal 17/10/2026.

  • #684 di @auraseb — aperta

Valutazione

Difficoltà
2/5
Tempo stimato
1-3 ore
Idoneità per principianti
82/100
Tipo di issue
Bug
Chiarezza
Specificata chiaramente
Stato di attività
Attiva
Stack tecnologico
markdown, react, typescript
Ambito
content, frontend

Direzione di ricerca

Inizia da packages/streamdown/lib/preprocess-custom-tags.ts e riproduci il problema utilizzando gli esempi statici e di streaming forniti. Aggiorna la gestione di \n\n in modo che il contenuto dei blocchi di codice venga preservato mentre i tag personalizzati rimangano protetti dalla divisione in blocchi. Verifica che le righe vuote all’interno dei blocchi di codice vengano renderizzate normalmente, anche mentre il tag è ancora aperto.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

What happens

When a tag listed in allowedTags wraps multi-line content that contains a fenced code block, every blank line inside the code block is shown as the literal text <!----> in the rendered code. The same happens while streaming, when the tag is not closed yet.

What should happen

The code block should keep its blank lines and show exactly the code that was written.

Minimal repro

<Streamdown allowedTags={{ note: [] }} mode="static">
  {"<note>\n```js\nconst a = 1;\n\nconst b = 2;\n```\n</note>"}
</Streamdown>

The code block renders three lines: const a = 1;, <!---->, const b = 2;.

Calling the preprocessor directly shows the cause:

preprocessCustomTags("<note>\n```js\na\n\nb\n```\n</note>", ["note"]);
// "<note>\n\n```js\na\n<!---->\nb\n```\n\n</note>\n\n"

Root cause

preprocessCustomTags (packages/streamdown/lib/preprocess-custom-tags.ts) replaces every \n\n in a custom tag body with \n<!---->\n so the tag is not split into separate blocks. The replacement does not skip fenced code, where an HTML comment is not markup but literal text. A blank line inside a fence cannot end the surrounding HTML block anyway, so it does not need the placeholder.

Lingua principale
TypeScript
Stelle
5.7k
Fork
313
Merge medio
3g 19h
PR unite (30g)
27

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di vercel/streamdown

Tutte le issue di vercel/streamdown

Issue simili

Altre issue su TypeScript

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.