P0300 replaced spark plugs and the code came back.

2016 Subaru crosstrek 4 cylinder. I had a P0300 code. At first I thought it was the spark plugs because they were overdue anyways. I replaced the plugs, and cleared the code with the OB2 scanner, car was fine for about 200 miles then the code just came back P0300 with no other codes I can’t for the life of me figure out, took it to a mechanic they said they are not sure maybe ignition coil boots car is shakey and a little rough at low rpm’s.

Example when coming to a stop and I get below 1k rpm’s it stutters a tiny bit with car moving. And it also sputters and vibrates a lot more than usual when idling at a complete stop but it doesn’t always do it. Sometimes it’s driving completely normal others times it’s just randomly misfiring. Any help would be greatly appreciated.