Here is how I do it in my application: Keep a pure logical shape, and draw a new sf::shape based on that, whenever it changes.
A logical shape is an instance of a class that has an std::vector of sf::vector2f to keep track of the vertices, and methods to add and delete vertices.