Premium

Streaming NDJSON Parser (Web Streams)

By FrontendAtlas Team · Updated Jan 30, 2026

Build an NDJSON streaming parser that reads chunked text and emits JSON objects line by line. Handle partial lines across chunks, ignore empty lines, and surface parse errors without crashing the stream. This mirrors real-time log ingestion and SSE pipelines.

What you’ll build / What this tests

This premium javascript coding focuses on Streaming NDJSON Parser (Web Streams). You’ll apply backpressure and ndjson thinking with hard level constraints. The prompt emphasizes Build an NDJSON streaming parser that reads chunked text and emits JSON objects line by line.….

Learning goals

  • Translate the prompt into a clear javascript API signature and return shape.
  • Apply backpressure, ndjson, parsing techniques to implement streaming ndjson parser (web streams).
  • Handle hard edge cases without sacrificing readability.
  • Reason about time/space complexity and trade-offs in javascript.

Key decisions to discuss

  • Define the exact input/output contract before coding.
  • Prioritize predictable edge-case handling over micro-optimizations.

Evaluation rubric

  • Correctness: covers required behaviors and edge cases.
  • Clarity: readable structure and predictable control flow.
  • Complexity: avoids unnecessary work for large inputs.
  • API discipline: no mutation of inputs; returns expected shape.
  • Testability: solution is easy to unit test.

Constraints / Requirements

  • Avoid prototype pitfalls when reading object keys.
  • Handle empty or missing inputs without throwing errors.
  • Keep runtime close to linear time where possible.
  • Prefer a pure function: no side effects beyond the return value.

Mini snippet (usage only)

// Example usage
const stream = /* streaming ndjson parser (web streams) input */;
const onError = /* config */;
const result = await parseNDJSON(stream, onError);
console.log(result);

// Edge case check
const empty = stream && onError ?? null;
const fallback = await parseNDJSON(stream, onError);
console.log(fallback);

// Expected: describe output shape, not the implementation
// (no solution code in preview)

Common pitfalls

  • Mutating inputs instead of returning a new value.
  • Skipping edge cases like empty input, duplicates, or nulls.
  • Overlooking time complexity for large inputs.

Related questions

Upgrade to FrontendAtlas Premium to unlock this challenge. Already upgraded? Sign in to continue.