OpenSwiftUI README

The project's README from github.com/OpenSwiftUIProject/OpenSwiftUI. As one markdown file: README.md.

OpenSwiftUI

OpenSwiftUI

codecov

OpenSwiftUI is an open source implementation of Apple's SwiftUI

The project is for the following purposes:

And the API design and documentation is to stay as compatible with the original SwiftUI API as possible.

[!TIP] "Why join the navy if you can be a pirate?" — Steve Jobs

:)

Currently, this project is in early development.

The full API documentation is available on the OpenSwiftUI documentation site.

Notes

this project is for learning and research purposes only.

If you choose to use this project, you do so at your own risk and are responsible for compliance with any applicable laws.

The author of this project is not responsible for any consequences that may arise from your use of this project.

[!WARNING] This package use a lot of hidden API and private framework on Apple platform.

Please DO NOT use this package in Apple's production environment(eg. App Store).

Otherwize it may break your build or crash your app at any future SDK/OS update.

Usage

Integration Guide

To integrate OpenSwiftUI into your own Xcode project, see INTEGRATION.md for detailed step-by-step instructions.

Example Application

See Example folder and try it with ExampleApp

[!IMPORTANT] Clone OpenAttributeGraph in the same directory before running the example.

See Example/README.md for more detail.

Build

The current suggested toolchain to build the project is Swift 6.3.3 / Xcode 26.6.

Build without testing framework

./Scripts/build

Build with Library Evolution

./Scripts/openswiftui_swiftinterface

[!NOTE] This project's configuration is heavily based on many environment variables.

You can use the following tools on macOS platform to manage the environment variable more easily.

  • EnvPane: A macOS preference pane for environment variables
  • MenuHelper: A Finder Extension App to improve your efficiency.
  • launchctl via Scripts/sync_launchagent.sh

Supported platforms

The table below describes the current level of support that OpenSwiftUI has for various platforms:

Darwin Platform Status

Test Type CI Status
SwiftUI Compatibility Compatibility tests
UI Tests UI Tests

Platform Support

Platform CI Status Support Status Build Test Deploy Owner
macOS macOS ⭐️⭐️⭐️ *[^1] ✅ ✅ ✅ @Kyle-Ye, @Mx-Iris
iOS iOS ⭐️⭐️⭐️⭐️ *[^2] ✅ ✅ ✅[^5] @Kyle-Ye
Ubuntu 22.04 Ubuntu ⭐️⭐️ *[^3] ✅ ✅ ✅[^3] @Kyle-Ye
visionOS None ⭐️ *[^4] ✅ Not tested in CI ✅[^4] @Kyle-Ye
Android None Not supported yet ❌ ❌ ❌
Windows None Not supported yet ❌ ❌ ❌
Embedded None Preview[^6] ✅ ✅ ✅ @Kyle-Ye

[^1]: AppKit integration is partially implemented.

[^2]: UIKit integration is partially implemented.

[^3]: Build, test, and deployment with the stdout renderer are supported. Linux UI framework integration is not available yet.

[^4]: visionOS Simulator support is experimental and has no CI coverage. Physical device support has not been verified.

[^5]: iOS Simulator is supported. iOS device builds require the Compute backend. Apple's AttributeGraph backend is limited to the simulator because required device symbols are missing.

[^6]: Build and host tests are supported on the embed/folotoy branch. For the ESP32-C3 deployment example, see OpenSwiftUI on ESP32-C3.

[!NOTE] The cross-platform OpenAttributeGraph is not fully implemented.

The Linux stdout example uses the Compute backend to run its view graph.

[!NOTE] To request platform ownership, please first contribute to the target platform and then contact the project owner.

Current supported feature

Architecture

OpenSwiftUI Architecture

Products

Versioned documentation

The documentation site is built with VersionedDocC and automatically tracks main and recent release series. It provides version switching, build dates, and API change comparisons.

Build and preview the site locally with:

Scripts/preview-documentation.sh

See Docs/Documentation.md for configuration, caching, and release details.

Contributing

Contributions are welcome. See CONTRIBUTING.md for development setup, testing guidance, and pull request expectations.

Disclaimer

