{
  "id": 14231463,
  "title": "One subscriptions row, two stores: Stripe and Google Play in Next.js + Supabase",
  "url": "https://urgent.news/2026/10/13/one-subscriptions-row-two-stores-stripe-and-google-play-in-next-js",
  "topic": "tech",
  "section": "Tech",
  "published": "2026-10-13T15:33:29.000Z",
  "source": {
    "name": "Dev.to",
    "slug": "dev-to",
    "url": "https://dev.to/talaizikov/one-subscriptions-row-two-stores-stripe-and-google-play-in-nextjs-supabase-bl2"
  },
  "original_language": "en",
  "account": "MotionLab offers personalized stretching and mobility sessions through a single subscriptions row in Supabase. The row is keyed by the user ID and contains status, interval, Stripe customer ID, Stripe subscription ID, Stripe price ID, current period end, start date, cancel at period end, and updated date. The status column uses Stripe's vocabulary such as active, trialing, past_due, and canceled. The interval column is either month or year. The user ID appears twice in the metadata: once in the Checkout Session and once in the Subscription itself. This allows later events to identify the user and track changes like renewals, plan changes, cancellations, and failed payments. The webhook receives the raw body and signs the exact bytes sent by Stripe to verify the signature. The Checkout route creates the session with the user ID in the metadata, and the webhook reads the raw body to ensure signature verification.",
  "summary": "MotionLab sells one Pro plan through two checkouts. On the web it's Stripe Checkout. On Android it's Google Play Billing. Two stores with two lifecycles and two kinds of IDs, plus two ways of telling you something changed. The web app doesn't care about any of that. It wants one answer: is this user Pro right now? We're building MotionLab , personalized stretching and mobility sessions. Earlier…",
  "key_points": [
    "MotionLab uses Supabase for subscriptions management",
    "Stripe handles payment processing and subscription status",
    "Checkout route and webhook manage user sessions and verification"
  ],
  "editors_take": null,
  "illustration": "https://urgent.news/ill/14231463.png",
  "coverage": {
    "outlets": 7,
    "also_reported_by": [
      {
        "outlet": "9to5Google",
        "title": "Google Play adding ‘personal library’ to access your vibe-coded Android apps",
        "url": "https://urgent.news/2026/10/13/google-play-adding-personal-library-to-access-your-vibe-coded-android",
        "published": "2026-10-13T17:00:00.000Z"
      },
      {
        "outlet": "Google Blog",
        "title": "New on Google Play: More ways to create, discover, and play",
        "url": "https://urgent.news/2026/10/13/new-on-google-play-more-ways-to-create-discover-and-play",
        "published": "2026-10-13T17:00:00.000Z"
      },
      {
        "outlet": "TechCrunch",
        "title": "Google Play now supports private, vibe-coded apps built just for you",
        "url": "https://urgent.news/2026/10/13/google-play-now-supports-private-vibe-coded-apps-built-just-for-you",
        "published": "2026-10-13T17:00:00.000Z"
      },
      {
        "outlet": "The Verge",
        "title": "A redesigned Play Store is coming to cars with Google built-in",
        "url": "https://urgent.news/2026/10/13/a-redesigned-play-store-is-coming-to-cars-with-google-built-in",
        "published": "2026-10-13T17:00:00.000Z"
      },
      {
        "outlet": "Android Authority",
        "title": "Google’s next big Play Store makeover is coming to your car",
        "url": "https://urgent.news/2026/10/13/googles-next-big-play-store-makeover-is-coming-to-your-car",
        "published": "2026-10-13T17:00:14.000Z"
      },
      {
        "outlet": "Ars Technica",
        "title": "Google wants to host your personal vibe-coded apps in the Play Store",
        "url": "https://urgent.news/2026/10/13/google-wants-to-host-your-personal-vibe-coded-apps-in-the-play-store",
        "published": "2026-10-13T17:00:39.000Z"
      }
    ]
  },
  "ai_generated": true,
  "disclaimer": "Summaries, key points and the editor’s take are written by software from other outlets’ reporting and may contain errors — always check the linked original."
}