Arkadiusz Fal f4d4daccd0 Optimize SwiftUI performance throughout the app
This commit addresses multiple SwiftUI performance bottlenecks identified
through code analysis, focusing on view rendering efficiency, list
performance, and memory usage optimization.

Key improvements:

- HomeView: Optimize async task management using structured concurrency
  with async let to handle multiple Defaults updates in a single task

- VideoCell: Remove GeometryReader from VideoCellThumbnail to eliminate
  layout thrashing; change @ObservedObject to computed property for shared
  ThumbnailsModel

- ThumbnailView: Cache URL extension computation in init() instead of
  recalculating on every body evaluation

- FavoriteItemView: Replace filter().prefix() with early-exit loop and
  capacity reservation for significant performance gain on large lists

- ContentItemView: Optimize FetchRequest creation with direct predicate
  construction only for video items, empty predicate for others

- VideoPlayerView: Fix playerSize didSet trigger by moving
  updateSidebarQueue() calls to explicit onChange/onAppear handlers

- FeedView: Replace .unique() with Set-based deduplication for O(n)
  performance and reduced allocations

- VerticalCells: Remove expensive sorting on every redraw; items should
  be pre-sorted from source

These optimizations follow SwiftUI best practices by minimizing expensive
computations in view bodies, caching computed values, using efficient data
structures, and avoiding unnecessary redraws and layout passes.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-09 18:14:35 +01:00
2025-06-17 16:26:24 +02:00
2023-10-15 14:08:08 +02:00
2024-08-18 14:46:51 +02:00
2023-02-05 14:24:14 +01:00
2024-09-06 16:47:15 +02:00
2025-03-18 22:56:45 +01:00
2024-11-08 15:09:59 +01:00
2024-05-16 19:01:02 +02:00
2021-11-07 15:37:32 +01:00
2021-11-07 15:37:32 +01:00
2022-10-27 18:03:57 +02:00
2024-08-24 14:30:51 +02:00
2024-05-16 19:01:02 +02:00
2025-11-07 12:33:59 +00:00
2023-02-25 14:51:50 +01:00
2021-08-24 23:01:53 +02:00
2021-06-19 22:17:48 +02:00
2023-07-24 19:45:30 +02:00
2025-06-17 16:12:13 +02:00
2024-07-06 11:45:15 +02:00
2025-06-17 16:27:39 +02:00
2021-11-10 00:25:38 +01:00

Yattee logo

Yattee

Privacy oriented video player for iOS, tvOS and macOS

AGPL v3 GitHub issues GitHub pull requests Matrix

Discord

Screenshot

Features

  • Native user interface built with SwiftUI with customization settings
  • Player queue and history
  • Player component with custom controls, gestures and support for 4K playback
  • Fullscreen, Picture in Picture and background audio playback
  • SponsorBlock, configurable categories to skip

Documentation

Contributing

If you're interestred in contributing, you can browse the issues list or create a new one to discuss your feature idea. Every contribution is very welcome.

Use building instructions or join Discord or Matrix Channel for a chat if you need an advice or want to discuss the project.

Translations

You can help to make this project accessible to everyone by contributing to its localizations. Translation status

Localization service and hosting is provided by Weblate.

License

Yattee and its components is shared on AGPL v3 license.

Description
Privacy oriented video player for iOS, tvOS and macOS
Readme AGPL-3.0 326 MiB
Languages
Swift 99.4%
Ruby 0.6%