Skip to content

fix(profile): polish the deactivated account screen on web and mobile#14533

Merged
dylanjeffers merged 2 commits into
mainfrom
fix/deactivated-account-screen
Jul 23, 2026
Merged

fix(profile): polish the deactivated account screen on web and mobile#14533
dylanjeffers merged 2 commits into
mainfrom
fix/deactivated-account-screen

Conversation

@dylanjeffers

Copy link
Copy Markdown
Contributor

Description

The deactivated / deleted account profile page looked broken: the "This Account No Longer Exists" message was pinned to the top of a mostly empty page, there was no cover photo, and the profile picture sat on a loading skeleton forever.

What changed

Shared tombstone (web)

  • Rebuilt DeactivatedProfileTombstone as a proper centered empty state — heading, supporting copy, and the CTA — using harmony primitives. Deleted the CSS module, including its margin-left: -229px hack for undoing the desktop left-column padding.

Desktop profile page

  • Pass the real userId to CoverPhoto and ProfilePicture. useCoverPhoto/useProfilePicture already scrub deactivated accounts' images and return the default placeholders (privacy/GDPR), so withholding the id was redundant and harmful: useImageSize early-returns when there's no artwork, leaving imageUrl undefined, so the cover photo rendered as bare gradient and the avatar never left its shimmer skeleton.
  • Removed the left-column spacer wrapper so the message centers across the full content width.

Mobile web

  • ProfileHeader now renders the default avatar for deactivated accounts instead of an empty src.

Native (React Native)

  • The tombstone now fills the viewport (flex: 1) so the message is vertically centered rather than stuck under the header, and it shows the default cover photo strip and default avatar.

Verification

Ran the web dev server against production and loaded /cyranomusic (a deactivated account). Before: no cover photo, skeleton avatar, message pinned to the top. After: default Audius cover photo, default avatar, and the message + button centered in the content area. Typecheck and lint pass for all touched files.

Native change verified by inspection — no simulator run.

🤖 Generated with Claude Code

The deactivated profile page rendered its message pinned to the top of a
mostly empty page, with no cover photo and a profile picture stuck on a
loading skeleton.

- Rebuild the tombstone as a centered empty state (heading + supporting
  copy + button) using harmony primitives, replacing the CSS module and
  its negative-margin hack for the desktop left column.
- Desktop: pass the real userId to CoverPhoto/ProfilePicture. The image
  hooks already scrub deactivated accounts' images and return the default
  placeholders; withholding the id left useImageSize unresolved, so no
  cover photo rendered and the avatar never left its skeleton.
- Mobile web: show the default avatar instead of an empty src.
- Native: fill the viewport so the message is vertically centered, and
  show the default cover photo and avatar.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@changeset-bot

changeset-bot Bot commented Jul 22, 2026

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: eac88e4

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

…le web)

The tombstone was capped at `clamp(240px, 32vh, 420px)`, so on mobile web
it ended partway down the screen and left roughly half the viewport as
dead grey space below the button.

Mirror what the native screen already does and let the tombstone flex to
fill instead:

- Stretch the mobile page container to the scroll area for deactivated
  profiles (`min-height: 100%`, not `100dvh` — the latter overflows by the
  height of the announcement banner stacked above it).
- Give the tombstone `flex: 1` on mobile web and render it as a direct
  child of the container so the flex line applies. Desktop keeps the
  fixed minimum, since that page is sized by its content.
- Stop `.headerContainer` (`flex: 1`) from growing when deactivated.
  Otherwise the header and tombstone split the free space and a ~200px
  blank band opens up between the avatar and the message.

Verified on /cyranomusic under iPhone 13 emulation: page height now equals
the viewport with zero overflow, and a normal profile is unchanged.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@dylanjeffers
dylanjeffers merged commit 90b3c1f into main Jul 23, 2026
16 checks passed
@dylanjeffers
dylanjeffers deleted the fix/deactivated-account-screen branch July 23, 2026 20:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant