Scheduling in AdapTable

Scheduling in AdapTable

AdapTable's Scheduling powers both Scheduled Reports and Scheduled Alerts — automating exports and reminders without a backend job runner

6 min readJuly 26, 2026

AdapTable provides features that are designed to take AG Grid to the next level for power users - an excellent example of this is Scheduling

AdapTable's Scheduling allows users to configure when something should happen.

And, best of all, they can then reuse that same timing model - for both exports and alerts - without needing to leverage a server or backend process.

Important

  • Both features share the same Schedule object, either a recurring 5-field cron, or a one-off datetime
  • You do not need a server-side job runner — AdapTable evaluates schedules in the client
ModuleWhat runs when the Schedule fires
ExportA Report is exported (format + destination you choose)
AlertA Scheduled Alert notifies the user (toast, System Status, Alert UI, etc.)

In the Demo

  • The demo configures four schedules in Initial State:
    • Weekday Excel export — recurring cron (30 17 * * 1-5) for the Current Layout system report
    • One-off CSV export — runs once (~90 seconds after load) for a custom JS Frameworks report
    • Daily stand-up reminder — recurring Scheduled Alert (0 9 * * *)
    • One-off demo alert — Scheduled Alert that fires with the same one-off time as the CSV export
  • We listen to Report Schedule Ran and write a System Status message when a report schedule fires
Scheduling in AdapTable
Fork
Loading demo…
Try It Out
  • Leave the demo open for ~90 seconds to see the one-off Alert toast and CSV download
  • Suspend either one-off schedule if you want to explore the UI without waiting
  • Change a cron expression (hour/minute) on the weekday Report or daily Alert and save
  • Watch System Status after a Report Schedule runs

The Schedule Model

Every schedule uses the same Schedule object:

Note

This model is shared between Reports & Alerts, so you can learn it once and apply it everywhere

ModeHow you configure itTypical use
RecurringIsOneOff: false + CronExpression
(5 fields: minute hour day-of-month month day-of-week)
End-of-day Excel each weekday
Daily stand-up reminder
One-offIsOneOff: true + RunAt (ISO datetime)“Export this layout once at 16:05”
Timed reminder after Grid loads

Hint

  • Cron examples: weekdays at 17:30 → 30 17 * * 1-5; every day at 09:00 → 0 9 * * *
  • One-off times are ideal for demos and ad-hoc operational prompts

Scheduled Reports

Report Schedules are persisted in Export Initial State (alongside your custom Reports).

When a Report Schedule fires, AdapTable exports the named Report using the configured:

  • Report — system report (e.g. Current Layout) or a custom Report
  • Format — e.g. Excel, CSV
  • Destination — e.g. Download (or a custom destination)

In the Demo

  • Open the Export toolbar / Settings Panel to inspect the two Report Schedules
  • Suspend the one-off CSV schedule before ~90 seconds if you do not want a download
  • After a report schedule runs, a success System Status is triggered by the Report Schedule Ran Event
{
  Name: 'Weekday Excel export',
  ReportName: 'Current Layout',
  ReportFormat: 'Excel',
  ExportDestination: 'Download',
  Schedule: {
    IsOneOff: false,
    CronExpression: '30 17 * * 1-5',
  },
}

Scheduled Alerts

Scheduled Alerts fire when a schedule triggers.

Note

Unlike standard data-change or validation Alerts, Scheduled Alerts have no Rule or Scope

As with all Alerts, there are many presentation options and behaviours available, including:

  • Toast notifications
  • System Status messages
  • Badges in the Alert Toolbar / Tool Panel / Status Bar
  • Option to display suspend button in the notification

Caution

  • Some behaviours that only make sense for cell-based data Alerts are not available
  • For instance Scheduled Alerts cannot trigger highlight cell, jump to cell, undo edit etc.

In the Demo

  • Open the Alert toolbar to see the daily reminder and the one-off demo Alert
  • Wait ~90 seconds for the one-off toast (or suspend it first)
  • Edit the daily Alert’s cron if you want to experiment with recurrence
{
  Name: 'Daily stand-up reminder',
  MessageHeader: 'Daily stand-up',
  MessageText: 'Review the grid and confirm today’s priorities.',
  MessageType: 'Info',
  AlertProperties: {
    DisplayNotification: true,
    DisplaySystemStatusMessage: true,
  },
  Schedule: {
    IsOneOff: false,
    CronExpression: '0 9 * * *',
  },
}

Which Schedule Should I Use?

GoalMethod
Automate a file export (Excel / CSV / …) on a clockScheduled Report
Remind users / raise an operational prompt on a clockScheduled Alert

Hint

  • Many teams use both types of Schedule together for some use cases
  • e.g. a weekday End of Day Report Schedule, preceded by a Scheduled Alert as a reminder

FAQ

Do I need a server or job runner to use Scheduling? No. AdapTable evaluates schedules entirely in the client — there is no AdapTable server component and you do not need cron, Quartz, or a similar backend scheduler for these features

Does the application need to be open for a Schedule to fire? Yes. Because schedules run in the client, the grid session must be live (browser tab / desktop container open). If you need unattended overnight jobs when nobody has the app open, keep using your existing server-side scheduler and treat AdapTable Scheduling as the in-app layer for users who are already working in the grid

Can I use the same Schedule definition for Reports and Alerts? Yes — that is the point of the shared Schedule model. Configure timing once, then attach it to a Report Schedule or a Scheduled Alert as needed

Can users pause a Schedule without deleting it? Yes. Schedules can be suspended and resumed from the AdapTable UI, which is useful while you are configuring or demoing (or simply require no distractions)

Do I need to write cron expressions by hand. I dont know how to? No. The Schedule UI includes presets (e.g. Weekdays) and guides you through hour and minute, so most users never type a cron string. Developers can first create the Schedule in the UI, then copy resulting config into Initial State or code.