Connect Expo Notifications to your Goodspeed app
The native SDK behind push notifications in every Goodspeed app: permission requests, Android channels, token registration, and the global notification handler. Goodspeed wires Expo Notifications into every app that needs it at generation time, so you start with a working integration, not a blank config and a documentation tab.
WHAT GETS WIRED IN
Built into every Expo Notifications build
Every app Goodspeed generates with Expo Notifications includes these wired integrations from the first build. No manual setup required.
| Item | Description | Strength |
|---|---|---|
| requestPermissionsAsync runs on first app launch for authenticated users, gating token registration on the user's decision | requestPermissionsAsync runs on first app launch for authenticated users, gating token registration on the user's decision | 01 |
| setNotificationChannelAsync creates a channel for each entry in gasConfig.features.pushNotifications.channels at app start | setNotificationChannelAsync creates a channel for each entry in gasConfig.features.pushNotifications.channels at app start | 02 |
| getExpoPushTokenAsync fetches the Expo push token and upserts it to the Supabase push_tokens table with user ID and platform | getExpoPushTokenAsync fetches the Expo push token and upserts it to the Supabase push_tokens table with user ID and platform | 03 |
| setNotificationHandler module-level config sets shouldShowAlert, shouldPlaySound, and shouldSetBadge for all received notifications | setNotificationHandler module-level config sets shouldShowAlert, shouldPlaySound, and shouldSetBadge for all received notifications | 04 |
| expo-device.isDevice checked before token registration to avoid confusing failures in the iOS simulator | expo-device.isDevice checked before token registration to avoid confusing failures in the iOS simulator | 05 |
Source: gas-template repository · push-notifications
REAL GENERATED CODE
A snippet from a Expo Notifications integration the pipeline ships
This pattern comes directly from the gas-template codebase. The studio generates Expo Notifications integration code like this for every app that includes it, not a placeholder you have to fill in yourself.
Android channel creation
// lib/notifications.ts if (Platform.OS === 'android' && ExpoNotifications) { for (const channel of gasConfig.features.pushNotifications.channels) { await ExpoNotifications.setNotificationChannelAsync(channel.id, { name: channel.name, importance: ExpoNotifications.AndroidImportance.MAX, vibrationPattern: [0, 250, 250, 250], lightColor: gasConfig.design.colors.primary, }); } }
Today's log
APPS THAT USE EXPO NOTIFICATIONS
Where this integration ships
These app types include Expo Notifications as part of the generated stack. Each link goes to a full spec page with capabilities, scored ideas, and a pipeline walkthrough.
- Build a Fitness Tracker appBuilding a fitness tracker means wiring together daily logging, progress charts, Apple Health, and push reminders. Goodspeed generates all of that in a single build, not a patchwork of tutorials. The FITNESS TRACKER APP
- Build a Habit Tracker appHabit trackers live or die on the loop: cue, routine, reward. Goodspeed generates a complete React Native habit tracker with streaks, reminders, and progress visualization, backed by Supabase so your HABIT TRACKER APP
- Build a Social App appBuilding a social app from scratch means solving hard infrastructure problems: real-time feeds, fan-out writes, notification delivery, and content moderation hooks. Goodspeed generates a complete sociSOCIAL APP
START WITH EXPO NOTIFICATIONS