A guest post by indie developer Arthur Spalanzani describing how he built Glow, a widget-first iOS affirmations app using Expo and native Swift widgets. He explains the architecture: widgets are separate Swift targets that cannot run JavaScript, communicate with the React Native app via App Groups shared storage, and use a timeline-based update model. The @bacons/apple-targets Expo Config Plugin is used to generate and manage the native widget target without manual Xcode project management. Key implementation details include generating a 24-hour quote timeline with per-instance variation using displaySizeHash, deep linking from widget taps back into the app via Expo Router, and syncing user preferences from React Native to the widget using ExtensionStorage. 80.7% of Glow users installed at least one widget, validating the widget-first product strategy.

6m read timeFrom expo.dev
Post cover image
Table of contents
Widgets as the core experienceThe technical challenge: Making widgets feel nativeBuilding the widget with Expo Apple TargetsThe challenges I didn't expectThe ROI of widgetsConclusion: A new world of possibilities

Sort: