CRON jobs in Remix app ? How to have separate server and client?

Topic summary

Developers are seeking ways to implement CRON jobs in Shopify Remix apps, as the current template structure differs from the older client-server separation that made scheduled tasks straightforward.

Attempted Solutions:

  • Separate server approach: One developer tried adding a custom server to Remix (following Remix documentation) but couldn’t successfully migrate Shopify API instances and authentication to the backend.
  • Defer platform: Initially suggested as a working solution for scheduling, but the service is shutting down in May 2024.
  • node-cron library: Successfully implemented within Remix action() methods, though requires manual restart after each deployment to fly.io.
  • supercronic: Explored as an alternative but developers struggled with configuring multiple processes in the fly.toml deployment file.
  • Gadget.dev: Mentioned as a platform with built-in scheduling, though more expensive than standard Fly hosting.

Current Recommended Solution:
The most recent suggestion is using Shopify Flow Actions (extensions) combined with Flow’s native scheduled triggers. This approach:

  • Creates a Flow Action extension pointing to an app route
  • Uses Shopify Flow app’s scheduled trigger to call that route
  • Allows authentication via authenticate.flow(request) to access Admin API
  • Provides a native, integrated solution within Shopify’s ecosystem

Developers express frustration with limited official Shopify documentation on this topic.

Summarized with AI on October 25. AI used: claude-sonnet-4-5-20250929.

Hi,

We are quite new to Shopify Apps (and the Remix stack) and we’re just looking to build some internal apps to automate some specific things. Not asking for detailed instructions but could you give any pointers about getting started with Defer and Shopify remix? Defer’s service looks like what we’re looking for but we’re just picking up React/Remix (having come from a predominantly Vue background on other platforms) and Shopify’s documentation is somewhat lacking around specific topics (such as authentication in a Remix app when it’s not being accessed by a user).