Overall, there are a few things everyone should avoid doing while building.
Here’s a few examples
Don’t use too much parts in one spot
If there are a lot of parts in a model, it will take an impact on performance. So I recommend that you union them or make them meshes by exporting as obj and importing back.
Don’t use too much decals in one spot.
Like the parts, decals too cause lag if there’s a lot of them.
Set the collisions of MeshParts to false unless you intend the player to step on it.
MeshParts are fast if used correctly, but if you have a lot of them with the collisions on, of course it’ll generate lag.
Don’t forget to anchor things!
This is a thing some people forget to do. Always anchor stuff unless you intend them to be moved. For instance, a car should not be anchored, while a restaurant should be anchored. The more unanchored models in your game, the slower the game will be.
And even still, you can use TweenService if you want anchored stuff to move.
Free models
You’ve probably heard of this at some point, but you should keep free models to a minimum.
A lot of free models in a game signifies that the developer is uncreative and that the game is low-quality.
Also, free models may have viruses that have spreading scripts. For those purposes, there are plugins such as Ro-Defender https://www.roblox.com/library/142273772/Ro-Defender-Plugin-v8-7
But I recommend you to try and build your own stuff, unless you can’t really build it.
Laziness and skill are two separate things.
Hope you avoid doing 5 of those aforementioned things. I personally avoid doing these. And my games so far aren’t lagging.
Unions usually have more poly count even when they aren’t too many parts, and if is overused it can lag the client side. Aside from that if the union is too big the colision could be affected.
There’s more threads about unions and how it should be better to use meshes since it loads faster and use less memory no matter how detail has compare to a union