Skip to content

Goodspeed is in closed beta. Enter your email and we check your invite on the spot: invited accounts start free today, and everyone else joins the waitlist in one click. Get started

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
Permission on first launchThe prompt runs once for a signed-in person, and the answer decides whether a token is ever registered.Interface
Channels from configA channel is created at app start for each entry in gas.config.ts, giving people per-channel control in Android settings.Interface
Token stored per userThe Expo push token is fetched and saved to the push_tokens table with the user ID and the platform.Data
One handler for every notificationA single module-level handler decides alert, sound and badge behaviour, so it cannot drift between screens.Interface
Simulator guardA device check runs before requesting a token, because a simulator has none and the failure is confusing without it.Reliability

Source: the Goodspeed app foundation · push-notifications

REAL GENERATED CODE

A snippet from a Expo Notifications integration the pipeline ships

This pattern is lifted from the engineered plumbing that ships inside every Goodspeed app. 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