Skip to content

[PC TV] Smooth out transitions between main screens#4612

Open
SergioEstevao wants to merge 2 commits into
trunkfrom
sergio/pc-tv/improve_main_screens_transitions
Open

[PC TV] Smooth out transitions between main screens#4612
SergioEstevao wants to merge 2 commits into
trunkfrom
sergio/pc-tv/improve_main_screens_transitions

Conversation

@SergioEstevao

@SergioEstevao SergioEstevao commented Jun 25, 2026

Copy link
Copy Markdown
Contributor
Fixes PCIOS-794

Summary

Improves the transitions between the main screens of the Pocket Casts TV app so switching between the loading, welcome, main tab, sign-in, data-loss-resync, and signed-out states feels smoother and no longer briefly flashes the previous screen.

Changes:

  • RootView: each state case now uses an explicit .transition(.opacity) and the root animation driving coordinator.state changes was switched from .easeInOut to .smooth.
  • SigningInView: the black overlay fade now uses .smooth instead of .easeInOut(duration:), avoiding the bounce that could reveal the previous screen.

To test

  1. Launch the Pocket Casts TV app.
  2. Move through the main flows: launch (loading) → welcome → sign in → main tabs, and sign out.
  3. Confirm the transitions between screens fade smoothly with no bounce and without briefly showing the previous screen.
  4. With Reduce Motion enabled, confirm transitions still behave correctly.

Checklist

  • I have considered if this change warrants user-facing release notes and have added them to CHANGELOG.md if necessary.
  • I have considered adding unit tests for my changes.
  • I have updated (or requested that someone edit) the Event Horizon schema to reflect any new or changed analytics.

@dangermattic

dangermattic commented Jun 25, 2026

Copy link
Copy Markdown
Collaborator
1 Warning
⚠️ View files have been modified, but no screenshot or video is included in the pull request. Consider adding some for clarity.

Generated by 🚫 Danger

@SergioEstevao SergioEstevao requested a review from a team as a code owner June 25, 2026 17:45
@SergioEstevao SergioEstevao requested review from Copilot and kean and removed request for a team June 25, 2026 17:45

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Improves Pocket Casts TV app root-level screen transitions to avoid briefly flashing the previous screen when moving between major app states (loading/welcome/sign-in/main/etc).

Changes:

  • Added explicit .transition(.opacity) to each RootView state case and changed the driving animation on coordinator.state updates to .smooth.
  • Updated SigningInView’s black overlay fade animation to use .smooth (instead of a timed .easeInOut) to reduce bounce/flash risk during sign-in handoff.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 2 comments.

File Description
Pocket Casts TV App/UI/RootView.swift Adds opacity transitions per state and switches the state-change animation to .smooth.
Pocket Casts TV App/UI/Auth/SigningInView.swift Adjusts the black overlay fade animation curve used during the sync/sign-in flow.

Comment on lines 34 to 36
}
.animation(.easeInOut, value: coordinator.state)
.animation(.smooth, value: coordinator.state)
.environment(coordinator)
Comment on lines 71 to 74
Color.pcBackgroundSunken
.opacity(blackOverlayOpaque ? 1 : 0)
.animation(reduceMotion ? nil : .easeInOut(duration: Pacing.fadeDuration), value: blackOverlayOpaque)
.animation(reduceMotion ? nil : .smooth, value: blackOverlayOpaque)
.allowsHitTesting(false)
@SergioEstevao SergioEstevao added this to the 8.16 milestone Jun 25, 2026
.transition(.opacity)
case .serverSignedOut:
UserSignedOutView()
.transition(.opacity)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

(nit) if you want to apply them everywhere, I'd suggest using Group

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants