Bottom Sheet expand animation in mobile app

NOVASOLUTIONS.TECHNOLOGY is engaged in the development, support and maintenance of iOS, Android, PWA mobile applications. We have extensive experience and expertise in publishing mobile applications in popular markets like Google Play, App Store, Amazon, AppGallery and others.
Development and support of all types of mobile applications:
Information and entertainment mobile applications
News apps, games, reference guides, online catalogs, weather apps, fitness and health apps, travel apps, educational apps, social networks and messengers, quizzes, blogs and podcasts, forums, aggregators
E-commerce mobile applications
Online stores, B2B apps, marketplaces, online exchanges, cashback services, exchanges, dropshipping platforms, loyalty programs, food and goods delivery, payment systems.
Business process management mobile applications
CRM systems, ERP systems, project management, sales team tools, financial management, production management, logistics and delivery management, HR management, data monitoring systems
Electronic services mobile applications
Classified ads platforms, online schools, online cinemas, electronic service platforms, cashback platforms, video hosting, thematic portals, online booking and scheduling platforms, online trading platforms

These are just some of the types of mobile applications we work with, and each of them may have its own specific features and functionality, tailored to the specific needs and goals of the client.

Showing 1 of 1 servicesAll 1735 services
Bottom Sheet expand animation in mobile app
Medium
~1 business day
FAQ
Our competencies:
Development stages
Latest works
  • image_mobile-applications_feedme_467_0.webp
    Development of a mobile application for FEEDME
    756
  • image_mobile-applications_xoomer_471_0.webp
    Development of a mobile application for XOOMER
    624
  • image_mobile-applications_rhl_428_0.webp
    Development of a mobile application for RHL
    1052
  • image_mobile-applications_zippy_411_0.webp
    Development of a mobile application for ZIPPY
    947
  • image_mobile-applications_affhome_429_0.webp
    Development of a mobile application for Affhome
    862
  • image_mobile-applications_flavors_409_0.webp
    Development of a mobile application for the FLAVORS company
    445

Bottom Sheet Expand Animation Implementation in Mobile Apps

A Bottom Sheet is one of those components where the difference between "works" and "feels right" is immediately noticeable. Spring-like expansion, tactile responsiveness to swipe, smooth background dimming—users feel this without conscious thought. Wooden animation or gesture interruption signals poor overall quality.

Where It Usually Breaks

The most common iOS issue: conflict between UIPanGestureRecognizer and scroll inside the sheet. User pulls content up, expects scroll, but sheet collapses instead. Standard UISheetPresentationController (iOS 15+) handles this via prefersGrabberVisible and fixed detents, but adding custom UIScrollView inside causes gestureRecognizerShouldBegin problems.

On Android, similar issue with BottomSheetBehavior from Material Components: with peekHeight equal to content height and hideable = true, sheet sometimes collapses on any downward swipe—because NestedScrollView doesn't pass events correctly when scrollY == 0.

In Flutter showModalBottomSheet gives minimal animation control. Real customization starts with DraggableScrollableSheet + AnimationController with SpringSimulation—only then does physical spring behavior emerge instead of linear ease-out.

How We Build It

On iOS, use UIViewPropertyAnimator with UISpringTimingParameters and custom UIPresentationController. This allows interrupting animation mid-gesture and smoothly changing speed without artifacts. Key: dampingRatio and initialVelocity must match current panGesture.velocity(in:) speed—otherwise sheet "bounces" on sudden release.

let velocity = panGesture.velocity(in: view)
let springParams = UISpringTimingParameters(
    dampingRatio: 0.8,
    initialVelocity: CGVector(dx: 0, dy: velocity.y / remainingDistance)
)
let animator = UIViewPropertyAnimator(duration: 0.5, timingParameters: springParams)

On Android, work with BottomSheetBehavior + custom CoordinatorLayout.Behavior for non-standard behavior. For complex cases with multiple snap-points, use MotionLayout with ConstraintSet for each state. onSlide callback enables parallel scrim and content animation.

In Flutter, use DraggableScrollableSheet with DraggableScrollableController for programmatic control + HapticFeedback.lightImpact() at snap-points. For demanding cases, use modal_bottom_sheet package (woltapp), which implements native physics via Simulation.

Nuances Handled Separately

  • Safe area handling: on Dynamic Island iPhones, sheet shouldn't cover Home indicator or extend under notch
  • Keyboard: when UIKeyboard appears, sheet shifts up with animation timed to system keyboard (UIKeyboardAnimationDurationUserInfoKey)
  • Haptic feedback: UIImpactFeedbackGenerator on iOS, VibrationEffect.createOneShot on Android—small detail users notice

Process

Start with existing component audit or requirements. If design exists in Figma with prototype, extract spring parameters (stiffness, damping) from Figma Spring Animation and port directly to code. Without design, calibrate parameters on interactive prototype before final implementation.

Testing includes slow animations mode (Simulator → Debug → Slow Animations) for smoothness check and XCTest for gesture regression.

Timeline: 1–2 days per platform, including integration into existing project and tests.