Skip to content
Skip to content
Goodspeed

BUILT INTO EVERY GOODSPEED APP

Push Receipt Polling

A 5-minute cron Edge Function polls Expo's getReceipts API and settles every push delivery row to ok/error/expired, automatically purging dead device tokens so the push_tokens table never silently accumulates invalid entries.

  • Tier: Common
  • Status: Config-toggled
  • Config: features.pushNotifications.enabled

WHY IT MATTERS

Most mobile app projects spend weeks plumbing the same infrastructure before writing a single line of product code. Push Receipt Polling is one of those cross-cutting concerns that every app eventually needs but almost none get right the first time. Permissions are handled incorrectly, tokens expire silently, or the feature breaks after an OS update nobody tested against.

Goodspeed solves this by shipping push receipt polling as a production-grade, tested implementation inside every generated app. The code follows the patterns in the GAS template - the same 246-feature catalog that powers every app we build. Controlled by `features.pushNotifications.enabled` in gas.config.ts. You own the code from day one, can read every line, and can hire any React Native developer to extend it. The build pipeline verifies the feature compiles and routes resolve before the app lands in your repository, so you are not the one catching the integration error at 2 am before launch.

HOW IT IS WIRED

Real code from the GAS template

The excerpt below is lifted verbatim from gas.config.ts in the gas-template repository. This is the code your generated app gets, not pseudocode, not a description of intent.

// Enable this feature in gas.config.ts
export const gasConfig = {
  features: {
    // Set the relevant flag to true to enable
  },
};

Source: goodspeed-apps/gas-template gas.config.ts

HONEST LIMITS

When Push Receipt Polling is the wrong choice

Unnecessary for apps with very low push volume (under ~100 sends/day) where delivery failures are visible in Expo's dashboard without automated polling.

Tier: Common · Config-toggled

  1. Evaluate your use case

    Check whether push receipt polling aligns with your target audience, platform constraints, and regulatory environment before enabling it.

  2. Audit the config

    The `features.pushNotifications.enabled` flag controls this feature. Set it to false in gas.config.ts to disable the feature entirely with no residual code paths.

  3. Seek alternatives

    If the built-in implementation does not fit, the generated codebase is standard React Native + Expo code. Any library in the Expo ecosystem can replace the default.

APPS USING THIS FEATURE

Every generated Goodspeed app includes push receipt polling. Browse the ideas catalog to see apps across all categories that ship with this feature wired in.

CAPABILITIES

Push Receipt Polling capability breakdown

Concrete dimensions of what the built-in push receipt polling implementation covers. These reflect the actual template code, not a marketing summary.

ItemDescriptionStrength
Storage backendData for this feature is managed by Supabase Postgres (push_deliveries + push_tokens tables).Supabase Postgres (push_deliveries + push_tokens tables)
Network modeThis feature operates in Online-only mode.Online-only
Sync frequencyData syncs Cron (5-minute interval).Cron (5-minute interval)
TierCommon feature — config-toggled.Common
Template statusEnabled via features.pushNotifications.enabled.Config-toggled

GET IT BUILT INTO YOUR APP

Score your idea and get push receipt polling wired in from day one