Skip to content

fix[image_picker_ios]: Prevent transcoding on video selection - #10559

Merged
auto-submit[bot] merged 7 commits into
flutter:mainfrom
okorohelijah:fix_176355
Dec 4, 2025
Merged

auto-submit[bot] merged 7 commits into
flutter:mainfrom
okorohelijah:fix_176355

Conversation

@okorohelijah

@okorohelijah okorohelijah commented Dec 3, 2025 •

Copy link
Copy Markdown
Contributor

Fixes a severe performance regression where picking videos on iOS could take 10-30+ seconds. The delay was caused by PHPickerViewController defaulting to the Automatic asset representation mode, which triggered slow transcoding for formats like HEVC.

This change sets preferredAssetRepresentationMode to Current to provide the original file without conversion, significantly improving performance.

Fixes flutter/flutter#176355

Pre-Review Checklist

If you need help, consider asking for advice on the #hackers-new channel on Discord.

Note: The Flutter team is currently trialing the use of Gemini Code Assist for GitHub. Comments from the gemini-code-assist bot should not be taken as authoritative feedback from the Flutter team. If you find its comments useful you can update your code accordingly, but if you are unsure or disagree with the feedback, please feel free to wait for a Flutter team member's review for guidance on which automated comments should be addressed.

Footnotes

  1. Regular contributors who have demonstrated familiarity with the repository guidelines only need to comment if the PR is not auto-exempted by repo tooling. ↩ ↩2 ↩3

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request effectively addresses a significant performance regression on iOS by preventing unnecessary video transcoding during selection. The approach of setting preferredAssetRepresentationMode to Current is correct. The addition of a new unit test to verify this behavior is also a great practice. I have one suggestion to simplify the implementation by removing a redundant API availability check.

@okorohelijah okorohelijah changed the title fix(image_picker_ios): Prevent transcoding on video selection fix[image_picker_ios]: Prevent transcoding on video selection Dec 3, 2025

@LouiseHsu LouiseHsu left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!

@okorohelijah okorohelijah added the autosubmit Merge PR when tree becomes green via auto submit App label Dec 4, 2025
@auto-submit
auto-submit Bot merged commit 1905069 into flutter:main Dec 4, 2025
80 checks passed
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Dec 4, 2025
github-merge-queue Bot pushed a commit to flutter/flutter that referenced this pull request Dec 4, 2025
flutter/packages@8cb4903...d39e481

