Serial.readString loses middle of string

Hi all,
I'm pretty well versed in Arduino and haven't had to resort to a forum since Google is pretty good. I recently ran into an issue that has me pretty perplexed and I can't seem to figure it out.

The project:
I am controlling LED animations VIA Arduino Uno. I have an ESP8266 chip that will be sending serial commands on which animations to turn on/off. While setting up the Uno, I have a simple string sent via serial to turn the animation on/off. When everything is on and running I get the full string from Serial no problem. When I turn the animations off and I'm running through the loop without driving anything, my string will miss characters when I call serial.readString. It is never the same character(s) and nothing I have tried to do seems to fix this. I am testing this by USB serial monitor window. Once I know i am receiving ok I can hook it up to my ESP chip.

I know I can get around the issue by sending one character in a string and that should work, but I want to know why this is happening and how to fix it. I plan to build off this later and send more information via serial that can't be just one character, so I would like to know how to fix this. I don't use serial communication all that much, and it's usually pretty basic so any help/knowledge would be appreciated.

simplified version of the code

Libraries used:
neopixelbus
elapsedMillis

void loop() {
    checkserial();

    if(animationon==true and poweron==true){
        runanimation();
    }
}


void checkserial(){

   if(Serial.available() >0) {
        String req;
        req = Serial.readString();

        Serial.println(req);  //debug to see what string was received

           //interpret the string and change booleans as needed
   }
}

Your if(Serial.available() >0) is outside loop()
You also have a function checkserial that we can't see.

Please post complete code.

Oops, forgot to add in the checkserial() funtion heading when I copied and pasted. Serial.readString() is in the checkserial() function.

All the relevant code is posted (out of the 800+ lines). The rest is just animations for LEDs which all works fine with the Serial.readString()

The only time I start to lose characters is when I am in loop() when all the animations or power are off. it is then just checking booleans to see if the animations are on yet and calling checkserial() every loop iteration waiting for a serial command to turn the animations back on.

And your animation takes 30 seconds to run so no wonder you will miss characters.

Just joking but it shows that you should post your complete code.