Scheduled cron jobs for Workflows

Sep 30, 2025 by

Jon Samp

Jon Samp

Scheduling workflows allows you to automate routine tasks like building and submitting your app on a regular cadence. This eliminates the need to manually trigger builds and submissions, so that you can do things like have your biweekly production builds already submitted to the app stores by the time you arrive at work.

Scheduled cron jobs for Workflows

How to schedule workflows

Use the on.schedule.cron trigger in your workflow configuration with unix-cron syntax:

Code
name: Example cron job trigger workflow
on:
push:
branches: ["main"]
schedule:
- cron: "0 9 1-7,15-21 * 1" # Runs every two weeks on Monday at 9 AM GMT
jobs:
# ... Your workflow jobs here

See our workflow examples for pre-made configurations for core app development use cases.

Scheduling considerations

Scheduled workflows have several important characteristics to keep in mind:

  • Default branch only: Scheduled workflows run exclusively on the default branch of your repository, typically main
  • GMT timezone: All scheduled workflows execute in Greenwich Mean Time (GMT)
  • Multiple schedules: A single workflow can have multiple cron schedules for different timing requirements
  • High load delays: During peak usage times, particularly at the start of each hour, scheduled workflows may experience delays
  • Idempotent design: In rare cases, jobs may be skipped or run multiple times, so make sure your workflows handle repeated execution gracefully

Common scheduling patterns

You can use crontab guru to generate and validate cron expressions. Here are some useful patterns:

  • 0 0 * * * - Daily at midnight GMT
  • 0 9 * * 1 - Every Monday at 9 AM GMT
  • 0 0 1,15 * * - Twice monthly on the 1st and 15th at midnight GMT
  • 0 6 * * 1-5 - Weekdays at 6 AM GMT

Wrap up

Scheduling your deployment workflows means your builds and submissions can be processed automatically during off hours. When you arrive at work, your latest app version is already built and submitted, ready for you to release through the app store consoles. Schedules remove some of the toil around repeated tasks, like releasing to the app stores, or running nightly end-to-end tests.

Learn more about the scheduled job syntax on our docs.