Skip to content

Conversation

@okorohelijah
Copy link
Contributor

@okorohelijah okorohelijah commented Dec 3, 2025

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

Copy link

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

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
Copy link
Contributor

@LouiseHsu LouiseHsu left a comment

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 10687576+bparrishMines@users.noreply.github.com [pigeon]
Fixes crash that occurs when an object that is removed from the instance
manager calls to Dart (flutter/packages#10552)
2025-12-04 10687576+bparrishMines@users.noreply.github.com [pigeon]
Fixes error from constructor parameter sharing name with attached field
for a ProxyApi (flutter/packages#10541)
2025-12-04 okorohelijah@google.com fix[image_picker_ios]: Prevent
transcoding on video selection (flutter/packages#10559)
2025-12-04 10687576+bparrishMines@users.noreply.github.com
[webview_flutter_wkwebview] Fixes crash when running
`WKNavigationResponse` tests on Xcode 26 (flutter/packages#10316)
2025-12-03 15619084+vashworth@users.noreply.github.com Redistribute iOS
CODEOWNERS (flutter/packages#10520)
2025-12-03 stuartmorgan@google.com [url_launcher] Update for UIScene
compatibility (flutter/packages#10549)
2025-12-03 engine-flutter-autoroll@skia.org Roll Flutter from
e274574 to 69d8710 (5 revisions) (flutter/packages#10558)
2025-12-03 engine-flutter-autoroll@skia.org 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 flutter-ecosystem@google.com 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

2 participants