
Integrating Tauri Js Frontends
- 307 installs
- 29 repo stars
- Updated January 20, 2026
- dchuk/claude-code-tauri-skills
integrating-tauri-js-frontends is a Claude Code skill that guides developers through connecting JavaScript or TypeScript SPA frameworks to Tauri desktop shells with correct IPC, bundler config, asset paths, and cross-pla
About
integrating-tauri-js-frontends is part of dchuk/claude-code-tauri-skills and targets developers shipping desktop apps with Tauri plus a JS or TS single-page frontend. The skill walks through inter-process communication between the WebView UI and Rust commands, bundler settings so dev and production builds resolve assets correctly, and cross-platform packaging steps. Developers reach for integrating-tauri-js-frontends when a React, Vue, Svelte, or similar SPA must run inside Tauri without broken paths, CSP surprises, or invoke handler mismatches. It complements sibling Tauri skills such as CSP configuration in the same repository.
- Tauri IPC invoke patterns
- JS framework bundler setup
- Dev hot-reload configuration
- Production asset paths
- Native plugin integration
Integrating Tauri Js Frontends by the numbers
- 307 all-time installs (skills.sh)
- Ranked #750 of 2,245 Frontend Development skills by installs in the Skillselion catalog
- Data as of Aug 2, 2026 (Skillselion catalog sync)
npx skills add https://github.com/dchuk/claude-code-tauri-skills --skill integrating-tauri-js-frontendsAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 307 |
|---|---|
| repo stars | ★ 29 |
| Last updated | January 20, 2026 |
| Repository | dchuk/claude-code-tauri-skills ↗ |
How do you connect a JS SPA to Tauri IPC?
Connect JavaScript or TypeScript SPA frameworks to Tauri desktop shells with correct IPC, bundler config, asset paths, and cross-platform build pipelines.
Who is it for?
Developers building Tauri v2 desktop apps who already chose a JavaScript or TypeScript SPA and need the web layer and Rust backend integrated cleanly.
Skip if: Developers only tuning Content Security Policy or writing pure Rust GPUI desktops without a web frontend should use focused Tauri CSP or native UI skills instead.
When should I use this skill?
The user is connecting a React, Vue, Svelte, or other JS/TS frontend to Tauri and hits IPC, bundler, or asset path issues.
What you get
Working Tauri invoke handlers, bundler config, asset path layout, and cross-platform desktop build steps for the SPA shell.
- IPC invoke wiring
- Bundler and asset path config
- Cross-platform build instructions
Files
Tauri Content Security Policy (CSP) Configuration
This skill covers Content Security Policy configuration for Tauri v2 desktop applications.
Why CSP Matters in Tauri
CSP is a security mechanism that mitigates common web vulnerabilities in Tauri applications:
1. XSS Prevention: Restricts which scripts can execute, blocking injected malicious code 2. Resource Control: Limits where the WebView can load assets from (scripts, styles, images, fonts) 3. Trust Boundaries: Strengthens the isolation between frontend WebView and backend Rust code 4. Attack Surface Reduction: Prevents unauthorized network connections and resource loading
Tauri operates on a trust boundary model where frontend code has limited access to system resources through a well-defined IPC layer. CSP adds an additional layer of protection within the frontend trust zone.
How Tauri Implements CSP
Tauri uses a two-part protection strategy:
1. Local Scripts: Protected through cryptographic hashing at compile time 2. Styles and External Scripts: Verified using nonces
Tauri automatically appends nonces and hashes to bundled code during compilation. Developers only need to configure application-specific trusted sources.
Important: CSP protection only activates when explicitly configured in the Tauri configuration file.
Default CSP Behavior
By default, Tauri does not apply a CSP. You must explicitly configure it in tauri.conf.json under the security section:
{
"security": {
"csp": null
}
}When csp is null or omitted, no Content Security Policy is enforced.
Basic CSP Configuration
Minimal Secure Configuration
{
"security": {
"csp": {
"default-src": "'self'"
}
}
}This restricts all resources to the same origin only.
Recommended Configuration
{
"security": {
"csp": {
"default-src": "'self' customprotocol: asset:",
"connect-src": "ipc: http://ipc.localhost",
"font-src": ["https://fonts.gstatic.com"],
"img-src": "'self' asset: http://asset.localhost blob: data:",
"style-src": "'unsafe-inline' 'self' https://fonts.googleapis.com"
}
}
}Common CSP Directives for Tauri
default-src
Fallback policy for all resource types not explicitly defined.
"default-src": "'self' customprotocol: asset:"Common values:
'self'- Same origin only'none'- Block all resourcescustomprotocol:- Tauri custom protocolasset:- Tauri asset protocol
script-src
Controls which scripts can execute.
"script-src": "'self'"For WebAssembly or Rust-based frontends (Leptos, Yew, Dioxus):
"script-src": "'self' 'wasm-unsafe-eval'"Warning: Never use 'unsafe-eval' unless absolutely required.
style-src
Controls stylesheet sources.
"style-src": "'self' 'unsafe-inline' https://fonts.googleapis.com"Note: 'unsafe-inline' is often needed for CSS-in-JS libraries but reduces security.
connect-src
Controls allowed connection destinations for fetch, WebSocket, etc.
"connect-src": "ipc: http://ipc.localhost https://api.example.com"Tauri-specific:
ipc:- Inter-process communication with Rust backendhttp://ipc.localhost- Alternative IPC endpoint
img-src
Controls image loading sources.
"img-src": "'self' asset: http://asset.localhost blob: data:"Common values:
blob:- Blob URLs (for dynamically created images)data:- Data URLs (base64 encoded images)asset:- Tauri asset protocol
font-src
Controls font loading sources.
"font-src": "'self' https://fonts.gstatic.com"frame-src
Controls iframe sources.
"frame-src": "'none'"Recommended to block all frames unless specifically needed.
object-src
Controls plugin content (Flash, Java, etc.).
"object-src": "'none'"Always set to 'none' for modern applications.
Configuration Format Options
Object Format (Recommended)
{
"security": {
"csp": {
"default-src": "'self'",
"script-src": "'self' 'wasm-unsafe-eval'",
"style-src": "'self' 'unsafe-inline'"
}
}
}Array Format for Multiple Sources
{
"security": {
"csp": {
"font-src": ["'self'", "https://fonts.gstatic.com", "https://fonts.googleapis.com"]
}
}
}String Format
{
"security": {
"csp": "default-src 'self'; script-src 'self'"
}
}Framework-Specific Configurations
React/Vue/Svelte (Standard JS Frameworks)
{
"security": {
"csp": {
"default-src": "'self'",
"script-src": "'self'",
"style-src": "'self' 'unsafe-inline'",
"img-src": "'self' data: blob:",
"font-src": "'self'",
"connect-src": "ipc: http://ipc.localhost"
}
}
}Leptos/Yew/Dioxus (Rust/WASM Frameworks)
{
"security": {
"csp": {
"default-src": "'self'",
"script-src": "'self' 'wasm-unsafe-eval'",
"style-src": "'self' 'unsafe-inline'",
"img-src": "'self' data: blob:",
"font-src": "'self'",
"connect-src": "ipc: http://ipc.localhost"
}
}
}With External APIs
{
"security": {
"csp": {
"default-src": "'self'",
"script-src": "'self'",
"connect-src": "ipc: http://ipc.localhost https://api.example.com wss://ws.example.com",
"img-src": "'self' https://cdn.example.com"
}
}
}Security Best Practices
1. Avoid Remote Scripts
Never load scripts from CDNs in production:
// AVOID - introduces attack vector
"script-src": "'self' https://cdn.jsdelivr.net"
// PREFERRED - bundle all dependencies
"script-src": "'self'"2. Minimize unsafe-inline
Only use 'unsafe-inline' when required by your framework:
// More secure
"style-src": "'self'"
// Less secure but sometimes necessary
"style-src": "'self' 'unsafe-inline'"3. Use Restrictive Defaults
Start restrictive and add permissions as needed:
{
"security": {
"csp": {
"default-src": "'none'",
"script-src": "'self'",
"style-src": "'self'",
"img-src": "'self'",
"font-src": "'self'",
"connect-src": "ipc: http://ipc.localhost"
}
}
}4. Block Dangerous Features
Always block unused dangerous features:
{
"security": {
"csp": {
"object-src": "'none'",
"base-uri": "'self'",
"form-action": "'self'"
}
}
}Advanced Configuration
Disabling CSP Modifications
If you need full control over CSP (not recommended):
{
"security": {
"csp": {
"default-src": "'self'"
},
"dangerousDisableAssetCspModification": true
}
}Warning: This disables Tauri's automatic nonce and hash injection.
Freeze Prototype
Additional XSS protection by freezing JavaScript prototypes:
{
"security": {
"csp": {
"default-src": "'self'"
},
"freezePrototype": true
}
}Troubleshooting
Resources Blocked by CSP
Check browser DevTools console for CSP violation messages. They indicate which directive is blocking the resource.
Example error:
Refused to load the script 'https://example.com/script.js' because it violates the following Content Security Policy directive: "script-src 'self'"Solution: Add the domain to the appropriate directive:
"script-src": "'self' https://example.com"WebAssembly Not Loading
Add 'wasm-unsafe-eval' to script-src:
"script-src": "'self' 'wasm-unsafe-eval'"Inline Styles Not Working
For CSS-in-JS libraries, add 'unsafe-inline' to style-src:
"style-src": "'self' 'unsafe-inline'"IPC Not Working
Ensure connect-src includes Tauri IPC endpoints:
"connect-src": "ipc: http://ipc.localhost"Complete Example Configuration
{
"productName": "my-tauri-app",
"version": "1.0.0",
"security": {
"csp": {
"default-src": "'self' customprotocol: asset:",
"script-src": "'self'",
"style-src": "'self' 'unsafe-inline'",
"img-src": "'self' asset: http://asset.localhost blob: data:",
"font-src": "'self'",
"connect-src": "ipc: http://ipc.localhost",
"object-src": "'none'",
"base-uri": "'self'",
"form-action": "'self'",
"frame-ancestors": "'none'"
},
"freezePrototype": true
}
}References
Related skills
How it compares
Choose integrating-tauri-js-frontends for SPA-to-Tauri wiring; use configuring-tauri-csp in the same repo when the primary task is Content Security Policy hardening.
FAQ
What does integrating-tauri-js-frontends configure?
integrating-tauri-js-frontends configures Tauri IPC between a JavaScript or TypeScript SPA and Rust commands, plus bundler settings, static asset paths, and cross-platform build steps. The goal is a WebView UI that invokes backend commands reliably in dev and release builds.
Which frontend stacks does integrating-tauri-js-frontends support?
integrating-tauri-js-frontends targets JavaScript and TypeScript single-page application frameworks wired into Tauri desktop shells. Developers use it when any SPA bundler must serve assets correctly inside Tauri's WebView and talk to Rust via invoke handlers.