Storage

Understand the differences between the three different types of storage offered: App Metadata, Board Item Metadata, and Storage Collection.

When building a Miro app, it's important to understand how you can persist data for your app. If you are planning to use Miro storage for your app (as opposed to a 3rd party service) then this guide is for you.

Use the table below to understand the main differences between the three different types of storage that Miro offers for developers: App Metadata, Board Item Metadata, and Storage Collection.

App MetadataBoard Item MetadataStorage Collection
DescriptionAdds app metadata to make it available on the board that the app runs on.Adds board item metadata to make it available on that board that the app runs on.Ability to store, retrieve, and remove data from the specified collection using key value pairs.
Function name
to add new key
setAppDatasetMetadataset
Who can access
the data?
All users who can
access and view the board that the app is running on, AND
run the app on the board.
All users who can
access and view the board that the app is running on, AND
run the app on the board.
All users who can
access and view the board that the app is running on, AND
run the app on the board.
How is it stored?Per board, per appPer board, per app, per board itemPer board, per app
Which board items allow
for metadata to be stored?
N/ACard
Connector
Embed
Image
Preview
Shape
Sticky Note
Text
N/A
Data Limit30 KB per app6 KB per item64 KB per key
Events support
on key change?
✅ (onValue listener)
If I make a copy of a board,
will the data persist?
Recommended UsesWhen you don't have to store much data, and you want to persist data when making a copy of a board.When you need to store more than 30 KB, you want to store the metadata to certain items on the board, and want to persist data when making a copy of a board.When you need more storage capability than app metadata, but don't want to store data at the item level (maybe the items will be deleted). You also want to build logic for when certain keys change (onValue listener) and don't need to persist data when making a copy of a board.