Project

General

Profile

Actions

Feature #26

open

X app: icon press to actual app opening transition. How it was made?

Added by KGB Seattle about 2 months ago.

Status:
New
Priority:
Normal
Assignee:
Start date:
05/15/2026
Due date:
% Done:

0%

Estimated time:

Description

То как application открывается, это своего рода как обложка а книжки. Может технологически и функционально не важно, но изначальное впечатление начинается с самого начала. Так что вот, как один из примеров.

https://github.com/WesCSK/Animated-splash-screen-with-SwiftUI-Twitter-splash-screen

https://github.com/waseefakhtar/MotionLayoutTwitter

The X app (formerly Twitter) uses a custom animated splash/launch screen transition. When you tap the app icon on the home screen, the system shows a static launch image first (standard on iOS/Android), then the app loads and runs a custom animation: the X logo (or former bird) scales/pulses and dramatically expands to “reveal” the app’s home feed underneath. @iorel_x
This is not the default OS icon-zoom launch animation (though that still happens at the OS level). It’s an in-app effect built by X’s developers for branding.
How It’s Typically Implemented (iOS Focus)
This technique has been widely replicated since the original Twitter version. Here’s the core idea:

  1. Static Launch Screen (instant, non-animatable):
    • Use LaunchScreen.storyboard (iOS) with a centered logo on a solid background (e.g., black or X’s brand color).
    • This shows immediately while the app initializes.
  2. Animated Splash View (in-app):
    • A matching view controller/window overlays the real app content.
    • The logo starts at normal size, often does a small scale-down then big scale-up animation (using Core Animation / CAKeyframeAnimation for precise timing, e.g., scale to 0.75x then up to 30-40x depending on screen size). medium.com
  3. The “Reveal” Effect (the magic part):
    • The logo is used as a mask on a layer covering the app content.
    • As the mask (logo) scales up massively, it creates a circular/oval “hole” that expands outward, revealing the underlying feed.
    • A background layer (often the same solid color) fades or is masked similarly.
    • The foreground splash window is hidden/faded as the animation completes. reactnative.dev
    Key techniques:
    • Multiple UIWindows (one for background splash, one for foreground animated logo) layered above the main app window.
    • CALayer.mask with scaling animation.
    • CATransaction or animation groups for synchronization.
    • The animation runs in viewDidAppear or via an AppDelegate/presenter for context-independent behavior (works even from notifications).
    SwiftUI alternatives exist using .scaleEffect, masks, and withAnimation, but UIKit/Core Animation gives more precise control for this effect. Many tutorials replicate the old Twitter bird version. youtube.com
    On Android
    X uses the Android SplashScreen API (Android 12+), which supports animated icons out of the box. Custom transitions often use:
    • MotionLayout (ConstraintLayout animations) for scaling sequences. youtube.com
    • Or Jetpack Compose with animated splash composables.
    • The logo/icon scales and transitions into the main UI.
    Why This Feels Special
    • It bridges the static launch screen seamlessly to live content.
    • The expanding mask creates an engaging, branded “opening” effect rather than a plain fade.
    • Timing is tuned (often ~300-800ms) so it feels responsive.
    You can find open-source recreations on GitHub (search “Twitter splash animation Swift” or “Android MotionLayout Twitter”) or follow detailed Medium tutorials that break down the mask + scaling code. medium.com
    If you’re building something similar, start with the static launch screen, then layer a masked animated view on top. Let me know the platform (iOS/Android/React Native) for more specific code snippets!​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​

No data to display

Actions

Also available in: Atom PDF