# Planned breaking changes in ImageProcessing 2.x concerning Active Storage

**URL:** <https://discuss.rubyonrails.org/t/planned-breaking-changes-in-imageprocessing-2-x-concerning-active-storage/91049>\
**Category:** rubyonrails-core\
**Tags:** activestorage\
**Created:** [April 26, 2026, 9:45pm UTC](https://discuss.rubyonrails.org/t/planned-breaking-changes-in-imageprocessing-2-x-concerning-active-storage/91049 "2026-04-26T21:45:30Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![jankomarohnic](https://sea2.discourse-cdn.com/rubyonrails/user_avatar/discuss.rubyonrails.org/jankomarohnic/32/811_2.png) [@jankomarohnic](https://discuss.rubyonrails.org/u/jankomarohnic)\
**Post date:** [April 26, 2026, 9:45pm UTC](https://discuss.rubyonrails.org/t/planned-breaking-changes-in-imageprocessing-2-x-concerning-active-storage/91049/1 "2026-04-26T21:45:31Z")

</div>

I’m planning to release ImageProcessing 2.x soon, which would bring a few breaking changes, and I wanted to coordinate how to make it as smooth as possible for Active Storage.

The primary breaking change would be moving `mini_magick` and `ruby-vips` from hard to soft dependencies. Currently, ImageProcessing gem depends on both processors, which doesn’t make a lot of sense, as you’re most likely to use only one. Controlling dependencies here has been [requested](https://github.com/janko/image_processing/issues/137) in the past, so ImageProcessing 2.x would require manually adding `mini_magick` and/or `ruby-vips` to the Gemfile.

Another breaking change would be [blocking unfuzzed loaders](https://github.com/janko/image_processing/issues/105) by default in libvips processor. Basically, this means libvips would refuse to process formats that are more likely to carry security vulnerabilities because of lack of testing. So, JPEG, PNG, WebP, TIFF, GIF, HEIF/AVIF would continue being accepted, but SVG, JPEG-XL, RAW, OpenSlide, NIFTI, FITS, MATLAB, Analyze6 would now be rejected. I think the only one that’s likely to cause breakage in Rails apps is the SVG rejection.

I’m also considering removing the autoloading of `ImageProcessing::MiniMagick` and `ImageProcessing::Vips` classes, because it leads to loading processor code at the time of processing, instead of at boot time. For example, it seems to me Active Storage currently loads `image_processing/mini_magick` + `mini_magick` and `image_processing/vips` + `ruby-vips` on-demand – when the first variant is being processed – which isn’t good for performance / memory. However, I’m not yet 100% sure it’s worth making this breaking change.

I wanted to give the core team a heads-up and maybe hear your thoughts, concerns or suggestions if you have any. Otherwise I plan to start sending PRs to prepare Active Storage for these changes.

---

<div class="post-metadata">

**Author:** ![joshuay03](https://sea2.discourse-cdn.com/rubyonrails/user_avatar/discuss.rubyonrails.org/joshuay03/32/10601_2.png) [@joshuay03](https://discuss.rubyonrails.org/u/joshuay03)\
**Post date:** [May 5, 2026, 10:37am UTC](https://discuss.rubyonrails.org/t/planned-breaking-changes-in-imageprocessing-2-x-concerning-active-storage/91049/2 "2026-05-05T10:37:05Z")

</div>

Thanks for the heads-up. Please send the PRs our way and we’ll discuss there.
