Problem or use case
Profile/contact editable fields are mostly unbounded today, which can cause:
- heavy profile payloads
- broken/truncated layouts for very long strings
- inconsistent behavior between iOS and Android
Current mismatch: Android limits bio in shared edit form (BIO_MAX_LENGTH = 160), while iOS does not apply this cap.
Proposed solution
Define and enforce shared bounds for profile/contact fields on both apps:
- name
- notes/bio
- tag
- link label
- link URL
Optionally also define max counts:
- number of tags
- number of links
Implementation requirements:
- apply bounds at input level (good UX)
- re-validate on save in viewmodel/manager layer (safety)
- keep behavior identical on iOS and Android
Initial proposed bounds (sensible defaults):
name: max 50-100 chars
notes/bio: max 160-300 chars
tag: max 24 chars
link label: max 32 chars
link URL: max 512 chars
max links: 10
max tags: 10
Alternatives considered
- Keep only Android bio cap and leave the rest unbounded (reject: inconsistent, fragile).
- Limit only in UI, not in save layer (reject: can be bypassed, weaker safety).
- Add total payload-size guard only, no per-field bounds (reject: weak UX; users get late errors).
Additional context
- Candidate fields: create profile, edit profile, edit contact, add-link sheet, add-tag sheet.
- Product decisions required:
- confirm proposed numeric limits above
- UX at limit (truncate vs block typing vs validation error + blocked save)
- Suggested acceptance criteria:
- same limits on iOS and Android
- max value accepted, max+1 handled as specified
- existing profile/contact E2E flows remain stable
- boundary tests added for critical fields
Problem or use case
Profile/contact editable fields are mostly unbounded today, which can cause:
Current mismatch: Android limits bio in shared edit form (
BIO_MAX_LENGTH = 160), while iOS does not apply this cap.Proposed solution
Define and enforce shared bounds for profile/contact fields on both apps:
Optionally also define max counts:
Implementation requirements:
Initial proposed bounds (sensible defaults):
name: max 50-100 charsnotes/bio: max 160-300 charstag: max 24 charslink label: max 32 charslink URL: max 512 charsmax links: 10max tags: 10Alternatives considered
Additional context