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
- Verify the served marker JSON includes an integer 'sequence'.
- Match server and client framework versions.
- Do not customize component marker generation; use IComponentRenderMode + the framework renderer.
- 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
- Avoid JSON.stringify replacers that omit numeric fields.
- Pin framework versions.
- Inspect served marker JSON when debugging.
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
- descriptor must be defined when using a descriptor.
- Error parsing the sequence '${sequence}' for component '${JS
- assembly must be defined when using a descriptor.
- typeName must be defined when using a descriptor.
- Found malformed component comment at ${candidateStart.textCo
AI-assisted analysis of dotnet/aspnetcore@294cab2f9b (2026-08-06).
Data as JSON: /api/errors/4947a272146c3770.
Report an issue: GitHub.