Help us improve
Share bugs, ideas, or general feedback.
From swiftwasm-skills
Guides BridgeJS for type-safe Swift-JavaScript interop: export Swift APIs to JS with @JS macros, import JS/TS into Swift via macros or bridge-js.d.ts. Covers setup, config, types, errors, and debugging.
npx claudepluginhub swiftwasm/swift-wasm-agent-skill --plugin bridge-jsHow this skill is triggered — by the user, by Claude, or both
Slash command
/swiftwasm-skills:bridge-jsThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
BridgeJS is a code-generation layer in JavaScriptKit that makes Swift–JavaScript interop faster and easier than raw `JSObject`/`JSValue`: you declare the API shape in Swift (or TypeScript), and the tool generates glue code. Two directions: **export Swift to JavaScript** and **import JavaScript into Swift**.
Assists Swift developers using JavaScriptKit for WebAssembly web apps, providing JS interop cheatsheets, project init guides, patterns, and Python scripts for SDK checks and installs.
Decides when and how to bridge SwiftUI into AppKit for macOS apps. Provides patterns for NSViewRepresentable, NSViewControllerRepresentable, window access, responder chain, panels, and menus.
Creates and updates slim native iOS bindings for .NET MAUI and .NET for iOS using the Native Library Interop (NLI) approach. Guides through Swift/Objective-C wrappers, Xcode project config, C# API generation, and xcframework integration.
Share bugs, ideas, or general feedback.
BridgeJS is a code-generation layer in JavaScriptKit that makes Swift–JavaScript interop faster and easier than raw JSObject/JSValue: you declare the API shape in Swift (or TypeScript), and the tool generates glue code. Two directions: export Swift to JavaScript and import JavaScript into Swift.
When you need details, read DocC from the checked-out JavaScriptKit repository: Sources/JavaScriptKit/Documentation.docc/ when inside the JavaScriptKit repo, or .build/checkouts/JavaScriptKit/Sources/JavaScriptKit/Documentation.docc/ when in a project that depends on JavaScriptKit.
@JS (and @JS(namespace:enumStyle:)) on functions, classes, structs, enums, closures, protocols, etc. JavaScript then calls into your Swift code. See references/exporting.md.@JSFunction, @JSClass, @JSGetter, @JSSetter; use @JSGetter(from: .global) for globals like document/console; inject other implementations via getImports(). See references/importing.md. (2) Or use bridge-js.d.ts to generate the same Swift bindings. See references/importing-ts.md.Optional ↔ null, JSUndefinedOr ↔ undefined, arrays, Record<string, V> ↔ [String: V], unbridged → JSObject/JSValue. See references/types.md if present.throws(JSException) is supported at the bridge; plain throws is not.node .build/checkouts/JavaScriptKit/Plugins/BridgeJS/Sources/TS2Swift/JavaScript/bin/ts2swift.js <input.d.ts> [options]; Run with --help for usage.release() when the closure is no longer needed by JS. When receiving callbacks from JS (e.g. imported APIs), use regular closure types in Swift ((Args) -> Return).