I built a boid simulation with Blazor that allows you to toggle the three rules, as well some other options. Check it out here.
Notably, you can switch between rendering in JS, or through Blazor’s API, with significant performance effects. (Spoilers: JS is way faster.)