)]}'
{
  "commit": "ac2db9cfeaf69c5064739e0d477ef8cb9c19cd35",
  "tree": "cdd8e7d227dffcc4e2642e0692cb79199fe98b30",
  "parents": [
    "772218bd15455e9481a50c0d791ee2e0a70d5ba0"
  ],
  "author": {
    "name": "Elijah Okoroh",
    "email": "okorohelijah@google.com",
    "time": "Tue Oct 13 18:52:59 2026 -0700"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Wed Oct 14 01:52:59 2026 +0000"
  },
  "message": "[image_picker_ios] Require Flutter 3.47 / iOS 15 and drop deprecated kUTType code paths (#13224)\n\nWith Xcode 27 the `xcode analyze` step of `Mac_arm64 ios_platform_tests` fails on image_picker_ios:\n\n```\nFLTImagePickerImageUtil.m:132:37: error: \u0027kUTTypeGIF\u0027 is deprecated: first deprecated in iOS 15.0 - Use UTTypeGIF or UTType.gif (swift) instead. [-Werror,-Wdeprecated-declarations]\n  132 |     gifTypeIdentifier \u003d (NSString *)kUTTypeGIF;\n```\n\nStaging run on Xcode 27 (27A266a): https://ci.chromium.org/b/8668491298933206513\n\n`kUTTypeGIF` is only referenced in the `else` branch of an `if (@available(iOS 14.0, *))` check (added in #10848), so it never runs on iOS 14+. The compiler still has to compile that branch though, and Xcode 27 only supports deployment targets of iOS 15 and up, so the plugin is now always built with `-target …-ios15.0` and the reference trips `-Wdeprecated-declarations`, which `xcode analyze` treats as an error. The build stops at the first failing file; `FLTImagePickerPhotoAssetUtil.m` has the same pattern, and `FLTImagePickerPlugin.m` uses `kUTTypeImage` / `kUTTypeMovie` unconditionally.\n\nFlutter 3.47 dropped iOS 13 and 14, so rather than keep those code paths alive this raises the package minimum to Flutter 3.47 / Dart 3.13 and iOS 15 (podspec and `Package.swift`), and deletes the iOS 13 branches: `UTTypeGIF`, `UTTypeImage` and `UTTypeMovie` are used directly. Clients on older Flutter stay on the previous version through `pub`, so this is a patch bump, same as #10231 did for iOS 13. The remaining `@available(iOS 13/14, *)` checks in `FLTImagePickerPlugin.m` are now dead too; I left them alone since that file is being rewritten in Swift in #13235 and they can go there.\n\nAlso updates the app-facing `image_picker` README\u0027s support table to iOS 15 (with a `## NEXT` entry, no version bump), the same way #10470 did for iOS 13.\n\nVerified on Xcode 27 (with the earlier, fallback-preserving version of this change): `xcode analyze`, `xcode analyze deprecation` and the native tests pass for image_picker_ios — https://ci.chromium.org/b/8668086845504323249 (shard 3 of a staging replay; the remaining `native test` failure in that build is in_app_purchase_storekit, https://github.com/flutter/flutter/issues/194285).\n\nPart of https://github.com/flutter/flutter/issues/194019\n\n## Pre-Review Checklist\n\nTest exemption: native-only change with no behaviour change; the existing GIF tests in `RunnerTests/ImageUtilTests.swift` and `RunnerTests/PhotoAssetUtilTests.swift` already exercise both call sites.\n\n[^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.",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "e9a1234843251239dbbb24e24437ff51de43f689",
      "old_mode": 33188,
      "old_path": "packages/image_picker/image_picker/CHANGELOG.md",
      "new_id": "656a3a9059f9d2ac7517a84dc7c1355b7aeb9dff",
      "new_mode": 33188,
      "new_path": "packages/image_picker/image_picker/CHANGELOG.md"
    },
    {
      "type": "modify",
      "old_id": "533b5949e70cb2e7b3efdd22d077c3a4df08f914",
      "old_mode": 33261,
      "old_path": "packages/image_picker/image_picker/README.md",
      "new_id": "4dac791a9e52d46016ac2c97ce7ae90076036b44",
      "new_mode": 33261,
      "new_path": "packages/image_picker/image_picker/README.md"
    },
    {
      "type": "modify",
      "old_id": "efa043a3effa2e68fcbcb50419248de4ec19fcc3",
      "old_mode": 33188,
      "old_path": "packages/image_picker/image_picker_ios/CHANGELOG.md",
      "new_id": "1e0e3d6a5688188f2ea3143c1f24645415c609ae",
      "new_mode": 33188,
      "new_path": "packages/image_picker/image_picker_ios/CHANGELOG.md"
    },
    {
      "type": "modify",
      "old_id": "55f2a87f74d263bd44fb7da2d412965ee954156b",
      "old_mode": 33188,
      "old_path": "packages/image_picker/image_picker_ios/ios/image_picker_ios.podspec",
      "new_id": "7a9c223d07f93b8172da536290cfca879e1d7af1",
      "new_mode": 33188,
      "new_path": "packages/image_picker/image_picker_ios/ios/image_picker_ios.podspec"
    },
    {
      "type": "modify",
      "old_id": "18bb3bb92aeb78b9f788de8031f278913ee82b64",
      "old_mode": 33188,
      "old_path": "packages/image_picker/image_picker_ios/ios/image_picker_ios/Package.swift",
      "new_id": "15afb7a8d5a3d2723e865137a376f05274eaa2fc",
      "new_mode": 33188,
      "new_path": "packages/image_picker/image_picker_ios/ios/image_picker_ios/Package.swift"
    },
    {
      "type": "modify",
      "old_id": "7c9a6f75ef2bbf89669343d6759fbc542fc9d1b3",
      "old_mode": 33188,
      "old_path": "packages/image_picker/image_picker_ios/ios/image_picker_ios/Sources/image_picker_ios/FLTImagePickerImageUtil.m",
      "new_id": "4a821a81a4c126706ba4a1bdf56816343a7369f2",
      "new_mode": 33188,
      "new_path": "packages/image_picker/image_picker_ios/ios/image_picker_ios/Sources/image_picker_ios/FLTImagePickerImageUtil.m"
    },
    {
      "type": "modify",
      "old_id": "1bb7b4f8aa67ccf527e5862f3e3205ffc8271cad",
      "old_mode": 33188,
      "old_path": "packages/image_picker/image_picker_ios/ios/image_picker_ios/Sources/image_picker_ios/FLTImagePickerPhotoAssetUtil.m",
      "new_id": "a23478b7a91af4258bdfe18cc0af2656e774ac0c",
      "new_mode": 33188,
      "new_path": "packages/image_picker/image_picker_ios/ios/image_picker_ios/Sources/image_picker_ios/FLTImagePickerPhotoAssetUtil.m"
    },
    {
      "type": "modify",
      "old_id": "97c7ecac617589d8c977e5a493b4e698ea03bde7",
      "old_mode": 33188,
      "old_path": "packages/image_picker/image_picker_ios/ios/image_picker_ios/Sources/image_picker_ios/FLTImagePickerPlugin.m",
      "new_id": "6116b69996f5c4d32d8f3f8b117b60bca3648171",
      "new_mode": 33188,
      "new_path": "packages/image_picker/image_picker_ios/ios/image_picker_ios/Sources/image_picker_ios/FLTImagePickerPlugin.m"
    },
    {
      "type": "modify",
      "old_id": "4eeb6f183842f01b795ddcfe05fffd58cd8297df",
      "old_mode": 33188,
      "old_path": "packages/image_picker/image_picker_ios/lib/image_picker_ios.dart",
      "new_id": "4efcb0a276b522d81ad7a7ad847aeae4fcfc72f6",
      "new_mode": 33188,
      "new_path": "packages/image_picker/image_picker_ios/lib/image_picker_ios.dart"
    },
    {
      "type": "modify",
      "old_id": "380dfb03033a8f483c94283e58f5bcb686a3f10e",
      "old_mode": 33261,
      "old_path": "packages/image_picker/image_picker_ios/pubspec.yaml",
      "new_id": "df71e825301dcfb380dd744f0c10bd6fc364c7fa",
      "new_mode": 33261,
      "new_path": "packages/image_picker/image_picker_ios/pubspec.yaml"
    }
  ]
}
