This exists, I know nothing about it but the docs look nice: https://jimp-dev.github.io/jimp/. Unless you're actually letting users crop images in-app, I'd also consider using something like Cloudflare's image cdn to serve the sizes you want. Curious what you're running into with sharp though, especially in node env.