A heritage language is a language learned the same way as a native language, but it is thought of as being learned in an incomplete manner. There are different degrees to which someone can be a heritage speaker. This can range from having only passive knowledge (understanding) to very advanced fluency (passive and active).
For example, a person can grow up in a house where his or her parents speak only Ukrainian, but outside the home everybody else speaks English. If the only Ukrainian input this person gets is from his or her parents then, this speaker will most likely become a heritage speaker of Ukrainian.