mirror of
https://github.com/yattee/yattee.git
synced 2025-11-12 21:28:42 +00:00
f4d4daccd0bbd36414b321453120611d908e7531
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>
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.
Localization service and hosting is provided by Weblate.
License
Yattee and its components is shared on AGPL v3 license.
Languages
Swift
99.4%
Ruby
0.6%