SwiftUI is a trademark of Apple Inc. This project is not affiliated with, endorsed by, or connected to Apple Inc. in any way. OpenSwiftUI is an independent open-source implementation created for educational and research purposes.

License

This project is licensed under the MIT License. See the LICENSE file for details.

For third-party licenses and acknowledgements, see CREDITS.md.

Star History

Star History Chart

OpenSwiftUI (OpenSwiftUIProject/OpenSwiftUI)

Searching Database…

Что это такое?Open source-реализация SwiftUI от Apple. Цели: создавать приложения с графическим интерфейсом на платформах, отличных от Apple, таких как Linux и Windows, а также находить и отлаживать проблемы SwiftUI на платформах Apple, оставаясь настолько близким к API SwiftUI, насколько это возможно.
Это инструмент, который я запускаю, или фреймворк, с которым я собираю приложение?Это фреймворк, а не приложение: Swift-пакет, который вы подключаете в свой проект Xcode. В репозитории также есть OpenSwiftUIExtension (дополнительные наборы API) и OpenSwiftUIBridge для постепенного перехода с других DSL-фреймворков.
Как мне это попробовать?Добавьте его в свой проект Xcode по пошаговой инструкции в INTEGRATION.md, затем запустите ExampleApp из папки Example — предварительно клонировав OpenAttributeGraph в ту же папку, иначе пример не запустится.
Что нужно установить, чтобы его собрать?Рекомендуемый набор инструментов — Swift 6.3.3 с Xcode 26.6. На macOS конфигурация сборки сильно зависит от переменных окружения, и README советует управлять ими с помощью инструментов вроде EnvPane или прилагаемого скрипта для launchctl.
Могу ли я выпустить продакшн-приложение на его основе?Нет — проект находится в ранней стадии разработки и использует скрытые API и приватные фреймворки на платформах Apple, поэтому он может сломать вашу сборку или вызывать сбои при любом будущем обновлении SDK/ОС. Он предназначен только для обучения и исследований, на ваш собственный риск.
На каких платформах он сегодня реально собирается и запускается?Лучше всего поддерживается iOS, затем macOS. На Ubuntu 22.04 пока работает только stdout-рендерер — интеграции с UI-фреймворками Linux пока нет; visionOS в экспериментальном статусе, Windows и Android пока не поддерживаются, а embedded — в виде превью.
Насколько это безопасно с точки зрения лицензии, учитывая, что это повторная реализация фреймворка Apple?Проект распространяется по лицензии MIT. Авторы подчёркивают, что это независимая реализация, не связанная с Apple и не одобренная ею, а SwiftUI остаётся торговой маркой Apple — вы пользуетесь этим на свой страх и риск.
Что он сегодня вообще умеет отрисовывать?Отрисовку Color, Image и Path, систему компоновки (layout), систему анимации, модификаторы onAppear/onDisappear и базовые геометрические эффекты. Text пока примитивный: вывод работает в stdout-рендерере на macOS, а раскладка текста на не-Darwin платформах пока не поддерживается.
Насколько он совместим с моим существующим кодом на SwiftUI?Заявленная цель — максимальная совместимость с API оригинального SwiftUI, и сам OpenSwiftUI описывается как фреймворк совместимости на уровне исходников с SwiftUI. Поскольку проект ещё в ранней стадии разработки, ожидайте лишь частичного покрытия, а не готовой замены.
Он работает на реальном iPhone или только в симуляторе?Из коробки — только в симуляторе: бэкенд AttributeGraph от Apple ограничен симулятором, потому что необходимые символы для устройств отсутствуют, поэтому сборка под реальное iOS-устройство требует вместо него бэкенда Compute.
Почему примеру нужен склонированный рядом OpenAttributeGraph?OpenAttributeGraph — сопутствующий проект, который предоставляет кроссплатформенный бэкенд на основе графа представлений AttributeGraph, и он ещё реализован не полностью — пример с stdout на Linux работает на бэкенде Compute. При запуске примера он должен находиться в той же папке, что и OpenSwiftUI.
Size
12.1 MB
Stars
2.5K
Age
3y
Commits · 90 Days