Skip to content
Skip to content
Goodspeed

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.

ItemDescriptionStrength
requestPermissionsAsync runs on first app launch for authenticated users, gating token registration on the user's decisionrequestPermissionsAsync runs on first app launch for authenticated users, gating token registration on the user's decision01
setNotificationChannelAsync creates a channel for each entry in gasConfig.features.pushNotifications.channels at app startsetNotificationChannelAsync creates a channel for each entry in gasConfig.features.pushNotifications.channels at app start02
getExpoPushTokenAsync fetches the Expo push token and upserts it to the Supabase push_tokens table with user ID and platformgetExpoPushTokenAsync fetches the Expo push token and upserts it to the Supabase push_tokens table with user ID and platform03
setNotificationHandler module-level config sets shouldShowAlert, shouldPlaySound, and shouldSetBadge for all received notificationssetNotificationHandler module-level config sets shouldShowAlert, shouldPlaySound, and shouldSetBadge for all received notifications04
expo-device.isDevice checked before token registration to avoid confusing failures in the iOS simulatorexpo-device.isDevice checked before token registration to avoid confusing failures in the iOS simulator05

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.

  1. 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,
        });
      }
    }
GDaily Allergens

Today's log

Gluten
Tree nuts
Shellfish
Dairy
HomeScanLogProfile

START WITH EXPO NOTIFICATIONS

Your Expo Notifications integration, generated