BufferedStream.WriteByte had a surprising side effect through .NET 9: the call at its internal capacity boundary also called Flush() on the wrapped stream. The .NET 10 BufferedStream WriteByte behavior removes that implicit flush. Bytes can still move to the underlying stream when the buffer needs room, but that capacity boundary no longer becomes an accidental flush boundary.
That distinction matters when a custom stream, protocol adapter, compressor, or test double gives Flush() observable meaning. The application may still deliver the right bytes eventually while missing the side effect it previously got at a particular point.
Why .NET 10 BufferedStream WriteByte changed
Microsoft documents this as a .NET 10 behavioral change. WriteByte used to differ from the other BufferedStream.Write methods by flushing the underlying stream when a byte write reached its capacity boundary. .NET 10 removes that inconsistency.
This is stable behavior in .NET 10 LTS, not a preview feature. I verified the sample with SDK 10.0.303 and the 10.0.11 runtime, alongside runtime 9.0.18 for the old contract.






