{"id":24061091,"url":"https://github.com/gtokman/extensionkit","last_synced_at":"2025-03-22T21:10:10.177Z","repository":{"id":52209545,"uuid":"361185778","full_name":"gtokman/ExtensionKit","owner":"gtokman","description":"Helpful extensions for iOS app development 🚀 ","archived":false,"fork":false,"pushed_at":"2024-09-23T13:16:40.000Z","size":255,"stargazers_count":127,"open_issues_count":0,"forks_count":8,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-14T23:04:39.946Z","etag":null,"topics":["bottomsheet","corelocation","extensions","helpers","ios","keyboard","shimmer","spm","swift","swiftui","uikit","userdefaults","xcode"],"latest_commit_sha":null,"homepage":"","language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gtokman.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-04-24T14:39:16.000Z","updated_at":"2025-02-05T14:36:25.000Z","dependencies_parsed_at":"2025-01-30T21:11:18.575Z","dependency_job_id":"213bb834-1f2d-4d0b-8bc1-e6a0fb3d09c5","html_url":"https://github.com/gtokman/ExtensionKit","commit_stats":null,"previous_names":[],"tags_count":33,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gtokman%2FExtensionKit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gtokman%2FExtensionKit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gtokman%2FExtensionKit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gtokman%2FExtensionKit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gtokman","download_url":"https://codeload.github.com/gtokman/ExtensionKit/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245020339,"owners_count":20548179,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bottomsheet","corelocation","extensions","helpers","ios","keyboard","shimmer","spm","swift","swiftui","uikit","userdefaults","xcode"],"created_at":"2025-01-09T07:17:03.630Z","updated_at":"2025-03-22T21:10:10.051Z","avatar_url":"https://github.com/gtokman.png","language":"Swift","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n[![Release](https://img.shields.io/github/release/gtokman/extensionkit.svg)](https://github.com/gtokman/extensionkit/releases)\n![Swift 5.3](https://img.shields.io/badge/Swift-5.3-orange.svg)\n[![Swift Package Manager Compatible](https://img.shields.io/badge/spm-compatible-brightgreen.svg)](https://swift.org/package-manager)\n![Supported Platform](https://img.shields.io/badge/platform-iOS-lightgrey)\n\n\u003cimg alt=\"Screen Shot 2021-04-24 at 3 58 58 PM\" src=\"https://user-images.githubusercontent.com/12258850/115971376-1380be00-a516-11eb-82cd-451d7e0378fc.png\"\u003e\n\n# Documentation\n\nExtensionKit includes many extensions, from getting the user **[location](Documentation/Reference/ExtensionKit/extensions/CLLocationManager.md#receivelocationupdatesonetime) with a deterministic Combine API** to a **[shimmer](Documentation/Reference/ExtensionKit/extensions/View.md#shimmerisactivespeedangle) loading animation**, to **[keyboard](Documentation/Reference/ExtensionKit/extensions/View.md#keyboardstateinfo) notification updates**, **[bottom sheet](Documentation/Reference/ExtensionKit/extensions/View.md#bottomsheetispresentedheightanimationthumbhiddencontent)** and much much more. Check out the docs below or install the library with SPM to try it out.\n\nMany extensions are things I find cumbersome in everyday iOS dev so I made a package where I can reference the them anytime. Lastly, a lot of these are inspired or taken from open source projects and articles from the Swift community ❤️\n\n\u003cbr\u003e\n\n![2021-05-08 18 51 31](https://user-images.githubusercontent.com/12258850/117555631-cbda5600-b02e-11eb-8205-26322c8afe34.gif)\n\n\n## Extensions\n\n### SwiftUI\n\n-   [Button](Documentation/Reference/ExtensionKit/extensions/Button.md)\n-   [Binding](Documentation/Reference/ExtensionKit/extensions/Binding.md)\n-   [Color](Documentation/Reference/ExtensionKit/extensions/Color.md)\n-   [GeometryProxy](Documentation/Reference/ExtensionKit/extensions/GeometryProxy.md)\n-   [Preview](Documentation/Reference/ExtensionKit/structs/Preview.md)\n-   [Image](Documentation/Reference/ExtensionKit/extensions/Image.md)\n-   [Shape](Documentation/Reference/ExtensionKit/extensions/Shape.md)\n-   [Text](Documentation/Reference/ExtensionKit/extensions/Text.md)\n-   [View](Documentation/Reference/ExtensionKit/extensions/View.md)\n\n### Combine\n\n-   [Publisher](Documentation/Reference/ExtensionKit/extensions/Publisher.md)\n\n### Property Wrappers\n\n-   [UserDefault](Documentation/Reference/ExtensionKit/structs/UserDefault.md)\n\n### UIKit\n\n-   [UIApplication](Documentation/Reference/ExtensionKit/extensions/UIApplication.md)\n-   [UIButton](Documentation/Reference/ExtensionKit/extensions/UIButton.md)\n-   [UIColor](Documentation/Reference/ExtensionKit/extensions/UIColor.md)\n-   [UIImage](Documentation/Reference/ExtensionKit/extensions/UIImage.md)\n-   [UITableView](Documentation/Reference/ExtensionKit/extensions/UITableView.md)\n-   [UIViewController](Documentation/Reference/ExtensionKit/extensions/UIViewController.md)\n-   [UIView](Documentation/Reference/ExtensionKit/extensions/UIView.md)\n\n### Foundation\n\n-   [Array](Documentation/Reference/ExtensionKit/extensions/Array.md)\n-   [Bundle](Documentation/Reference/ExtensionKit/extensions/Bundle.md)\n-   [CFRunLoopTimer](Documentation/Reference/ExtensionKit/extensions/CFRunLoopTimer.md)\n-   [Collection](Documentation/Reference/ExtensionKit/extensions/Collection.md)\n-   [Data](Documentation/Reference/ExtensionKit/extensions/Data.md)\n-   [Date](Documentation/Reference/ExtensionKit/extensions/Date.md)\n-   [DispactQueue](Documentation/Reference/ExtensionKit/extensions/DispactQueue.md)\n-   [FileManager](Documentation/Reference/ExtensionKit/extensions/FileManager.md)\n-   [Int](Documentation/Reference/ExtensionKit/extensions/Int.md)\n-   [NSObject](Documentation/Reference/ExtensionKit/extensions/NSObject.md)\n-   [UserDefaults](Documentation/Reference/ExtensionKit/extensions/UserDefaults.md)\n-   [RandomAccessCollection](Documentation/Reference/ExtensionKit/extensions/RandomAccessCollection.md)\n-   [String](Documentation/Reference/ExtensionKit/extensions/String.md)\n-   [String.Index](Documentation/Reference/ExtensionKit/extensions/String.Index.md)\n-   [Timer](Documentation/Reference/ExtensionKit/extensions/Timer.md)\n-   [URL](Documentation/Reference/ExtensionKit/extensions/URL.md)\n\n### CoreGraphics\n\n-   [CGPoint](Documentation/Reference/ExtensionKit/extensions/CGPoint.md)\n-   [CGRect](Documentation/Reference/ExtensionKit/extensions/CGRect.md)\n\n### CoreLocation\n\n-   [CLLocation](Documentation/Reference/ExtensionKit/extensions/CLLocation.md)\n-   [CLLocationManager](Documentation/Reference/ExtensionKit/extensions/CLLocationManager.md)\n-   [CLLocationCoordinate2D](Documentation/Reference/ExtensionKit/extensions/CLLocationCoordinate2D.md)\n\n## Methods\n\n-   [+](Documentation/Reference/ExtensionKit/methods/+(____).md)\n-   [-](Documentation/Reference/ExtensionKit/methods/-(____).md)\n-   [/](Documentation/Reference/ExtensionKit/methods/_(____).md)\n-   [*](Documentation/Reference/ExtensionKit/methods/_(____).md)\n-   [dprint(__)](Documentation/Reference/ExtensionKit/methods/dprint(__).md)\n-   [sleep(duration_)](Documentation/Reference/ExtensionKit/methods/sleep(duration_).md)\n\n## Structs\n\n-   [Screen](Documentation/Reference/ExtensionKit/structs/Screen.md)\n-   [KeyboardInfo](Documentation/Reference/ExtensionKit/structs/KeyboardInfo.md)\n\n\n## Installation\n\nAdd the url for ExtensionKit in Xcode with SPM and `Import ExtensionKit` to start using it (iOS 13+).\n\u003cbr\u003e\n\n[![Release](https://img.shields.io/github/release/gtokman/extensionkit.svg)](https://github.com/gtokman/extensionkit/releases)\n\n\n```\nhttps://github.com/gtokman/ExtensionKit.git\n```\n\n\n## Contact\nFollow and contact me on Twitter at [@f6ary](https://www.twitter.com/f6ary).\n\n\n## Contributions\nIf you find an issue, just [open a ticket](https://github.com/gtokman/extensionkit/issues/new)\non it. Pull requests are warmly welcome as well, especially SwiftUI or AVFoundation!\n\n**Steps**\n\n1. Clone repo\n2. **Important** pls use [semantic commit](https://github.com/conventional-changelog/commitlint#what-is-commitlint) messages (ex: `feat: your description`)\n3. Add extension to [source](Sources/ExtensionKit/) directory\n4. Tests are optional but add any in the [Tests](Tests) directory\n5. Add documentation to the extension (opt + cmd + /) in Xcode\n6. Submit a PR\n7. After it merges, I'll cut a new release and update the docs\n\n## License\nExtensionKit is licensed under the MIT license.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgtokman%2Fextensionkit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgtokman%2Fextensionkit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgtokman%2Fextensionkit/lists"}