{"id":20650037,"url":"https://github.com/kc-2001ms/onboardingui","last_synced_at":"2026-05-09T13:27:38.487Z","repository":{"id":212986829,"uuid":"494849542","full_name":"KC-2001MS/OnboardingUI","owner":"KC-2001MS","description":"Library to easily build onboarding like Apple's stock apps with SwiftUI","archived":false,"fork":false,"pushed_at":"2026-05-09T11:18:46.000Z","size":102660,"stargazers_count":22,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-05-09T13:23:06.593Z","etag":null,"topics":["gui","swift","swift-package-manager","swiftui","ui"],"latest_commit_sha":null,"homepage":"","language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/KC-2001MS.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2022-05-21T17:23:02.000Z","updated_at":"2026-05-09T11:14:39.000Z","dependencies_parsed_at":"2024-01-27T21:23:27.538Z","dependency_job_id":"524929bf-9e44-4173-a022-bae16bf59f94","html_url":"https://github.com/KC-2001MS/OnboardingUI","commit_stats":null,"previous_names":["kc-2001ms/onboardingui"],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/KC-2001MS/OnboardingUI","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KC-2001MS%2FOnboardingUI","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KC-2001MS%2FOnboardingUI/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KC-2001MS%2FOnboardingUI/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KC-2001MS%2FOnboardingUI/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/KC-2001MS","download_url":"https://codeload.github.com/KC-2001MS/OnboardingUI/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KC-2001MS%2FOnboardingUI/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32820868,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-08T08:22:46.396Z","status":"online","status_checked_at":"2026-05-09T02:00:06.633Z","response_time":123,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["gui","swift","swift-package-manager","swiftui","ui"],"created_at":"2024-11-16T17:17:43.686Z","updated_at":"2026-05-09T13:27:38.452Z","avatar_url":"https://github.com/KC-2001MS.png","language":"Swift","funding_links":["https://www.buymeacoffee.com/iroiro","https://paypal.me/iroiroWork?country.x=JP\u0026locale.x=ja_JP"],"categories":[],"sub_categories":[],"readme":"# OnboardingUI\n\nSwiftUI library to implement first-party app-like onboarding\n\n## Description\n\nThis library allows you to implement onboarding designs as implemented in first-party apps in your own apps.\nSince the library is made by SwiftUI, you can implement onboarding with fewer lines. It is ideal for introducing new features or displaying at first launch.\n\n## Requirement\n\nThe following environment is required to use this library.  \n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/macOS-14.0+-red.svg\" /\u003e\n    \u003cimg src=\"https://img.shields.io/badge/iOS-17.0+-green.svg\" /\u003e\n    \u003cimg src=\"https://img.shields.io/badge/iPadOS-17.0+-brightgreen.svg\" /\u003e\n    \u003cimg src=\"https://img.shields.io/badge/visionOS-1.0+-blue.svg\" /\u003e\n    \u003cimg src=\"https://img.shields.io/badge/tvOS-17.0+-white.svg\" /\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Swift-5.9-DE5D43.svg\" /\u003e\n    \u003ca href=\"https://twitter.com/IroIro1234work\"\u003e\n        \u003cimg src=\"https://img.shields.io/badge/Contact-@IroIro1234work-lightgrey.svg?style=flat\" alt=\"Twitter: @IroIro1234work\" /\u003e\n    \u003c/a\u003e\n\u003c/p\u003e\n\n※　We do not support watchOS. This is because the screen size is small for watchOS and we believe that onboarding will negatively impact the user experience.  \n※　Support for tvOS is ongoing. Reproducibility is low due to the lack of onboarding documentation for stock tvOS apps and the SwiftUI's unique behavior.\n\n## Language\n\nSupported languages are as follows In regions with languages other than these, English should be displayed.\nIf you would like to add more supported languages, please edit Localizable.xcstrings and do the translation work.\n\n- English\n- Japanese\n\n## Demo\n\nTo verify the operation of this library, we created a sample application in the library. Please refer to it.\n\n## Usage\n\nThis framework has two methods: a method that can easily implement the entire onboarding process and a method that can easily implement a portion of it.  \n\n### Simple implementation\n\nThis is the easiest code to onboard.  \n\n```swift\nstruct WelcomeOnboarding: Onboarding {\n    var title: Text {\n        Text(\"Welcome to\\nOnboardingUI\")\n    }\n    \n    var features: Array\u003cFeature\u003e {\n        Feature(\n            \"Easy to Make\" ,\n            imageName: \"applescript\",\n            message: \"Onboarding screens like Apple's stock apps can be easily created with SwiftUI.\"\n        )\n        \n        Feature(\n            \"Not only for iPhone, but also for Mac, iPad, Vision Pro\" ,\n            imageName: \"apple.logo\",\n            message: \"It supports not only iPhone, but also Mac, iPad, and Vision Pro. Therefore, there is no need to rewrite the code for each device.\"\n        )\n#if os(iOS)\n        .image(systemName: \"ipad.and.iphone\")\n#elseif os(macOS)\n        .image(systemName: \"macbook\")\n#elseif os(tvOS)\n        .image(systemName: \"appletv\")\n#elseif os(visionOS)\n        .image(systemName: \"visionpro\")\n#endif\n        \n        Feature(\n            \"Customize SF Symbols\" ,\n            imageName: \"circle.badge.checkmark\",\n            message: \"When using a highly customizable implementation method, multi-color and SF symbol hierarchies are supported and can be freely customized. However, this feature is not supported in visionOS.\"\n        )\n        \n#if os(tvOS)\n        Feature(\n            \"Many other benefits\" ,\n            imageName: \"ellipsis\",\n            message: \"Now, tvOS is also supported, making it easy to create onboarding. Now you can create onboarding for all platforms except watchOS.\"\n        )\n#endif\n    }\n}\n```\n\nand\n\n```swift\nstruct SimpleImplementationView: View {\n    @Environment(\\.appVersionManager) private var appVersionManager\n    \n    var body: some View {\n        @Bindable var appVersionManager = appVersionManager\n        SomeView()\n            .onboardingSheet(isPresented: $appVersionManager.isTheFirstLaunch, WelcomeOnboarding())\n    }\n}\n```\n\n#### iOS\n\n\u003cimg src=\"images/iOS_SimpleImplementation.png\" style=\"height:400px;object-fit: contain;\"\u003e\n\n#### iPadOS\n\n\u003cimg src=\"images/iPadOS_SimpleImplementation.png\" style=\"height:400px;object-fit: contain;\"\u003e\n\n#### macOS\n\n\u003cimg src=\"images/macOS_SimpleImplementation.png\" style=\"height:400px;object-fit: contain;\"\u003e \n\n#### tvOS\n\n\u003cimg src=\"images/tvOS_SimpleImplementation.png\" style=\"height:400px;object-fit: contain;\"\u003e \n\n#### visionOS\n\n\u003cimg src=\"images/visionOS_SimpleImplementation.png\" style=\"height:400px;object-fit: contain;\"\u003e \n\n### Customizable implementation\n\n```swift\nstruct WelcomeOnboardingSheetView: View {\n    var action: () -\u003e Void\n    \n    init(action: @escaping () -\u003e Void) {\n        self.action = action\n    }\n    \n    var body: some View {\n        OnboardingSheetView {\n            OnboardingTitle(\"Welcome to\\nOnboardingUI\")\n        } content: {\n            OnboardingItem(systemName: \"applescript\",shape: .red) {\n                OnboardingSubtitle(\"Easy to Make\")\n                OnboardingContent(\"Onboarding screens like Apple's stock apps can be easily created with SwiftUI.\")\n            }\n            \n            OnboardingItem(systemName: \"apple.logo\") {\n                OnboardingSubtitle(\"Not only for iPhone, but also for Mac, iPad, Vision Pro\")\n                OnboardingContent(\"It supports not only iPhone, but also Mac, iPad, and Vision Pro. Therefore, there is no need to rewrite the code for each device.\")\n            }\n            \n            OnboardingItem(systemName: \"circle.badge.checkmark\",mode: .palette,primary: .primary,secondary: .blue) {\n                OnboardingSubtitle(\"Customize SF Symbols\")\n                OnboardingContent(\"When using a highly customizable implementation method, multi-color and SF symbol hierarchies are supported and can be freely customized.\")\n            }\n            \n#if os(tvOS)\n            OnboardingItem(systemName: \"ellipsis\",shape: .white) {\n                OnboardingSubtitle(\"Many other benefits\")\n                OnboardingContent(\"Now, tvOS is also supported, making it easy to create onboarding. Now you can create onboarding for all platforms except watchOS.\")\n            }\n#endif\n        } link: {\n            Link(\"Check our Privacy Policy…\", destination: URL(string: \"https://kc-2001ms.github.io/en/privacy.html\")!)\n        } button: {\n            ContinueButton(color: .accentColor, action: action)\n        }\n    }\n}\n```\n\nand\n\n```swift\nstruct SimpleImplementationView: View {\n    @Environment(\\.appVersionManager) private var appVersionManager\n    \n    var body: some View {\n        @Bindable var appVersionManager = appVersionManager\n        SomeView()\n            .sheet(isPresented: $appVersionManager.isTheFirstLaunch) {\n                WelcomeOnboardingSheetView(action: {\n                    appVersionManager.isTheFirstLaunch = false\n                })\n            }\n    }\n}\n```\n\n\n#### iOS\n\n\u003cimg src=\"images/iOS_CustomizableImplementation.png\" style=\"height:400px;object-fit: contain;\"\u003e\n\n#### iPadOS\n\n\u003cimg src=\"images/iPadOS_CustomizableImplementation.png\" style=\"height:400px;object-fit: contain;\"\u003e\n\n#### macOS\n\n\u003cimg src=\"images/macOS_CustomizableImplementation.png\" style=\"height:400px;object-fit: contain;\"\u003e \n\n#### tvOS\n\n\u003cimg src=\"images/tvOS_CustomizableImplementation.png\" style=\"height:400px;object-fit: contain;\"\u003e \n\n#### visionOS\n\n\u003cimg src=\"images/visionOS_CustomizableImplementation.png\" style=\"height:400px;object-fit: contain;\"\u003e\n\n## Swift-DocC\n\nSwift-DocC is currently being implemented.\n\n[Documentation](https://kc-2001ms.github.io/OnboardingUI/documentation/onboardingui)\n\n## Install\n\nXcode is required to use this library.\nHowever, it is currently under development and cannot be installed. We will let you know as soon as possible.  \n\n## Contribution\nSee [CONTRIBUTING.md](https://github.com/KC-2001MS/OnboardingUI/blob/main/CONTRIBUTING.md) if you want to make a contribution.\n\n## Licence\n\n[OnboardingUI](https://github.com/KC-2001MS/OnboardingUI/blob/main/LICENSE)\n\n## Supporting\n\nIf you would like to make a donation to this project, please click here. The money you give will be used to improve my programming skills and maintain the application.   \n\u003ca href=\"https://www.buymeacoffee.com/iroiro\" target=\"_blank\"\u003e\n    \u003cimg src=\"https://cdn.buymeacoffee.com/buttons/v2/default-yellow.png\" alt=\"Buy Me A Coffee\" style=\"height: 60px !important;width: 217px !important;\" \u003e\n\u003c/a\u003e  \n[Pay by PayPal](https://paypal.me/iroiroWork?country.x=JP\u0026locale.x=ja_JP)\n\n## Author\n\n[Keisuke Chinone](https://github.com/KC-2001MS)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkc-2001ms%2Fonboardingui","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkc-2001ms%2Fonboardingui","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkc-2001ms%2Fonboardingui/lists"}