Swiftpack.co - CSolanaM/SkeletonUI as Swift Package

Swiftpack.co is a collection of thousands of indexed Swift packages. Search packages.
See all packages published by CSolanaM.
CSolanaM/SkeletonUI 2.0.0
☠️ Elegant skeleton loading animation in lightweight SwiftUI
⭐️ 679
🕓 4 weeks ago
iOS macOS watchOS tvOS
.package(url: "https://github.com/CSolanaM/SkeletonUI.git", from: "2.0.0")

SkeletonUI aims to bring an elegant, declarative syntax to skeleton loading animations. Get rid of loading screens or spinners and start using skeletons to represent final content shapes.

Requirements :gear:

  • macOS 10.15.
  • Xcode 11.0.
  • Swift 5.0.

Supported Platforms :iphone:

  • iOS 13.0.
  • tvOS 13.0.
  • watchOS 6.0.
  • macOS 10.15.

Installation :computer:

Swift Package Manager

Swift Package Manager is a tool for automating the distribution of Swift code and is integrated into the swift compiler. Once you have your Swift package set up, adding SkeletonUI as a dependency is as easy as adding it to the dependencies value of your Package.swift.

  dependencies: [
  .package(url: "https://github.com/CSolanaM/SkeletonUI.git", .branch("master"))


CocoaPods is a centralized dependency manager for Cocoa projects. For usage and installation instructions, visit their website. To integrate SkeletonUI into your Xcode project using CocoaPods, specify it in your Podfile:

pod 'SkeletonUI'

Features :sparkles:

  • ☑ SwiftUI simple, declarative syntax.
  • ☑ Super easy and simple to set up.
  • ☑ All Views are skeletonables.
  • ☑ Fully customizable.
  • ☑ Universal (iPhone, iPad, iPod, Apple TV, Apple Watch, Mac).
  • ☑ SwiftUI ViewModifier power.
  • ☑ Lightweight codebase.

Usage :rocket:

Basic one-liner:

import SkeletonUI
import SwiftUI

struct UsersView: View {
    @State var users = [String](https://raw.github.com/CSolanaM/SkeletonUI/develop/)

    var body: some View {
        Text("Finished requesting \(users.count) users!")
            .skeleton(with: users.isEmpty)
            .onAppear {
                DispatchQueue.main.asyncAfter(deadline: .now() + 5) {
                    self.users = ["John Doe", "Jane Doe", "James Doe", "Judy Doe"]

Advanced customization:

import SkeletonUI
import SwiftUI

struct User: Identifiable {
    let id = UUID()
    let name: String

struct UsersView: View {
    @State var users = [User](https://raw.github.com/CSolanaM/SkeletonUI/develop/)

    var body: some View {
        SkeletonList(with: users, quantity: 6) { loading, user in
                .skeleton(with: loading,
                          animation: .pulse(),
                          appearance: .solid(color: .red, background: .blue),
                          shape: .rectangle,
                          lines: 3,
                          scales: [1: 0.5])
        .onAppear {
            DispatchQueue.main.asyncAfter(deadline: .now() + 5) {
                self.users = [User(name: "John Doe"),
                              User(name: "Jane Doe"),
                              User(name: "James Doe"),
                              User(name: "Judy Doe")]

Change Log :calendar:

See CHANGELOG.md for details.

Contributing :tada:

  • Suggest your idea as a feature request for this project.
  • Create a bug report to help us improve.
  • Propose your own fixes, suggestions and open a pull request with the changes.

See CONTRIBUTING.md for details.

Code of Conduct :speech_balloon:

See CODE_OF_CONDUCT.md for details.

Credits :speak_no_evil:

SkeletonUI is owned and maintained by CSolanaM. You can follow me on Twitter at @CSolanaM or contact me via email for project updates and releases.

License :mortar_board:

SkeletonUI is released under the MIT license. See LICENSE for details.


Stars: 679
Last commit: 4 weeks ago
jonrohan Something's broken? Yell at me @ptrpavlik. Praise and feedback (and money) is also welcome.

Release Notes

4 weeks ago




  • Refactored old codebase to meet current SwiftUI standards. No Combine needed anymore!



  • Animations now use AnimatableModifier, improving performance and reliability

Swiftpack is being maintained by Petr Pavlik | @ptrpavlik | @swiftpackco | API | Analytics