-

@ Terry Yiu
2025-02-23 15:20:19
# NOSTR SDK FOR APPLE PLATFORMS
## Progress Report # 2: Nov 2024 - Jan 2025
[Nostr SDK for Apple Platforms](https://github.com/nostr-sdk/nostr-sdk-ios) continued to make progress this quarter. I am still the sole part-time active developer and maintainer of Nostr SDK for Apple Platforms.
Implementations for a few NIPs were added or updated. The CI build pipeline was broken due to deprecated dependencies, which have since been fixed.
I pushed out a (controversial) [proposal](https://github.com/nostr-protocol/nips/pull/1770) to gracefully deprecate stringified JSON in favor of tags on user metadata kind 0 events to the NIPs repo as a pull request to improve consistency and reduce the complexity of reading and writing this commonly used kind. The SDK has become the first to [implement](https://github.com/nostr-sdk/nostr-sdk-ios/pull/212) with the hopes that others will follow.
We have had new external interest in the SDK from developers working on various Nostr clients:
- Damus has [copied the NIP-44 encryption implementation from the SDK](https://github.com/damus-io/damus/pull/2850/files#diff-5eb31bd8e6dc73d21bb3caef975a7f3508765e7f3ab01ecec545635ccb89d17c) for their use in [NIP-37 Draft Events](https://github.com/nostr-protocol/nips/blob/7cc120ecb01963e37f9adcd3b57b8efc1dd9e828/37.md), swapping out their previous usage of rust-nostr due to large binary size issues.
- [Fabian](nostr:npub1n0sturny6w9zn2wwexju3m6asu7zh7jnv2jt2kx6tlmfhs7thq0qnflahe) from Nostur contributed a [NIP-44 encrypt/decrypt example](https://github.com/nostr-sdk/nostr-sdk-ios/pull/204) to the SDK demo project to help him understand how it works and is [currently being used](https://github.com/nostur-com/nostr-essentials/blob/05e5452bb05c4c2e94ec9a78bb0c80d5123919a7/Sources/NostrEssentials/NIP-44/NIP44v2Encrypting.swift) by Nostur
- A new livestreaming Nostr client called [Swae](https://github.com/suhailsaqan/swae) has adopted the SDK, using Comingle as a reference client implementation.
Progress on the SDK this quarter has been slower than the previous quarter due to a shift in emerging priorities in Nostr. This quarter, I focused on building a native iOS Nostr event signer, as none exist today. The problem is that some iOS users do not fully trust pasting their private key into Nostr clients, which they fear could be buggy or malicious in accessing and signing bad data with their private key. A native signer on Android called Amber already exists, and there has been an increase in demand from users for an equivalent solution on iOS. The iOS signer app is called [Yeti](https://github.com/tyiu/Yeti) (credit to [Karnage](nostr:npub1r0rs5q2gk0e3dk3nlc7gnu378ec6cnlenqp8a3cjhyzu6f8k5sgs4sq9ac) for the name and Figma designs) and I'm using Nostr SDK for Apple Platforms and its demo app as a [test bed](https://github.com/nostr-sdk/nostr-sdk-ios/tree/tyiu/signer-demo) for this experimental cross-app communication protocol that will eventually be proposed as a NIP. I hope iOS clients adopting the SDK will get built-in standardized event signing protocol capabilities, tightening up this attack vector.
This report marks the end of the six-month grant period, as agreed with OpenSats. I thank OpenSats for supporting Nostr SDK for Apple Platforms, other Nostr projects, and the developer community. I will re-apply for a grant at OpenSats for the SDK, Yeti, or other impactful Nostr projects.
## 1) How did you spend your time?
Below is a broken-down summarized bulletpointed list of completed tasks.
### Development of Nostr SDK for Apple Platforms
#### Added
- [NIP-37 Draft Events](https://github.com/nostr-protocol/nips/blob/master/37.md)
- [NIP-44 encrypt/decrypt example to demo project](https://github.com/nostr-sdk/nostr-sdk-ios/pull/204)
### Updated
- [Updated NIP-11 Relay Information Document implementation](https://github.com/nostr-sdk/nostr-sdk-ios/pull/201) to support all the newly added fields
- [Renamed ParameterizedReplaceableEvent to AddressableEvent and NonParameterizedReplaceableEvent to NormalReplaceableEvent](https://github.com/nostr-sdk/nostr-sdk-ios/pull/205) to conform to the [new terminology](https://github.com/nostr-protocol/nips/pull/1418) in the NIPs repo
- Gracefully deprecated stringified JSON in favor of tags on user metadata kind 0 events, being the first to implement the [not-yet-merged proposal](https://github.com/nostr-protocol/nips/pull/1770) to NIP-01/NIP-24
### Fixed
- Fixed broken CI build pipeline
- [Fix GitHub workflow for running build and test](https://github.com/nostr-sdk/nostr-sdk-ios/pull/202)
- [Upgrade upload-pages-artifact from deprecated version to v3 to fix build](https://github.com/nostr-sdk/nostr-sdk-ios/pull/207)
- [Upgrade deploy pages action to v4 to fix build](https://github.com/nostr-sdk/nostr-sdk-ios/pull/208)
#### In Progress
- Native iOS event signing protocol, using the [SDK as a test bed](https://github.com/nostr-sdk/nostr-sdk-ios/tree/tyiu/signer-demo)
## 2) What do you plan to work on next quarter?
The top priorities will be developing the native iOS event signing protocol, building out Yeti, and integrating the iOS signing protocol into the SDK.
I will continue maintaining and developing the SDK, albeit at a slower pace:
- Deprecate EventCreating protocol in favor of NostrEventBuilding protocol for the remaining event kinds
- Add or update implementations for various NIPs where critical or needed
- Support clients as they integrate with parts of the SDK by answering questions, fixing any issues they have, adding requested features, and reviewing pull requests
## 3) How did you make use of the money?
Living expenses.