Skip to content

[pigeon] Adds Native Interop FFI codec serialization for NS types - #13616

Merged
auto-submit[bot] merged 3 commits into
flutter:mainfrom
tarrinneal:pigeon-swift-nsarray-nsdictionary
Nov 11, 2026
Merged

auto-submit[bot] merged 3 commits into
flutter:mainfrom
tarrinneal:pigeon-swift-nsarray-nsdictionary

Conversation

@tarrinneal

@tarrinneal tarrinneal commented Nov 11, 2026 •

Copy link
Copy Markdown
Contributor

Adds support for serializing Foundation / Objective-C values (Foundation.Data, NSData, NSArray, and NSDictionary) as Any? in the Swift Native Interop (useFfi: true) hybrid codec.

Previously, PigeonInteropWriter.writeValue only handled Swift Array, Dictionary, and [UInt8] values (via PigeonInteropList, PigeonInteropMap, and exact [UInt8].self), hitting preconditionFailure when Apple Foundation APIs (such as UserDefaults) returned NSArray, NSDictionary, or Data/NSData inside untyped Any values or collections. Adding Foundation.Data, NSArray, and NSDictionary fallbacks matches FlutterStandardWriter behavior and uses qualified Foundation.Data so it does not collide with user-defined Pigeon classes named Data.

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

@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 updates Pigeon to version 30.0.1, adding Native Interop FFI codec serialization support for Swift Data, NSArray, and NSDictionary values, along with corresponding integration and generator tests. Feedback on the changes highlights a Swift compilation error in the generated and generator code where NSDictionary is decomposed in a for-in loop; casting the dictionary to [AnyHashable: Any] is suggested to resolve this issue.

@tarrinneal tarrinneal changed the title [pigeon] Fixes Native Interop FFI codec serialization NS types [pigeon] Adds Native Interop FFI codec serialization for NS types Nov 11, 2026

@dkwingsmt dkwingsmt 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 with a nit.

@tarrinneal tarrinneal added the autosubmit Merge PR when tree becomes green via auto submit App label Nov 11, 2026
@auto-submit
auto-submit Bot merged commit e900712 into flutter:main Nov 11, 2026
12 checks passed
opensource-fork-sync Bot pushed a commit to cla7aye15I4nd/opensource-flutter__flutter that referenced this pull request Nov 11, 2026
…er#196381)

flutter/packages@08faf64...653628e

2026-11-11 [email protected] Roll Flutter from
fffd8c2 to b98afb5 (31 revisions) (flutter/packages#13623)
2026-11-11 [email protected] [material_ui] Document how to
programmatically clear DropdownMenu selection (flutter/packages#13266)
2026-11-11 [email protected] [pigeon] Fix basePath resolution when
paths share a string prefix with basePath (flutter/packages#13342)
2026-11-11 [email protected]
[cupertino_ui] Fix CupertinoSheetRoute throwing when a drag ends during
a pending relayout (flutter/packages#13316)
2026-11-11 [email protected] [shared_preferences] Updates Pigeon to
30.0.1 to support multi-engine registration and deregistration.
(flutter/packages#13617)
2026-11-11 [email protected]
[vector_graphics] Catch any throwable in useHtmlRenderObject() and cache
HTML fallback (flutter/packages#13545)
2026-11-11 [email protected] [cupertino_ui]
Include selectionHandleColor in NoDefaultCupertinoThemeData equality
(flutter/packages#13450)
2026-11-11 [email protected] [flutter_svg] Remove failed async loads
from Cache._pending (flutter/packages#13604)
2026-11-11 [email protected] [pigeon] Adds Native Interop FFI codec
serialization for NS types (flutter/packages#13616)
2026-11-10 [email protected] [pigeon] Support multi-engine Native
Interop registration and instance-aware unregistration
(flutter/packages#13576)
2026-11-10 [email protected] [image_picker_ios] Convert the
iOS example app and UI tests to Swift (flutter/packages#13570)
2026-11-10 [email protected]
[cupertino_ui] Localize CupertinoActionSheet semantics label
(flutter/packages#13377)
2026-11-10 [email protected] [camera_android]
Fix stopVideoRecording returning JPEG when takePicture runs during
recording (flutter/packages#13070)
2026-11-10 [email protected] [google_sign_in_android] Rename keep.xml
to google_sign_in_keep.xml (flutter/packages#13475)
2026-11-10 [email protected] [web_benchmarks] Fix benchmark stalling
when only repainting views that are dirty (flutter/packages#13089)
2026-11-10 [email protected] Roll Flutter from
d463821 to fffd8c2 (21 revisions) (flutter/packages#13614)

If this roll has caused a breakage, revert this CL and set the roller
to dry run mode 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 CICD Run CI/CD p: pigeon platform-ios platform-macos

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants