ReadyNative
Home-screen widgets

Home-screen widgets

Home-screen widgets for an Expo app, compared: Expo Widgets, or none - Expo Go support and what each option installs.

Hey - here's how home-screen widgets work in ReadyNative.

This category owns the widget people add to their Home Screen: the one thing your app is about (today's weather, a streak, a balance, the next booking), visible without opening the app. @/lib/widgets always exists, whichever option you pick - widgets.update({ title, value, subtitle, symbol }) replaces what the widget shows, and it is a safe no-op wherever widgets can't run (the none option, Android, web, Expo Go). Screens call it unconditionally.

Pick Expo Widgets when a glance is worth a Home Screen slot: it adds an iOS widget extension built with @expo/ui SwiftUI components, written in TypeScript in src/widgets/app-widget.tsx, in small and medium sizes, plus a Live Activity for the Lock Screen and the Dynamic Island (widgets.activity.start()). It needs a dev build. Pick none until you have that one number - no extension target, no App Group, nothing extra to sign.

Both options are in Starter and Pro. Widgets are iOS-only for now (expo-widgets' Android support is experimental); on Android widgets.supported is false.

Options

One option per category - --widgets <option> picks it:

bun run setup --widgets expo-widgets
OptionLabelExpo GoHint
expo-widgetsExpo Widgets (default)no - dev build requirediOS home-screen widget + Live Activity (Lock Screen, Dynamic Island) in SwiftUI (@expo/ui), fed from the app · dev build required (no Expo Go)
noneNo widgetsyesno app extension, widgets.update() is a no-op

On this page

Get ReadyNative