Problems with Serial communication

The Serial library uses a buffer of 64 bytes, so your 30 bytes should be no problem.

As soon as Serial.available() returns a value (the number of received bytes in the buffer) the recption of data is still going on. If you process it right away, you are processing data that is still being received.