generateObject validates a complete response against a Zod or JSON schema and returns a typed object. streamObject exposes partialObjectStream, whose element type is a deep partial of the schema: every property at every level is optional, because the object is being reconstructed from partial JSON as it arrives.
Rendering code therefore cannot assume any field exists, including fields the schema marks required, until the stream completes. Arrays grow element by element and the last element in a partial snapshot is frequently incomplete.
Read the final validated value from the object promise the result exposes, and use the partial stream only for progressive display. The other detail worth knowing is the output mode: the default expects a single object, while array output streams complete elements one at a time through elementStream, which is usually what you want for a list and avoids the half-built-element problem entirely. Enum and no-schema modes exist for classification and free-form JSON respectively.