2025-12-04 [email protected] [pigeon]
Fixes crash that occurs when an object that is removed from the instance
manager calls to Dart (flutter/packages#10552)
2025-12-04 [email protected] [pigeon]
Fixes error from constructor parameter sharing name with attached field
for a ProxyApi (flutter/packages#10541)
2025-12-04 [email protected] fix[image_picker_ios]: Prevent
transcoding on video selection (flutter/packages#10559)
2025-12-04 [email protected]
[webview_flutter_wkwebview] Fixes crash when running
`WKNavigationResponse` tests on Xcode 26 (flutter/packages#10316)
2025-12-03 [email protected] Redistribute iOS
CODEOWNERS (flutter/packages#10520)
2025-12-03 [email protected] [url_launcher] Update for UIScene
compatibility (flutter/packages#10549)
2025-12-03 [email protected] Roll Flutter from
e274574 to 69d8710 (5 revisions) (flutter/packages#10558)
2025-12-03 [email protected] Roll Flutter from
5545bb3 to e274574 (17 revisions) (flutter/packages#10554)

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/flutter-packages-flutter-autoroll
Please CC [email protected] on the revert to ensure that a
human
is aware of the problem.

To file a bug in Flutter:
https://github.com/flutter/flutter/issues/new/choose

To report a problem with the AutoRoller itself, please file a bug:
https://issues.skia.org/issues/new?component=1389291&template=1850622

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
reidbaker pushed a commit to AbdeMohlbi/flutter that referenced this pull request Dec 10, 2025
…r#179451)

flutter/packages@8cb4903...d39e481

2025-12-04 [email protected] [pigeon]
Fixes crash that occurs when an object that is removed from the instance
manager calls to Dart (flutter/packages#10552)
2025-12-04 [email protected] [pigeon]
Fixes error from constructor parameter sharing name with attached field
for a ProxyApi (flutter/packages#10541)
2025-12-04 [email protected] fix[image_picker_ios]: Prevent
transcoding on video selection (flutter/packages#10559)
2025-12-04 [email protected]
[webview_flutter_wkwebview] Fixes crash when running
`WKNavigationResponse` tests on Xcode 26 (flutter/packages#10316)
2025-12-03 [email protected] Redistribute iOS
CODEOWNERS (flutter/packages#10520)
2025-12-03 [email protected] [url_launcher] Update for UIScene
compatibility (flutter/packages#10549)
2025-12-03 [email protected] Roll Flutter from
e274574 to 69d8710 (5 revisions) (flutter/packages#10558)
2025-12-03 [email protected] Roll Flutter from
5545bb3 to e274574 (17 revisions) (flutter/packages#10554)

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/flutter-packages-flutter-autoroll
Please CC [email protected] on the revert to ensure that a
human
is aware of the problem.

To file a bug in Flutter:
https://github.com/flutter/flutter/issues/new/choose

To report a problem with the AutoRoller itself, please file a bug:
https://issues.skia.org/issues/new?component=1389291&template=1850622

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
ivan-vanyusho pushed a commit to ivan-vanyusho/packages that referenced this pull request Jan 26, 2026
…r#10559)

Fixes a severe performance regression where picking videos on iOS could take 10-30+ seconds. The delay was caused by PHPickerViewController defaulting to the Automatic asset representation mode, which triggered slow transcoding for formats like HEVC.

This change sets preferredAssetRepresentationMode to Current to provide the original file without conversion, significantly improving performance.

Fixes flutter/flutter#176355

## Pre-Review Checklist

**Note**: The Flutter team is currently trialing the use of [Gemini Code Assist for GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code). Comments from the `gemini-code-assist` bot should not be taken as authoritative feedback from the Flutter team. If you find its comments useful you can update your code accordingly, but if you are unsure or disagree with the feedback, please feel free to wait for a Flutter team member's review for guidance on which automated comments should be addressed.

[^1]: Regular contributors who have demonstrated familiarity with the repository guidelines only need to comment if the PR is not auto-exempted by repo tooling.
@cachefulton

Copy link
Copy Markdown

Sorry to bug you on your closed pull request but I have been eagerly awaiting this code change. When will it be published to pub.dev?

@LouiseHsu

Copy link
Copy Markdown
Contributor

Sorry to bug you on your closed pull request but I have been eagerly awaiting this code change. When will it be published to pub.dev?

It should be available on pub.dev already! This change was for 0.8.13+3 https://pub.dev/packages/image_picker_ios/versions/

@cachefulton

Copy link
Copy Markdown

Oh! I have just been looking at the image_picker package. I now see that I was pulling the transitive dependency image_picker_ios 0.8.13+2. Flutter pub upgrade got me to 0.8.13+3. Thanks!

creatorpiyush pushed a commit to creatorpiyush/packages that referenced this pull request Jun 10, 2026
…r#10559)

Fixes a severe performance regression where picking videos on iOS could take 10-30+ seconds. The delay was caused by PHPickerViewController defaulting to the Automatic asset representation mode, which triggered slow transcoding for formats like HEVC.

This change sets preferredAssetRepresentationMode to Current to provide the original file without conversion, significantly improving performance.

Fixes flutter/flutter#176355

## Pre-Review Checklist

**Note**: The Flutter team is currently trialing the use of [Gemini Code Assist for GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code). Comments from the `gemini-code-assist` bot should not be taken as authoritative feedback from the Flutter team. If you find its comments useful you can update your code accordingly, but if you are unsure or disagree with the feedback, please feel free to wait for a Flutter team member's review for guidance on which automated comments should be addressed.

[^1]: Regular contributors who have demonstrated familiarity with the repository guidelines only need to comment if the PR is not auto-exempted by repo tooling.
Nakiha pushed a commit to Nakiha/VoidPlayer-Flutter that referenced this pull request Sep 28, 2026
flutter/packages@8cb4903...d39e481

2025-12-04 [email protected] [pigeon]
Fixes crash that occurs when an object that is removed from the instance
manager calls to Dart (flutter/packages#10552)
2025-12-04 [email protected] [pigeon]
Fixes error from constructor parameter sharing name with attached field
for a ProxyApi (flutter/packages#10541)
2025-12-04 [email protected] fix[image_picker_ios]: Prevent
transcoding on video selection (flutter/packages#10559)
2025-12-04 [email protected]
[webview_flutter_wkwebview] Fixes crash when running
`WKNavigationResponse` tests on Xcode 26 (flutter/packages#10316)
2025-12-03 [email protected] Redistribute iOS
CODEOWNERS (flutter/packages#10520)
2025-12-03 [email protected] [url_launcher] Update for UIScene
compatibility (flutter/packages#10549)
2025-12-03 [email protected] Roll Flutter from
e36d6dc to 8f08887 (5 revisions) (flutter/packages#10558)
2025-12-03 [email protected] Roll Flutter from
efa3b67 to e36d6dc (17 revisions) (flutter/packages#10554)

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/flutter-packages-flutter-autoroll
Please CC [email protected] on the revert to ensure that a
human
is aware of the problem.

To file a bug in Flutter:
https://github.com/flutter/flutter/issues/new/choose

To report a problem with the AutoRoller itself, please file a bug:
https://issues.skia.org/issues/new?component=1389291&template=1850622

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

autosubmit Merge PR when tree becomes green via auto submit App p: image_picker platform-ios

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[image_picker] Extremely slow video selection with MOV format on iOS devices and Simulator

3 participants