Skip to main content

Account settings

Customer App can expose Languages, promotional Notification preferences, Security/Sessions, and Logout as separate surfaces. Their visibility and settlement depend on the current account, project, configuration, session type, device, and provider lifecycle.

Visible state is not a receipt

A selected language, changed switch, removed session row, or closed account screen does not prove that every local, server, device, push, or provider state settled. If a response is lost, keep the outcome unknown and do not repeat a destructive action merely to force a visible result.

Keep the settings surfaces separate

SurfaceWhat it can controlWhat it does not prove
LanguagesThe app's selected language and translation contextThat every screen, cached value, provider, or returned service message changed together
NotificationsPromotional email, SMS, and push preferences for the current accountOS notification permission, device installation ownership, provider delivery, or eligibility for unrelated features
Security / SessionsA supported session list and explicit controls for one, current, other, or all sessionsImmediate revocation everywhere, provider logout, push teardown, or removal of cached private state
LogoutA separate server/local sign-out request for the current app sessionThat every other session, device installation, provider identity, room, callback, or notification preview was removed

A missing row is not an error or proof that the capability can be enabled.

Mount-time work and explicit actions

Opening a settings surface can already cause reads or state work:

Surface openedPossible mount-time workExplicit customer action
Profile settingsResolve row visibility and available languagesSelect one available row
LanguagesLoad languages and translations; reconcile a stored or default languageSelect a different language
NotificationsRefresh current account data and initialize promotional channel stateChange one channel switch
Security / SessionsLoad a supported session listRevoke one session, revoke all except current, revoke all including current, or request session management activation
Logout controlNo source-established sign-out effect merely from rendering; local notification-installation state is read when Logout is requestedRequest Logout

The pinned Notifications path can begin preference persistence from initialized state without waiting for a switch. A future accepted implementation must make screen mount zero-write and require an explicit, versioned action for each change.

Language selection and settlement

Language has more than one state: the visible selection, locally stored choice, shared app/API language, and returned translation dictionary. Selecting a row can update the visible choice before every layer refreshes.

If text changes only partly, loading continues, or the previous language returns, treat the outcome as unsettled. Do not repeatedly select languages or switch projects to test it. A language row can also be absent when fewer than two eligible languages are available.

Notification preferences, permission, and delivery

These states must remain separate:

StateOwnerBoundary
Promotional channel preferenceCurrent account/settings serviceRequires explicit channel-specific consent and a versioned settlement receipt
OS notification permissionDevice operating systemPermission does not create account consent or prove a device installation is current
Device notification installationApp/backend lifecycleMust belong to the current account/project/device generation and rotate or be removed safely
Provider acceptancePush providerDoes not prove OS presentation, customer viewing, or correct current audience
In-app operational statusOwning order/message/account surfaceMust be authorized and reconciled independently of marketing preference or OS permission

Turning a promotional preference off must not be described as revoking OS permission or proving device/provider teardown. Likewise, enabling OS permission must not opt the account into promotional email, SMS, or push. Notification state is not a valid eligibility rule for an unrelated review prompt.

Security and session actions

ActionSafe interpretation
Load sessionsA point-in-time list for a supported session strategy; entries can be stale or incomplete
Revoke one other sessionA revocation request for that selected session; the local row is not the authoritative receipt
Revoke the current sessionA revocation request that can lead to local logout only after a supported response
Revoke all except currentA request to keep the current session and revoke the others
Revoke all including currentA request that can lead to local logout after server settlement
Activate session managementA request to change how sessions are represented; it is not a new login or universal device reset

Session revocation and device/provider teardown are different operations. A revoked session must stop its authorized use, but removing a session row alone does not prove that push installations, socket rooms, cached SDK credentials, or late callbacks were cleared.

Logout is a separate lifecycle

Logout can request server sign-out, then remove local session state and reset selected app state after a supported response. It can also pass the currently known notification installation to the server. This is not the same as revoking all sessions and does not prove complete push/provider cleanup.

If Logout loses its response, server and local state can disagree. Do not assume that a returned Profile screen, missing row, or retained notification proves success or failure. Re-establish the current signed-in state through the normal app entry before changing settings again.

Optimistic and unknown outcomes

Observable outcomeSafe interpretation
Selection or switch changes immediatelyLocal/optimistic presentation; server settlement may still be pending
Success message appearsOne response was accepted; other local/device/provider layers remain separate
Error appears and the control stays changedLocal and server state may disagree; do not infer rollback
Session row disappearsThe local list changed; authoritative revocation and downstream teardown require confirmation
Screen closes or account returns to entryNavigation/local state changed; server logout or revocation can still be unknown
Response is lost or app restartsKeep the exact operation unknown; do not automatically repeat it

Troubleshooting safely

A settings row is missing

Use only the rows currently available. Do not use a private route or another account/project to force the surface.

The language changed only on part of the app

Treat translation state as unsettled. Avoid repeated language or project changes until the current app context is stable.

A notification switch changed or returned to its prior state

Treat the account preference as unknown. Do not change OS permission or send a test notification to determine the result.

Notifications still appear after a promotional preference is off

Promotional preference, operational notices, OS permission, device installation, and provider delivery are separate. Do not infer that one of those layers failed or succeeded from a single notification.

A session action is busy, errors, or loses its response

Do not repeat it or choose a broader revoke-all action. Reconcile the current session list through the same authorized Security surface.

Logout returns an unexpected screen or notifications continue

Do not infer complete sign-out or provider teardown. Avoid copying account, session, device, or notification details into diagnostics.

Accessibility and privacy

Every row, language choice, notification switch, current-session marker, destructive action, confirmation, busy/error/unknown state, and Logout control needs a clear name, role, state, consequence, focus order, and predictable return. Large text must keep consequences and cancel actions visible; screen readers must announce selection, checked state, current session, progress, error, and unknown settlement without exposing private session or device data.

These are verification requirements, not a current accessibility or privacy certification.

When to recertify

Repeat isolated review after changes to Profile row gates; available-language reads, storage, API language or translations; notification defaults, preference mount/toggle behavior, consent, OS permission, device installation or push provider lifecycle; session list/strategy/current/all revocation; Logout server/ local teardown; account/project switching, socket/provider cleanup; review-prompt eligibility; accessibility; or App/components/API authority pins.


Related guides: Profile and account overview · Privacy and consent · Use the app offline and reconnect · Platform and accessibility behavior · Push-notification boundaries · Customer App experience variants