When building an app without user authentication, you sometimes still want to limit anonymous user actions. One route could be using cookies or IP numbers, but both are limited in that cookies can be manipulated (or deleted) and IP numbers might change. Luckily, there’s a another alternative and its called fingerprints.
Much like a persons fingerprints, a device can be anonymously identified by the combination of certain metrics that are available to the browser. Your screen resolution, operating system and language settings are in themselves not enough to single you out – but adding up enough of these identifiers you have a pretty unique set.
So instead of setting up a system of cookies, I recommend using the fingerprint as an anonymous but unique user ID, one that can be persisted and used globally in your app.