PackageTrack
Sign in Get early access

image_cropper

A Flutter plugin for Android, iOS and Web supports cropping images

12.2.1 437K downloads/mo #557 most downloaded on pub.dev hnvn/flutter_image_cropper

What this package is like to depend on

Last release 4 months ago

15 Apr 2026

Release timing varies

gaps range from 2 weeks to 6 months

Nearly every release is documented

notes for 59 of 59 stable releases

Nothing withdrawn

no release was ever pulled

8 years old

63 releases · first in 2018

8 releases in the last 12 months

see the full history below

Release timeline

63 releases · Jun 2018 to Apr 2026
2019 2020 2021 2022 2023 2024 2025 2026
Release Pre-release

Releases

latest 60 of 63
  1. 12.2.1 15 Apr 2026
    Release notes

    upgrade libs in example

    Open source →
    Release notes
    • iOS: upgrade TOCropViewController to v3.1.2
    Open source →
  2. 12.2.0 07 Apr 2026
    Release notes
    • fix issue on iOS: Lexical or Preprocessor Issue (Xcode): 'TOCropViewController/TOCropViewConstants.h' file not found
    Open source →
  3. 12.1.1 29 Mar 2026
    Release notes
    • fix issue of fixed (locked) aspect ratio on iOS
    Open source →
  4. 12.1.0 26 Mar 2026
    Release notes

    fix bug and bump version

    Open source →
    Release notes
    • fix issue of TOCropViewController on Swift Package
    Open source →
  5. 12.0.0 22 Mar 2026
    Release notes
    • iOS:
    • upgrade TOCropViewController to v3.1.1 (new Liquid Glass UI)
    • support UISceneDelegate #608
    • Android: fix Android release build compile error #599
    Open source →
  6. 11.0.0 25 Sep 2025
    Release notes
    • iOS: upgrade TOCropViewController to v2.8.0

    BREAKING CHANGES:

    • iOS: upgrade development target to 12
    • Flutter constraint to minimum of 3.28 (due to constraint of image_cropper_platform_interface)
    Open source →
  7. 10.0.0 17 Sep 2025
    Release notes
    • Android: upgrade uCrop 2.2.11, it fully supports edge-to-edge now
    • Android: statusBarColor is deprecated and no longer in use, introduce new properties statusBarLight and navBarLight

    BREAKING CHANGES:

    • Android: compileSdkVersion is set to 36
    • Android: if you previously followed the migration guide in v9.0.0 to work around the edge-to-edge issue, please revert those changes (remove file values-v35/styles.xml)
    Open source →
  8. 10.0.0+1 17 Sep 2025
    Release notes
    • correct README document for Android (removed workaround note because uCrop now fully supports edge-to-edge feature)
    Open source →
  9. 9.1.0 02 Apr 2025
    Release notes
    • Web: fix bug on Flutter WASM #567
    • Android: fix deprecated API #546
    Open source →
  10. 9.0.0 30 Jan 2025
    Release notes
    • iOS: add support for Swift Package Manager (PR #555)
    • Android: refactored edge-to-edge workaround solution by removing related code from the plugin and integrating it directly into the app.

    Migration guide

    • Add follwowing code to file android/app/src/main/res/values/styles.xml
    <resources>
      ....
      <style name="Ucrop.CropTheme" parent="Theme.AppCompat.Light.NoActionBar"/> <!--add this line-->
    </resources>
    
    • Create new file android/app/src/main/res/values-v35/styles.xml and add the following code to it:
    <?xml version="1.0" encoding="utf-8"?>
    <resources>
      <style name="Ucrop.CropTheme" parent="Theme.AppCompat.Light.NoActionBar">
          <item name="android:windowOptOutEdgeToEdgeEnforcement">true</item>
      </style>
    </resources>
    
    • Modify the decleration of UCropActivity in your AndroidManifest.xml (if you have not modified it yet)
    <activity
      android:name="com.yalantis.ucrop.UCropActivity"
      android:screenOrientation="portrait"
      android:theme="@style/Ucrop.CropTheme"/> <!--this line is updated-->
    
    Open source →
  11. 8.1.0 17 Dec 2024
    Release notes
    • Android: workaround edge-to-adge issue on Android 15

      Before:

        <activity
          android:name="com.yalantis.ucrop.UCropActivity"
          android:screenOrientation="portrait"
          android:theme="@style/Theme.AppCompat.Light.NoActionBar"/>
      

      After:

        <activity
          android:name="com.yalantis.ucrop.UCropActivity"
          android:screenOrientation="portrait"
          android:theme="@style/Ucrop.CropTheme"/> <!-- This line is updated -->
      
    Open source →
  12. 8.0.2 16 Aug 2024
    Release notes
    • Android: fix deprecated API
    • web: correct constraints of flutter version (>=3.22.0)
    Open source →
  13. 8.0.1 31 Jul 2024
    Release notes
    • use >=0.5.0 < 2.0.0 version range for package:web
    Open source →
  14. 8.0.0 31 Jul 2024
    Release notes
    • upgrade web dependency
    • relax flutter version constraints
    • iOS: Prefer presented view controller if preset to Root view controller
    • iOS: introduce iOSUiSettings.embedInNavigationController to support add2app environments
    Open source →
  15. 7.1.0 29 Jun 2024
    Release notes
    • upgrade platform_interface dependency
    • increase Dart SDK constraints (>=3.3.0)
    • Android: Removes references to Flutter v1 android embedding classes.
    Open source →
  16. 7.0.5 13 Jun 2024
    Release notes
    • Web: support config type of output image (jpg or png)
    Open source →
  17. 7.0.4 08 Jun 2024
    Release notes
    • Web: update dependencies
    Open source →
  18. 7.0.3 07 Jun 2024
    Release notes
    • Web: improve cropper UI
    Open source →
  19. 7.0.2 07 Jun 2024
    Release notes
    • Web:
      • fix bug cropper not get correct container's size
      • improve cropper UI
    • correct document
    Open source →
  20. 7.0.1 06 Jun 2024
    Release notes
    • correct document
    Open source →
  21. 7.0.0 06 Jun 2024
    Release notes
    • refactor plugin to use new JS library, cropperjs instead of croppie
    • support Wasm
    • support customize CropAspectRatioPreset

    BREAKING CHANGES:

    - **WebUiSettings**: is totally re-implemented, please see plugin document for more details
    - **cropImage()**: move `cropStyle` and `aspectRatioPresets` into `AndroidUiSettings` and `IOUiSettings` for sake of clean and clarity.
    
    **Migration guides**:
    
    ***Before***:
    ```
    File croppedFile = await ImageCropper().cropImage(
      sourcePath: imageFile.path,
      cropStyle: CropStyle.circle,
      aspectRatioPresets: [
        CropAspectRatioPreset.square,
        CropAspectRatioPreset.original,
      ],
      uiSettings: [
        AndroidUiSettings(
          toolbarTitle: 'Cropper',
        ),
        IOSUiSettings(
          title: 'Cropper',
        ),
      ],
    );
    ```
    
    ***After***:
    ```
    File croppedFile = await ImageCropper().cropImage(
      sourcePath: imageFile.path,
      uiSettings: [
        AndroidUiSettings(
          toolbarTitle: 'Cropper',
          cropStyle: CropStyle.circle,
          aspectRatioPresets: [
            CropAspectRatioPreset.square,
            CropAspectRatioPreset.original,
          ],
        ),
        IOSUiSettings(
          title: 'Cropper',
          cropStyle: CropStyle.circle,
          aspectRatioPresets: [
            CropAspectRatioPreset.square,
            CropAspectRatioPreset.original,
          ],
        ),
      ],
    );
    ```
    
    **Web integration**:
    
    ***Before***:
    ```
    <head>
        ....
    
        <!-- Croppie -->
        <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/croppie/2.6.5/croppie.css" />
        <script defer src="https://cdnjs.cloudflare.com/ajax/libs/exif-js/2.3.0/exif.js"></script>
        <script src="https://cdnjs.cloudflare.com/ajax/libs/croppie/2.6.5/croppie.min.js"></script>
    
        ....
    </head>
    ```
    
    ***After***:
    ```
    <head>
        ....
    
        <!-- cropperjs -->
        <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/cropperjs/1.6.2/cropper.css" />
        <script src="https://cdnjs.cloudflare.com/ajax/libs/cropperjs/1.6.2/cropper.min.js"></script>
    
        ....
    </head>
    ```
    
    Open source →
  22. 6.0.0 29 Apr 2024
    Release notes
    • Android: upgrade uCrop to v2.2.9
    • iOS: upgrade TOCropViewController to v2.7.3
    • web: upgrade js to v0.7.1
    Open source →
  23. 5.0.1 26 Nov 2023
    Release notes
    • Android: improve compression quality
    Open source →
  24. 5.0.0 10 Jun 2023
    Release notes
    • upgrade http to v1.0.0
    Open source →
  25. 4.0.1 14 May 2023
    Release notes
    • refactor CHANGELOG
    Open source →
  26. 4.0.0 14 May 2023
    Release notes
    • Android: support namespace, Gradle 8
    Open source →
  27. 3.0.3 24 Apr 2023
    Release notes
    • iOS: bump ios minimum version to 11
    Open source →
  28. 3.0.2 24 Mar 2023
    Release notes
    • Web: fix web translation issue
    Open source →
  29. 3.0.1 31 Oct 2022
    Release notes
    • Android: replace jcenter by mavenCentral
    • Web: support localization
    Open source →
  30. 3.0.0 09 Aug 2022
    Release notes
    • BREAKING CHANGE: move all setting models to platform interface packages.
    • Separate Javascript codes from WebSettings model (so there's no need to use conditional import to config Web UI now)

    MIGRATION GUIDE

    BEFORE

    WebUiSettings(
      boundary: Boundary(
        width: 520,
        height: 520,
      ),
      viewPort: ViewPort(width: 480, height: 480, type: 'circle'),
    )
    

    AFTER

    WebUiSettings(
      boundary: const CroppieBoundary(
        width: 520,
        height: 520,
      ),
      viewPort: const CroppieViewPort(width: 480, height: 480, type: 'circle'),
    )
    
    Open source →
  31. 2.0.3 17 May 2022
    Release notes
    • correct importing JS library
    Open source →
  32. 2.0.2 06 May 2022
    Release notes
    • update document
    Open source →
  33. 2.0.1 05 May 2022
    Release notes
    • fix missing pubspec config on web
    Open source →
  34. 2.0.0 28 Apr 2022
    Release notes
    • Support Web

    BREAKING CHANGE:

    • change result data type from File to CroppedFile.
    • remove androidUiSettings and iosUiSettings parameter in cropImage method, they are replaced by uiSettings

    MIGRATION GUIDE

    BEFORE

    File croppedFile = await ImageCropper().cropImage(
          sourcePath: imageFile.path,
          androidUiSettings: AndroidUiSettings(
              toolbarTitle: 'Cropper',
              toolbarColor: Colors.deepOrange,
              toolbarWidgetColor: Colors.white,
              initAspectRatio: CropAspectRatioPreset.original,
              lockAspectRatio: false),
          iosUiSettings: IOSUiSettings(
            minimumAspectRatio: 1.0,
          )
        );
    

    AFTER

    CroppedFile croppedFile = await ImageCropper().cropImage(
          sourcePath: imageFile.path,
          uiSettings: [
            AndroidUiSettings(
                toolbarTitle: 'Cropper',
                toolbarColor: Colors.deepOrange,
                toolbarWidgetColor: Colors.white,
                initAspectRatio: CropAspectRatioPreset.original,
                lockAspectRatio: false),
            IOSUiSettings(
              title: 'Cropper',
            )
          ],
        );
    
    Open source →
  35. 2.0.0-beta.3 01 Apr 2022 pre-release
    Release notes
    • support rotate image on Web
    Open source →
  36. 2.0.0-beta.2 27 Mar 2022 pre-release
    Release notes
    • correct missing README document about Web support.
    Open source →
  37. 2.0.0-beta.1 27 Mar 2022 pre-release
    Release notes
    • BREAKING CHANGE: update result models to support web, replace File by CroppedFile
    Open source →
  38. 2.0.0-beta 19 Feb 2022 pre-release
    Release notes
    • migrate to federated plugins
    • BREAKING CHANGE: remove androidUiSettings and iosUiSettings, they are replaced by uiSettings for sake of supporting multiple platforms in future.

    MIGRATION GUIDE

    BEFORE

    File croppedFile = await ImageCropper().cropImage(
          sourcePath: imageFile.path,
          androidUiSettings: AndroidUiSettings(
              toolbarTitle: 'Cropper',
              toolbarColor: Colors.deepOrange,
              toolbarWidgetColor: Colors.white,
              initAspectRatio: CropAspectRatioPreset.original,
              lockAspectRatio: false),
          iosUiSettings: IOSUiSettings(
            minimumAspectRatio: 1.0,
          )
        );
    

    AFTER

    File croppedFile = await ImageCropper().cropImage(
          sourcePath: imageFile.path,
          uiSettings: [
            AndroidUiSettings(
                toolbarTitle: 'Cropper',
                toolbarColor: Colors.deepOrange,
                toolbarWidgetColor: Colors.white,
                initAspectRatio: CropAspectRatioPreset.original,
                lockAspectRatio: false),
            IOSUiSettings(
              title: 'Cropper',
            )
          ],
        );
    
    Open source →
  39. 1.5.1 01 Apr 2022
    Release notes
    • update README to introduce Web support experiment
    Open source →
  40. 1.5.0 19 Feb 2022
    Release notes
    • Upgrade uCrop to v2.2.8
    • Upgrade TOCropViewController to v2.6.1
    • PR: #309, #229, #294, #258, #251
    • BREAKING CHANGE: change cropImage() to instance method
    Open source →
  41. 1.4.1 20 Jun 2021
    Release notes
    • Upgrade uCrop to v2.2.7
    Open source →
  42. 1.4.0 07 Mar 2021
    Release notes
    • Upgrade TOCropViewController to v2.6.0
    • Migrate to nullsafety
    Open source →
  43. 1.3.1 31 Aug 2020
    Release notes
    • Upgrade uCrop to v2.2.6
    • Fix bug: image compress file format (png)
    Open source →
  44. 1.3.0 09 Aug 2020
    Release notes
    • Update pubspec to new format
    • Upgrade TOCropViewController to v2.5.4
    Open source →
  45. 1.2.3 08 Jun 2020
    Release notes
    • Android: fix bug
    Open source →
  46. 1.2.2 12 May 2020
    Release notes
    • Android: upgrade uCrop to v2.2.5
    • BREAKING CHANGE: remove activeWidgetColor from AndroidUiSettings
    Open source →
  47. 1.2.1 01 Feb 2020
    Release notes
    • iOS: add more UI customization properties (title, initRect)
    • update Flutter version constraint (>= v1.12.13)
    Open source →
  48. 1.2.0 19 Jan 2020
    Release notes
    • Android: migrate to embedding v2
    Open source →
  49. 1.1.2 18 Dec 2019
    Release notes
    • Android: fix bug crashing on Flutter v1.12.13
    Open source →
  50. 1.1.1 30 Nov 2019
    Release notes
    • Android: upgrade gradle version
    • iOS: remove static_framework Pod configuration, upgrade TOCropViewController to 2.5.2
    Open source →
  51. 1.1.0 29 Sep 2019
    Release notes
    • BIG UPDATES: supports UI customization on both of Android and iOS, supports more image compress format and quality.
    • BREAKING CHANGE: ratioX and ratioY are replaced by aspectRatio, circleShape is replaced by cropStyle, removed toolbarTitle and toolbarColor (these properties are moved into AndroidUiSettings)
    • iOS: upgrade native library (TOCropViewController v2.5.1)
    • Android: upgrade native library (uCrop v2.2.4)
    Open source →
  52. 1.0.2 25 May 2019
    Release notes
    • iOS: upgrade native library
    • Android: fix bug #40
    Open source →
  53. 1.0.1 15 Apr 2019
    Release notes
    • Android: migrate to AndroidX
    • upgrade native libraries
    Open source →
  54. 1.0.0 09 Feb 2019
    Release notes
    • Android: remove deprecated support libraries
    • Android: target version to 28
    Open source →
  55. 0.0.9 14 Nov 2018
    Release notes
    • clarify code document
    Open source →
  56. 0.0.8 12 Oct 2018
    Release notes
    • set default value for circleShape
    Open source →
  57. 0.0.7 10 Oct 2018
    Release notes
    • support circular cropping
    Open source →
  58. 0.0.6 29 Aug 2018
    Release notes
    • upgrade TOCropViewController dependency to v2.3.8
    Open source →
  59. 0.0.5 10 Aug 2018
    Release notes
    • re-config to support Dart2
    • fix bug: lock aspect ratio
    Open source →
  60. 0.0.4 06 Jul 2018
    Release notes
    • refactor: change toolbarColor type of int to Color
    Open source →

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive