Heads up

You must set your Workflow Bundle ID in order to use the data method. If you try and access data without setting the Bundle ID, the library will throw an Exception.

To set the Bundle ID: In Alfred > Workflows, double-click your workflow in the list on the left hand side and fill in the "Bundle Id" field (e.g. com.example.workflowname)

If you need to cache non-volatile data for your workflow, you can easily do so via the data method.

This method reads and writes to a file called data.json within the Alfred-recommended directory on the user's computer (~/Library/Application Support/Alfred/Workflow Data/[bundle id]).

        'id'     => 123,
        'name'   => 'Bob Belcher',
        'avatar' => 'bob.png',
        'id'     => 456,
        'name'   => 'Linda Belcher',
        'avatar' => 'linda.png',

$data = $workflow->data()->readJson();

Any argument you pass into the writeJson method will be JSON encoded and written to the default data path. Each time you call writeJson you are over-writing the data file.

readJson will read in the file from the default data path and decode the JSON as an associative array. To read the data as an object:

$data = $workflow->data()->readJson(null, false);

To get the default data path, you can use the path method:


Custom Data File

By default, the filename is data.json, but you can manage multiple data files by passing in a different filename when reading and writing:

$workflow->data()->writeJson([1, 2, 3], 'secondary.json');

Working with non-JSON Data

$workflow->data()->write('Remember this.');

$workflow->data()->write('Remember this.', 'secondary.txt');