Persistent Storage

There are various ways to store persistent data within your app.
Your app can store a user's settings in various ways. For each usecase, there's a best practice.

Device Settings

Most likely, you'll want to store settings per-device.
For front-end, user-visible settings, use Device Settings.
For back-end, persistent settings, use the Device Store. Refer to Device.getStoreValue and Device.setStoreValue for the documentation.

App Settings

Most app-specific settings can be stored and retrieved through ManagerSettings. This enabled your app to save and retrieve any value that is JSON-serializable. App Settings are saved across app restarts, and are only deleted when your app is uninstalled.
On Homey Pro, a custom App Settings can be created using HTML, CSS and JavaScript.
It is generally discouraged to use custom HTML, because often app settings are better to be stored within a Device Store.

App Userdata

For non-JSON serializable data, e.g. binary files, the /userdata/ folder is writable on Homey Pro.
The /userdata/ is publicly available on https://<homey>/app/
This allows for some nice usecases, but can also be a security risk! Be sure to keep your filenames unique so they cannot be guessed.
For example, when storing an image, don't name it image1.jpg but a656d380-c887-4d8b-9ee5-f89de7b65d01.jpg and keep the Image's name stored in the App Settings.