I have actually put this off a while.
the best way is to have an IK chain set up like you would for rigging the animation.
Performance is important, definitely, but you won’t really see a difference between a 20 bone mesh and a 4 bone mesh unless you are doing something really bad.
You need 1 bone as the root. Also so you can place a socket for grabbing.
You need the chain of the limb. 4 bones top, 4 bones bottom should be plenty.
you need the bones for the string.
luckily, it always bends in 2 straight lines so it only needs 3 bones.
The center being the one that you add a socket to that the other hand will then grab.
Once that’s done you make an anim BP for it.
You only really need one variable, the offset of the string pull.
You can use a fabrik node or any other node that generates a chain to get the bones to offset based on the position of the one on the center of the string, which you only translate locally (on its y probably).
For the release I would use an animation in additive to add a bit of string bounce.
you can’t just set the offset to 0. You could however adjust the release via an finterpto, allowing you to arbitrarily control the release.
remember to test with limited fps at 30 as well as non limited to make sure it all works the same in any condition.