Uploaded December 2025 | Updated September 2026, 16 hours ago
Event emitters let native code actively notify JavaScript when something changes, instead of waiting for JS to poll for updates. In this episode, Oskar shows how to add event emitting to a Swift TurboModule so your native logic can push updates directly to the JS layer.
The walkthrough begins with defining an event type in the TypeScript spec, triggering Codegen to generate a native emit interface. Oskar then updates the Swift implementation to store and trigger a callback when a new key is added, explains a subtle retain cycle issue between Swift closures and Objective-C, and shows how to fix it safely. The episode ends by subscribing to the event with a React `useEffect` and verifying end-to-end delivery from native to JavaScript.
Follow Callstack on X 🐦 https://x.com/callstackio
Event emitters let native code actively notify JavaScript when something changes, instead of waiting for JS to poll for updates. In this episode, Oskar shows how to add event emitting to a Swift TurboModule so your native logic can push updates directly to the JS layer.
The walkthrough begins with defining an event type in the TypeScript spec, triggering Codegen to generate a native emit interface. Oskar then updates the Swift implementation to store and trigger a callback when a new key is added, explains a subtle retain cycle issue between Swift closures and Objective-C, and shows how to fix it safely. The episode ends by subscribing to the event with a React `useEffect` and verifying end-to-end delivery from native to JavaScript.
Follow Callstack on X 🐦 https://x.com/callstackio










