{"id":7282177,"url":"https://github.com/saucer/saucer","last_synced_at":"2025-05-16T05:07:24.913Z","repository":{"id":37600912,"uuid":"395748812","full_name":"saucer/saucer","owner":"saucer","description":"🛸 A modern, cross-platform C++ webview library","archived":false,"fork":false,"pushed_at":"2025-05-12T18:07:19.000Z","size":2220,"stargazers_count":407,"open_issues_count":1,"forks_count":31,"subscribers_count":13,"default_branch":"master","last_synced_at":"2025-05-12T19:25:46.854Z","etag":null,"topics":["cocoa","cpp","cpp-library","cpp23","cpp23-library","cpplibrary","cross-platform","gtk4","libadwaita","lightweight","qt5","qt6","qwebengine","saucer","webkitgtk","webkitgtk-6","webview","webview-library","webview2","wkwebview"],"latest_commit_sha":null,"homepage":"https://saucer.github.io/","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/saucer.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"github":"Curve"}},"created_at":"2021-08-13T18:06:34.000Z","updated_at":"2025-05-12T18:09:22.000Z","dependencies_parsed_at":"2024-06-27T19:18:17.681Z","dependency_job_id":"25f6da97-23af-4149-8abd-42684211a91c","html_url":"https://github.com/saucer/saucer","commit_stats":{"total_commits":867,"total_committers":4,"mean_commits":216.75,"dds":0.04152249134948094,"last_synced_commit":"8d753e5f85c98fe1c88d8896917f4c3dc58034fd"},"previous_names":[],"tags_count":15,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/saucer%2Fsaucer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/saucer%2Fsaucer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/saucer%2Fsaucer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/saucer%2Fsaucer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/saucer","download_url":"https://codeload.github.com/saucer/saucer/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254471060,"owners_count":22076585,"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":["cocoa","cpp","cpp-library","cpp23","cpp23-library","cpplibrary","cross-platform","gtk4","libadwaita","lightweight","qt5","qt6","qwebengine","saucer","webkitgtk","webkitgtk-6","webview","webview-library","webview2","wkwebview"],"created_at":"2024-04-03T07:11:01.590Z","updated_at":"2025-05-16T05:07:19.894Z","avatar_url":"https://github.com/saucer.png","language":"C++","funding_links":["https://github.com/sponsors/Curve"],"categories":["GUI","C++","👓 Alternatives to the [Electron.js](https://electronjs.org) ⚛"],"sub_categories":["C/C++"],"readme":"\u003chr\u003e\n\n\u003cdiv align=\"center\"\u003e \n    \u003cimg src=\"https://raw.githubusercontent.com/saucer/saucer.github.io/master/static/img/logo.png\" height=\"312\" /\u003e\n\u003c/div\u003e\n\n\u003cp align=\"center\"\u003e \n    Build cross-platform desktop apps with C++ \u0026 Web Technologies \n\u003c/p\u003e\n\n---\n\n\u003cdiv align=\"center\"\u003e \n\n\u003cimg src=\"https://raw.githubusercontent.com/saucer/saucer.github.io/rewrite/static/assets/preview.png\" width=\"600\" /\u003e\n\n### Documentation\n\nThe documentation can be found [here](https://saucer.github.io/).\n\n### Examples\n\nExamples can be found [here](./examples).\n\n### Getting started\n\nLearn how to create your first _saucer_ app [here](https://saucer.github.io/docs/getting-started).\n\n\u003c/div\u003e \n\n---\n\n## 👽 Introduction\n\nSaucer is a modern C++ webview library that allows you to build cross-platform desktop applications with ease.  \nIt supports all three major desktop operating systems (Windows, Linux, MacOS) and has several backend implementations.\n\n## 🛸 Features\n\n* 💻 Cross Platform\n  \n  \u003ctable\u003e\n    \u003ctr\u003e\n      \u003cth\u003e\u003c/th\u003e\n      \u003cth\u003eWindows\u003c/th\u003e\n      \u003cth\u003eLinux\u003c/th\u003e\n      \u003cth\u003eMacOS\u003c/th\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd rowspan=\"2\"\u003eBackend\u003c/td\u003e\n      \u003ctd\u003eWin32 \u0026 WebView2\u003c/td\u003e\n      \u003ctd\u003eGTK4 \u0026 WebKitGtk\u003c/td\u003e\n      \u003ctd\u003eCocoa \u0026 WKWebView\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr align=\"center\"\u003e\n      \u003ctd colspan=\"3\"\u003eQt5 / Qt6 \u0026 QWebEngine\u003c/td\u003e\n    \u003c/tr\u003e\n  \u003c/table\u003e\n\n* 👾 Feature-Rich\n  \u003e Supports custom schemes, script injection, favicons, and much more!\n\n* 🔀 Seamless C++ / JavaScript interoperability\n\n* 📦 Supports Embedding Frontend into binary\n\n* 🪶 Lightweight\n  \u003e By using the operating systems native web renderer _(or a commonly used one)_, it is possible to create binaries as small as ~250KB\n\n* 🧰 Customizability\n  \u003e Modules allow access to platform specific implementations, making it possible to tweak the library to your hearts content\n  \n  * Official Modules\n    * 🖥️ [saucer/desktop](https://github.com/saucer/desktop) \n      \u003e 📂 File-Picker, Mouse-Position retrieval and URI-Launch support\n\n    * 🖨️ [saucer/pdf](https://github.com/saucer/pdf) \n      \u003e 📄 Print current page as PDF\n\n* 🏗️ [Bindings](https://github.com/saucer/bindings)\n  \u003e Saucer also exposes a C-Interface, thus making it possible to write bindings for it in your favorite language!\n\n* 🦺 Thread-Safe\n\n* 🧨 No Exceptions \n  \u003e Compiles with `-fno-exceptions`!\n\n* 🏃 No RTTI\n  \u003e Compiles with `-fno-rtti`!\n\n* ⚖️ FOSS\n  \u003e Licensed under MIT!\n\n* 🪟 Built-in support for frame-less windows and transparency\n\n* [... and more!](https://saucer.github.io/)\n\n## ✍️ Code Example\n\n```cpp\n#include \u003csaucer/smartview.hpp\u003e\n\nint main()\n{\n    auto app = saucer::application::init({\n        .id = \"example\",\n    });\n\n    saucer::smartview webview{{\n        .application = app,\n    }};\n\n    webview.set_size(900, 700);\n    webview.set_title(\"Hello World!\");\n\n    webview.expose(\n        \"add_random\",\n        [\u0026](float number)\n        {\n            auto random = webview.evaluate\u003cfloat\u003e(\"Math.random()\").get();\n            return number + random;\n        },\n        saucer::launch::async);\n\n    webview.set_file(\"index.html\");\n    \n    webview.show();\n    app-\u003erun();\n\n    return 0;\n}\n```\n\n## 🌐 Who's using saucer?\n\n\u003cdiv align=\"center\"\u003e\n\u003cbr/\u003e\n\n\u003ca href=\"https://casterlabs.co/\" target=\"_blank\"\u003e\n    \u003cpicture\u003e\n        \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://cdn.casterlabs.co/branding/casterlabs/wordmark_white.svg\"\u003e\n        \u003cimg width=\"300\" src=\"https://cdn.casterlabs.co/branding/casterlabs/wordmark_black.svg\"\u003e\n    \u003c/picture\u003e\n\u003c/a\u003e\n\u003c/div\u003e\n\n\u003cbr/\u003e\n\n\u003e [🎉 Become part of this list!](https://github.com/saucer/saucer/issues/new)\n\n## ⭐ Star History\n\n\n![](https://api.star-history.com/svg?repos=saucer/saucer\u0026type=Date)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsaucer%2Fsaucer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsaucer%2Fsaucer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsaucer%2Fsaucer/lists"}