I just checked this out, there are two calls, one for decoratives (which seems to add more each time you run it?) and one for entities. So for now I run both each time a chunk is generated:
local positions = {event.position}
surface.destroy_decoratives({area = event.area})
surface.regenerate_decorative(nil, positions)
surface.regenerate_entity(nil, positions)
I'm making more changes today probably, so I'll release this later today.