Neo4j uses a fork of VisJS. They call it NeoVis. We didn't go that route because vis-network is tightly coupled and has a lot of calls to the browser window reference which doesn't work in a WebWorker environment. So simulations end up blocking the main thread.