The original prototype used react-image-crop for the cropping library. We decided that the zoom-crop interaction was more important, so we went with react-easy-crop instead. It seemed like it would be easier to add freeform crop to the zoom-crop library than add zoom crop to the freeform library.
After we landed the feature, we found a bug involving rotation+zoom. I gave it a go and quickly realized that fixing that would fundamentally change how the zoom-crop mechanism worked.