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 does not confirm completion

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 controlRendering the control does not sign you out; local notification-installation state is read when Logout is requestedRequest Logout

Opening Notifications can begin preference persistence from initialized state without waiting for a switch. Do not assume that opening the screen is read-only; treat a preference as changed only after an explicit action and a current result.

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 tied to its purpose, account, project, policy, and time
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 feature.

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 authoritative revocation confirmation
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 accessibility and privacy requirements; they do not establish current support in those areas.

What can affect settings​

Settings behavior can vary with 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; accessibility; or changes in the app, its components, or related services.


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