dotnet/aspnetcore · error

sequence must be defined when using a descriptor.

Error message

sequence must be defined when using a descriptor.

What it means

Thrown by validateServerComponentPayload (ComponentDescriptorDiscovery.ts:258) when a server/auto marker's payload has 'sequence' === undefined. The sequence orders component markers so the server reconciles them deterministically; a missing sequence means the marker JSON is incomplete.

Source

Thrown at src/Components/Web.JS/src/Services/ComponentDescriptorDiscovery.ts:258

  validateWebAssemblyComponentPayload(payload);

  return {
    ...payload,
    uniqueId: nextUniqueDescriptorId++,
    start,
    end,
  };
}

function validateServerComponentPayload(payload: ServerMarkerData) {
  const { descriptor, sequence } = payload;

  if (!descriptor) {
    throw new Error('descriptor must be defined when using a descriptor.');
  }

  if (sequence === undefined) {
    throw new Error('sequence must be defined when using a descriptor.');
  }

  if (!Number.isInteger(sequence)) {
    throw new Error(`Error parsing the sequence '${sequence}' for component '${JSON.stringify(payload)}'`);
  }
}

function validateWebAssemblyComponentPayload(payload: WebAssemblyMarkerData) {
  const { assembly, typeName } = payload;

  if (!assembly) {
    throw new Error('assembly must be defined when using a descriptor.');
  }

  if (!typeName) {
    throw new Error('typeName must be defined when using a descriptor.');
  }

View on GitHub (pinned to 294cab2f9b)

Solutions

  1. Verify the served marker JSON includes an integer 'sequence'.
  2. Match server and client framework versions.
  3. Do not customize component marker generation; use IComponentRenderMode + the framework renderer.
  4. Remove any JSON-transforming middleware on Blazor HTML responses.
Defensive patterns

Strategy: validation

Validate before calling

function hasSequence(payload: any): boolean {
  return payload && payload.sequence !== undefined && payload.sequence !== null;
}

Type guard

function isServerMarkerData(payload: any): payload is { descriptor: string; sequence: number } {
  return typeof payload?.descriptor === 'string'
    && payload.sequence !== undefined
    && Number.isInteger(payload.sequence);
}

Prevention

When it happens

Trigger: A server/auto marker JSON that omits the 'sequence' field; generated by a serializer configured to omit undefined values, or a truncated/rewritten marker.

Common situations: JSON.stringify with a replacer that drops numeric fields; version mismatch; a custom marker emitter that forgot sequence; middleware rewriting JSON.

Related errors


AI-assisted analysis of dotnet/aspnetcore@294cab2f9b (2026-08-06). Data as JSON: /api/errors/4947a272146c3770. Report an issue: GitHub.