Does replication treat bitfields as they are

If I make 8 bit fields for bools in the same class and Mark them as replicated will ue4 send 8bits on network or will it send 8x8=64 bits on the network and then upon receival store them back into bit field?

I dug through the source code and it looks like this is the code that serializes your bit/bool field for replicating:

bool UBoolProperty::NetSerializeItem( FArchive& Ar, UPackageMap* Map, void* Data, TArray<uint8> * MetaData ) const
{
	check(FieldSize != 0);
	uint8* ByteValue = (uint8*)Data + ByteOffset;
	uint8 Value = ((*ByteValue & FieldMask)!=0);
	Ar.SerializeBits( &Value, 1 );
	*ByteValue = ((*ByteValue) & ~FieldMask) | (Value ? ByteMask : 0);
	return true;
}

It appears to be converting the bit to a byte before replicating it. However, when it calls SerializeBits it is sending 1 as the length. In SerializeBits, we have the following code:

if( LengthBits == 1 )
{
	((uint8*)Dest)[0] = 0;
	if( Buffer[Pos>>3] & Shift(Pos&7) )
	((uint8*)Dest)[0] |= 0x01;
	Pos++;
}

Based on this I am going to guess that if it tries to replicate all 8 of your bit fields at once, they will get packed together into one byte. However, if only one of the bit values changes in a replication cycle it is still possible that your bit value will be padded out to a full byte (or possibly even 4 bytes).