Skip to content

Upgrade to a collision-free deviceId for millions of devices #679

@DavidHemmerle

Description

@DavidHemmerle

Is your feature request related to a problem? Please describe.
Using random 8-character lowercase identifiers (a-z) is unsafe for our projected scale. This format only yields ~208 billion combinations. Due to the Birthday Paradox, we will practically guarantee database insertion errors and collisions once we reach just a few million users.

Describe the solution you'd like
Migrate to an industry-standard, collision-resistant identifier format, such as:

UUIDv4: For standard, mathematically secure 128-bit random IDs.

ULID / Snowflake IDs: If we also need the IDs to be sortable by timestamp.

Describe alternatives you've considered

NanoIDs (Base62): Expanding the character set to include uppercase letters and numbers, and increasing the length to 12+ characters to keep IDs URL-friendly.

Database Retry Logic: Catching UNIQUE CONSTRAINT errors and regenerating the ID. Rejected because retries will spike as the user base grows, degrading database performance.

Additional context
Collision probabilities for our current 8-character lowercase IDs:

64,000 users: 1% risk of collision.

538,000 users: 50% risk of collision.

2 million users: >99.9% risk of collision.

Metadata

Metadata

Labels

No labels
No labels

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions