Should screen_view_id be always dynamically generated?

Our mobile app teams have a set of app screens. They have a unique screen id per each app screen and use those ids in the screen_view event in ‘id’ property. The Snowplow schema for screen_view event says:

“id”: {
“type”: “string”,
“format”: “uuid”,
“maxLength”: 36,
“description”: “An ID from the associated screenview event.”
}

But Android and iOS trackers documentation determine it as:

id
val id: String
Identifier of the screen.

So, the docs look like misleading. While transforming tracking data we get an issue with deduping. So, can somebody clarify whether screen_view.id value should be always dynamically generated UUIDv4? Or can be taken from a fixed set of ids?

Hi @aovchinn,

Sorry for the confusing documentation, we will try to fix that! Just to make sure, you are referring to the API docs in the package source code, right?

The schema description is correct in this case. The id property identifies the screen view, not the screen. So if the user visits the same screen twice, they should get a different screen view id each time. However, for instance, if a button click event is tracked on a screen, it will have the same screen view id in the screen entity (tracked automatically) as the last screen view (hope that makes sense).

So if I understood correctly, your current implementation is not correct – you should not have a fixed set of IDs for the screens in your app. The trackers actually generate the screen view ID automatically, you don’t have to pass it to the screen view event.

Thanks @matus for clarification! That’s exactly what I wanted to confirm.

Hi @matus these docs seem misleading:
https://snowplow.github.io/snowplow-android-tracker/snowplow-android-tracker/com.snowplowanalytics.snowplow.event/-screen-view/index.html
https://snowplow.github.io/snowplow-ios-tracker/documentation/snowplowtracker/screenview/screenid
I think that’s what led developers to use a fixed list of ids rather than a generated uuid.