Looks like the collision detection is missing and the cloth just intersects itself?

Spot on, but why don’t you go implement a solution for the famously trivial problem of cloth self-intersection (and make it still work on my shitty phone).