You even mentioning FPS means you don’t know much of anything about optimization.
Given that, there’s proabably a thoudand things experience can teach you to get better performance…
The tip on using the new engine version isn’t bad. They did indeed allow foliage and nanite to work together. Wouldn’t call it great, but it is an improvement.
For the rest, just follow any oprimization guide. Once you are done with one, find and follow another. It takes 4 or 5 different iterations before you get anywhere.
For the foliage itself, there is probably also a billion things you could do to reduce the load on the model side and on the material side unless you made your own models and you knew what you were doing.
For starters, you probably want to enable early z pass for masked materials, because unless you have a billion drawcalls your performance is already really “epic” bad…