Quilon runs on Windows, iOS, and Android. Each platform has its own clipboard APIs, background processing rules, and security models. Making them work together seamlessly was one of our biggest engineering challenges.
The Windows Challenge: Background Access
On Windows, Quilon is a native WinUI 3 / .NET app, which gives us full access to system APIs. The app runs in the system tray and monitors clipboard changes in real-time using native Win32 APIs.
The challenge? Detecting clipboard changes without polling. We use clipboard format listeners that notify us immediately when the clipboard contents change, keeping CPU usage near zero when idle.
The iOS Challenge: Background Restrictions
iOS is notoriously restrictive about background processing. Apps can't just run forever monitoring the clipboard — Apple designed it this way for battery life and privacy.
For launch, our iOS posture is deliberately foreground-first:
- Foreground-first sync: users open Quilon to pair, receive, and send reliably
- Explicit transfer actions: Core and Ops avoid pretending they can monitor the clipboard forever
- Extension claims deferred: Share Extension and Keyboard Extension claims stay out of launch copy until their production flows are proven
- Push wakeups deferred: APNs wakeups stay out of launch claims until signed-device delivery is proven
It's not as seamless as Windows, but it's the best possible experience within iOS's constraints — and it respects your battery.
The Android Challenge: Fragmentation
Android gives us more freedom than iOS, but comes with its own challenge: fragmentation. Different manufacturers modify Android differently, and background process handling varies wildly.
Samsung, Xiaomi, Huawei, OnePlus — each has aggressive battery optimization that kills background apps. We implemented:
- Foreground service with persistent notification
- Workarounds for manufacturer-specific battery optimizations
- Accessibility service option for clipboard monitoring
- Firebase Cloud Messaging is planned for push delivery, but not part of the launch claim until device evidence exists
Unified Protocol
Despite the platform differences, all Quilon clients speak the same protocol. Our WebSocket-based sync layer handles:
- Device authentication and pairing
- Encrypted payload transmission
- Presence detection (knowing which devices are online)
- Automatic reconnection and message queuing
This means a clip copied on Windows arrives on iOS and Android simultaneously, with the same encryption and the same format — whether it's text, an image, or a URL.
Image Handling Across Platforms
Images were particularly tricky. Each platform represents images differently:
- Windows uses DIB/DIBV5 formats in the clipboard
- iOS uses UIImage with various backing stores
- Android uses Bitmap with different color spaces
We normalize everything to PNG for transmission, then convert back to the native format on the receiving device. This ensures screenshots and images look identical everywhere.
Lessons Learned
Cross-platform development is hard, but not impossible. The key is understanding each platform's constraints and working within them, rather than fighting against them. Users don't care about technical limitations — they just want it to work.
With Quilon, we've made it work.