Milestone Widget

Using dynamic inputs to track number of days to reach a milestone.

Step 1: Create the Milestone Widget and its Content

Create your Milestone Content by importing the provided JSON. Learn more about how to do this on our support page.

Then, create a new Milestone Widget and set its default content to your new Milestone Content.

Step 2: Create a shortcut to update your widget

Using the Shortcuts app, create a widget with the steps outlined on this screenshot. You can also directly import this shortcut on your device using this link.

Notice that we use two built-in Shortcut actions to specify the milestone date and to get the number of days between it and the current date. We'll also need the new Pushcut Update Widget action to pass a dynamic input to the widget, in this case, the number of days until we reach the predefined milestone.

Tap on the play button on the bottom-right corner of your screen to test and see if everything is working! Keep in mind that, because of how iOS controls widget updates, it may take a while (up to 15 minutes) before the widget is actually updated.

Step 3: Setup your daily automation shortcut

To avoid having to create many repeated automations to update your widgets, let's organize all shortcuts that should run daily on a "parent shortcut" that will execute all its children.

Create a new Daily Pushcut Widgets shortcut, choose the Run Shortcut action and choose the Update Milestone Widget shortcut you just created.

Step 4: Creating the automation

Using the Shortcuts app, create a new Personal Automation that runs on a Time of Day.

Since this automation will run only once per day, you can set it to execute at 00:01 am. Make supported to leave the Daily option checked at the bottom.

Step 5: Setting up the automation

Choose Run Shortcut as the action for your new automation and pick the Daily Pushcut Widgets shortcut you just created.

If you need to update other widgets once a day, you won't need to setup another automation: just add another Run Shortcut action to the Daily Pushcut Widgets shortcut.

Step 6: You're all set!

Your automation is done and your widget should now be updated once a day at 00:01 am! Make sure to disable the Ask Before Running before closing this screen. This way you'll avoid cluttering your Notification Center with a new notification everytime your automation is executed.

Widget JSON

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
{
  "type": "column",
  "properties": {
    "horizontalAlignment": "leading",
    "padding": {
      "leading": 16,
      "trailing": 16
    },
    "font": {
      "family": "San Francisco"
    },
    "foregroundColor": "rgba(100.00%, 100.00%, 100.00%, 1.00)",
    "background": {
      "type": "gradient",
      "value": {
        "colors": [
          "rgba(19.00%, 75.56%, 77.36%, 1.00)",
          "rgba(94.01%, 71.81%, 23.69%, 1.00)",
          "rgba(100.00%, 27.66%, 57.79%, 1.00)"
        ],
        "startPoint": {
          "x": 0,
          "y": 0
        },
        "type": "linear",
        "endPoint": {
          "x": 0.5928571428571429,
          "y": 1
        }
      }
    }
  },
  "children": [
    {
      "type": "text",
      "value": "🏖",
      "properties": {
        "font": {
          "size": 24
        }
      }
    },
    {
      "type": "text",
      "value": "[[input0]]",
      "properties": {
        "font": {
          "size": 32,
          "weight": "bold",
          "design": "rounded",
          "family": "San Francisco"
        }
      }
    },
    {
      "type": "text",
      "value": "Days to",
      "properties": {
        "font": {
          "design": "rounded",
          "size": 18,
          "family": "San Francisco"
        }
      }
    },
    {
      "type": "text",
      "value": "vacation",
      "properties": {
        "font": {
          "design": "rounded",
          "size": 18,
          "family": "San Francisco"
        }
      }
    },
    {
      "type": "spacer",
      "value": "horizontal"
    }
  ]
}
Check the Widget documentation for more details.