Skip to content

Merge some iOS and macOS plugin implementations #117941

@stuartmorgan-g

Description

@stuartmorgan-g

We have some plugins that have separate macOS and iOS plugin implementations only because at the time macOS support was added, the decision was that only Swift was officially supported for macOS (even though ObjC did and does work because of module interop) for simplicity of things like plugin templates. We wanted examples of plugins that followed our official recommendations, but the policy for iOS 1P plugins was to only use Obj-C.

Having them be separate now that we're allowing Swift iOS 1P plugins no longer serves any purpose, and is just overhead to maintaining two plugins. It's minimal overhead since the plugins in question are small and don't change frequently, but there's still no reason for it. Other benefits:

  • It would be good to have 1P examples of shared Swift plugins as that's expected to be a pretty common case in the ecosystem.
  • Adopting/demonstrating Allow directly sharing iOS and macOS plugin native code #115085 once it lands.
  • Eliminating the need for an eventual rewrite of existing iOS implementations in Swift (since we expect that in the long term most or all 1P plugin development will be in Swift).

Plugins to merge:

(cc @jmagman @hellohuanlin since this has come up in discussion, but I don't think we've filed it. It probably makes the most sense for me to do this since I'm familiar with some of the pitfalls in the mechanics of renaming a package for sharing.)

Metadata

Metadata

Labels

P2Important issues not at the top of the work listc: contributor-productivityTeam-specific productivity, code health, technical debt.p: path_providerPlugin that provides resolved paths to some platform directoriesp: shared_preferencesPlugin to read and write Shared Preferencespackageflutter/packages repository. See also p: labels.platform-iosiOS applications specificallyplatform-macBuilding on or for macOS specifically

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions