UWP.js is a powerful framework that bridges the gap between modern web applications and native Windows functionality. By exposing every function in UWPTask directly to the WebView, it allows your web apps to leverage the entire NuGet library and interact with native C# code with ease.
UWP.js lets you run web apps inside a UWP (Universal Windows Platform) environment, enabling communication between JavaScript and C#. The ARM32 configuration uses Windows 10 Mobile's EdgeHTML WebView; the other configurations retain WebView2.
For a Lumia, select the solution's ARM configuration. It targets Windows 10 build 15063, excludes the WebView2 and WinUI packages, and uses Json.NET for the ARM-only JSON adapter because System.Text.Json 9 cannot restore for that UAP version. The existing C# bridge's navigation, messages, script execution, browser overlay, and background runner use the OS WebView. The Python CLI copies this repository's template and installs edgehtml-bridge.js before app scripts on each sync. EdgeHTML cannot provide WebView2 virtual HTTP mappings for arbitrary picker folders; package assets use ms-appx-web and LocalState URLs use ms-appdata. Apps must supply JavaScript and CSS compatible with EdgeHTML.
| Windows | Xbox | Mobile |
|---|---|---|
![]() |
![]() |
![]() |
| capacitor-xbox | capacitor-xbox | capacitorJS |
If you want to add UWP support to an existing project, go see Capacitor Xbox.
Capacitor Xbox and UWP.js are in no way affiliated with Capacitor, Ionic, or Microsoft. This is a personal project intended solely to assist developers in the creation and porting of web applications and games to Xbox/Windows platforms.
-
Seamless Web-to-Native Integration:
Use a robust bridging mechanism to invoke native C# methods directly from your web app. -
Full NuGet Library Access:
Every function in UWPTask is exposed, granting you access to the vast NuGet ecosystem. -
Easy Extensibility:
Add custom native functionalities effortlessly by extending the C# backend. -
Cross-Platform Support:
Supports Windows Desktop and Xbox. -
Python CLI Included:
Streamline project initialization, asset synchronization, and configuration with an intuitive Python CLI. -
Capacitor Xbox Integration:
Proudly powers Capacitor Xbox to mirror Capacitor APIs on Microsoft platforms with minimal code changes.
- Native API Exposure: Uses Microsoft WebView2 to render web content and expose native functionalities.
- Extensibility: Easily extendable via public methods in
UwpNativeMethods. - Rich Functionality: File operations, notifications, folder selection, and more.
- Intuitive API: Simple methods like
readFile,writeFile,downloadFile, and more. - Event-Driven Communication: Supports real-time messaging between JavaScript and native C#.
- Plugin Support: Register plugins to extend functionality further.
- Project Initialization: Automates setup tasks, including downloading templates and configuring project files.
- Asset Synchronization: Syncs your build outputs and resources seamlessly into the UWP project.
- Seamless Integration: Mirror Capacitor APIs for multi-platform deployment.
- Cross-Platform Support: Runs on Xbox and Windows.
- Minimal Code Changes: Use the same Capacitor methods you're already familiar with.
- Windows 10/11 with UWP support
- .NET SDK and Visual Studio
- Node.js (for web development)
- Python 3.x (for CLI tool)
- Clone the Repository:
git clone https://github.com/momo-AUX1/UWP.js.git
cd UWP.js-
Setup the C# Backend:
• Open the solution file (UWP.js.sln) in Visual Studio.
• Restore NuGet packages and build the solution.
-
Initialize the Project Using Python CLI:
python3 uwpjs.py init- Sync Your Build:
python3 uwpjs.py syncUsage
JavaScript Integration
Include the UWP.js bridge in your web project:
import UwpBridge from './path/to/uwp.js';
const bridge = new UwpBridge();
// Example: Read a file
bridge.readFile('example.txt').then(content => {
console.log('File Content:', content);
});
// Example: Write to a file
bridge.writeFile('example.txt', 'Hello from UWP.js!');Invoking Native Methods
Any new functionality added to the C# backend is immediately available to your JavaScript code via:
bridge.callNative('methodName', arg1, arg2, ...).then(response => {
console.log('Response from native:', response);
});Capacitor Xbox Integration
For projects using Capacitor, include and register the plugin:
import { UwpBridge, CapacitorUWP } from 'capacitor-xbox';
const bridge = new UwpBridge();
bridge.registerPlugin(CapacitorUWP);
// Use Capacitor APIs as usual
window.Capacitor.Preferences.set({ key: 'example', value: 'value' });you can go and checkit here: Capacitor Xbox
Contributing
Contributions are welcome! Please fork the repository and submit pull requests for any bug fixes or feature enhancements.
License
UWP.js is released under the MIT License.
© 2025. Created by momo-AUX1 and contributed by the open-source community.





