Skip to content

perry/system: native iOS share sheet (UIActivityViewController) #917

Closed

Description

@proggeramlug

Request: Expose a system-share API from perry/system that wraps UIActivityViewController on iOS (with parallel implementations on macOS/Android where applicable).

Proposed TS signature:

```ts
// perry/system
export function shareText(text: string, title?: string): void;
export function shareUrl(url: string, title?: string): void;
// Optional: structured shape with multiple items
export function shareItems(items: { text?: string; url?: string; title?: string }): void;
```

Why it's needed: apps frequently want to "share my invitation code" / "share this listing" via the OS share sheet so the user can pick Messages / Mail / WhatsApp / etc. Today this isn't possible — Wishare's invite-friends screen has to fall back to `clipboardWrite` and a manual paste, which is a worse UX than every native social/marketplace app the user is comparing against.

Platform mapping:

Platform Native API
iOS / iPadOS / Mac Catalyst `UIActivityViewController`
macOS (AppKit) `NSSharingServicePicker`
Android `Intent.ACTION_SEND` chooser
HarmonyOS / tvOS / visionOS / watchOS / Linux / Windows / Web no-op or platform-native equivalent

Context: Audited docs.perryts.com — no `shareSheet`, `shareText`, or `UIActivityViewController` references. `openURL`, `clipboardRead/Write`, `imagePickerPick` are documented, but a one-shot share to the OS picker is the obvious next neighbour.

Happy to take a stab at the iOS implementation if useful; the perry-ui-ios crate already has objc2 wired in.

Activity

  1. added 3 commits that reference this issue on May 18, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew capability or improvement

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions