{"id":28435140,"url":"https://github.com/skiptools/skip-web","last_synced_at":"2025-06-30T12:30:47.174Z","repository":{"id":206243631,"uuid":"716181104","full_name":"skiptools/skip-web","owner":"skiptools","description":"Embedded WebView for Skip apps","archived":false,"fork":false,"pushed_at":"2025-05-31T21:11:43.000Z","size":236,"stargazers_count":5,"open_issues_count":4,"forks_count":3,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-06-01T06:17:15.220Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/skiptools.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.LGPL","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,"zenodo":null}},"created_at":"2023-11-08T15:52:08.000Z","updated_at":"2025-05-31T21:11:47.000Z","dependencies_parsed_at":null,"dependency_job_id":"8aedd949-1ecc-48c8-9089-9dae69176692","html_url":"https://github.com/skiptools/skip-web","commit_stats":null,"previous_names":["skiptools/skip-web"],"tags_count":26,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/skiptools%2Fskip-web","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/skiptools%2Fskip-web/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/skiptools%2Fskip-web/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/skiptools%2Fskip-web/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/skiptools","download_url":"https://codeload.github.com/skiptools/skip-web/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/skiptools%2Fskip-web/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":258287718,"owners_count":22677936,"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":[],"created_at":"2025-06-05T20:06:43.011Z","updated_at":"2025-06-30T12:30:47.151Z","avatar_url":"https://github.com/skiptools.png","language":"Swift","funding_links":[],"categories":[],"sub_categories":[],"readme":"# SkipWeb\n\nSkipWeb provides an embedded WebView for [Skip Lite](https://skip.tools) transpiled Swift.\nOn iOS it uses a [WKWebView](https://developer.apple.com/documentation/webkit/wkwebview)\nand on Android it uses an [android.webkit.WebView](https://developer.android.com/develop/ui/views/layout/webapps/webview).\n\nA simple example of using an embedded WebView with a static URL can be seen:\n\n```swift\nimport Foundation\nimport SwiftUI\nimport SkipWeb\n\nstruct EmbeddedWebView : View {\n    let url: URL\n\n    var body: some View {\n        WebView(url: url)\n    }\n}\n```\n\n## Customization\n\nThe [`WebView`](https://github.com/skiptools/skip-web/blob/main/Sources/SkipWeb/WebView.swift) is backed by a\n[`WebEngine`](https://github.com/skiptools/skip-web/blob/main/Sources/SkipWeb/WebEngine.swift).\nIt can be configured with a [`WebEngineConfiguration`](https://github.com/skiptools/skip-web/blob/main/Sources/SkipWeb/WebEngine.swift) instance. For example:\n\n```swift\nimport Foundation\nimport SwiftUI\nimport SkipWeb\n\nstruct ConfigurableWebView : View {\n    let navigator: WebViewNavigator = WebViewNavigator(initialURL: URL(\"https://skip.tools\")!)\n    @ObservedObject var configuration: WebEngineConfiguration\n    @Binding var state: WebViewState\n\n    var body: some View {\n        WebView(configuration: configuration, navigator: navigator, state: $state)\n    }\n}\n\n```\n\n## Contribution\n\nMany delegates that are provided by `WKWebView` are not yet implemented in this project,\nand so deeper customization may require custom implementation work.\nTo implement these, you may need to fork the repository and add it to your workspace,\nas described in the [Contributing guide](https://skip.tools/docs/contributing/).\nPlease consider creating a [Pull Request](https://github.com/skiptools/skip-web/pulls)\nwith features and fixes that you create, as this benefits the entire Skip community.\n\n## Building\n\nThis project is a free Swift Package Manager module that uses the\n[Skip](https://skip.tools) plugin to transpile Swift into Kotlin.\n\nBuilding the module requires that Skip be installed using \n[Homebrew](https://brew.sh) with `brew install skiptools/skip/skip`.\nThis will also install the necessary build prerequisites:\nKotlin, Gradle, and the Android build tools.\n\n## Testing\n\nThe module can be tested using the standard `swift test` command\nor by running the test target for the macOS destination in Xcode,\nwhich will run the Swift tests as well as the transpiled\nKotlin JUnit tests in the Robolectric Android simulation environment.\n\nParity testing can be performed with `skip test`,\nwhich will output a table of the test results for both platforms.\n\n## Contributing\n\nWe welcome contributions to this package in the form of enhancements and bug fixes.\n\nThe general flow for contributing to this and any other Skip package is:\n\n1. Fork this repository and enable actions from the \"Actions\" tab\n2. Check out your fork locally\n3. When developing alongside a Skip app, add the package to a [shared workspace](https://skip.tools/docs/contributing) to see your changes incorporated in the app\n4. Push your changes to your fork and ensure the CI checks all pass in the Actions tab\n5. Add your name to the Skip [Contributor Agreement](https://github.com/skiptools/clabot-config)\n6. Open a Pull Request from your fork with a description of your changes\n\n## License\n\nThis software is licensed under the\n[GNU Lesser General Public License v3.0](https://spdx.org/licenses/LGPL-3.0-only.html),\nwith the following\n[linking exception](https://spdx.org/licenses/LGPL-3.0-linking-exception.html)\nto clarify that distribution to restricted environments (e.g., app stores)\nis permitted:\n\n\u003e This software is licensed under the LGPL3, included below.\n\u003e As a special exception to the GNU Lesser General Public License version 3\n\u003e (\"LGPL3\"), the copyright holders of this Library give you permission to\n\u003e convey to a third party a Combined Work that links statically or dynamically\n\u003e to this Library without providing any Minimal Corresponding Source or\n\u003e Minimal Application Code as set out in 4d or providing the installation\n\u003e information set out in section 4e, provided that you comply with the other\n\u003e provisions of LGPL3 and provided that you meet, for the Application the\n\u003e terms and conditions of the license(s) which apply to the Application.\n\u003e Except as stated in this special exception, the provisions of LGPL3 will\n\u003e continue to comply in full to this Library. If you modify this Library, you\n\u003e may apply this exception to your version of this Library, but you are not\n\u003e obliged to do so. If you do not wish to do so, delete this exception\n\u003e statement from your version. This exception does not (and cannot) modify any\n\u003e license terms which apply to the Application, with which you must still\n\u003e comply.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fskiptools%2Fskip-web","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fskiptools%2Fskip-web","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fskiptools%2Fskip-web/lists"}