React and JSX
Build JSX into JavaScript first, then protect the generated chunks. Exclude names called by external scripts or server-rendered markup. Full walkthrough: obfuscate a React bundle. On Next.js, mind the server/client split: protecting Next.js apps.
TypeScript
Run TypeScript compilation and type checking first. Protect the generated JavaScript, not the source files you edit. Guide: obfuscating TypeScript.
Vue and Angular
Let the framework compiler generate runtime bundles first, then apply protection to the emitted JavaScript files. Guides: Angular apps and Vue apps.
Svelte and SvelteKit
The compiler emits small imperative JavaScript with no framework runtime in the way — so the client chunk is almost entirely your logic. Keep authority in server modules, then protect the emitted client output. Guide: protecting Svelte apps.
Nuxt
Nitro compiles server/ into a bundle the browser never sees, while .output/public/_nuxt is downloaded by every visitor. Keep authority server-side, then protect the client chunks and reserve the payload keys. Guide: protecting Nuxt apps.
React Native
The Metro bundle ships inside the APK or IPA, and Hermes bytecode is decompilable with public tooling. Protect at the serializer stage, before Hermes compiles, and add runtime tamper signals. Guide: protecting React Native apps.
Node.js output
Protect server-distributed JavaScript when source visibility is a risk, then test startup, dynamic imports, and runtime configuration paths. Guides: Node.js source code, Electron apps and Tauri apps.
HTML5 games
Games ship gameplay and anti-cheat logic to every player. Build to the JS bundle first, protect cold paths hard and per-frame loops lightly, and keep the server authoritative. Guide: protect HTML5 / WebGL game JavaScript.
Embeddable widgets and SDKs
A script hosted by you and embedded by customers runs on pages you do not control, for the audience most motivated to copy it. Domain locking, watermarking and a deliberately reserved public surface do the work here. Guide: protecting a widget or JavaScript SDK.
Self-hosted and on-premises delivery
When the customer runs your application on their own hardware, the server stops being yours and may have no network at all. Per-customer builds, offline date locking and a signed release attestation replace the controls SaaS takes for granted. Guide: protecting a self-hosted or on-premises app.
Projects with no build step
Script tags, jQuery-era code and logic written directly into HTML, PHP or ASP pages never pass through a bundler, so the usual “protect the output directory” advice does not apply. The desktop app and mixed-file processing cover this case. Guide: protecting JavaScript without a build step.
Kiosks, signage and embedded devices
JavaScript shipped inside hardware has no hostname, an unreliable clock and often no network, and the domain, browser, OS and date guards all misread those conditions. Guide: protecting JavaScript on kiosks and embedded devices.
Online exams and assessment
An exam runs inside a browser the candidate administers, so no client-side check can make a score trustworthy. What is worth protecting is the scoring logic and adaptive routing, and two runtime-defense options collide with accessibility accommodations. Guide: protecting online exam and assessment JavaScript.
The contract is public and the wallet holds the key, so the off-chain routing and risk logic is what protection is for.
Why a client-side paywall leaks, and which parts of a publishing bundle protection genuinely helps.
Distribution through a reviewer you do not control, into a host runtime you do not own. Exclude the host API surface and pin the seed.
When the platform compiles your source and assigns the hostname, only uploaded artifacts can be protected at all.
The model where several partners ship near-identical rebranded copies, and a leaked build has to name its own distribution.
Compilation protects the half of a .NET application that never left the server. What is still downloadable, where the Mixed Server Code option applies, and why a Blazor WebAssembly build needs a different tool for its assemblies.
A course package runs on the customer’s own learning management system, so domain locking stops being a usable primary control and the LMS API names must survive renaming.
Rendering requires the content, so delivery granularity sets the ceiling and the transform protects the viewer.
Browser extensions
Publishing to the Chrome Web Store? Obfuscation is prohibited there — minify, and keep secrets and proprietary logic server-side. Where obfuscation does apply, and where it doesn’t: protecting browser extension JavaScript.
Hybrid mobile (Cordova / Ionic / Capacitor)
The native wrapper isn’t protection — your JS ships readable inside the APK/IPA. Obfuscate the built bundle before packaging, keep secrets server-side, and know where JS obfuscation stops and native shielding begins: protecting Cordova / Ionic / Capacitor apps.
WordPress plugins
The wordpress.org directory forbids obfuscation and requires readable code — and your PHP moat is already server-side. What’s allowed, and where JS obfuscation applies (off-directory premium plugins): protecting WordPress plugin JavaScript.
Progressive web apps
An installed PWA copies your whole client onto the device and runs when your server is unreachable, so an offline check is made on hardware the user controls. Protect the service worker too, and put protection before the step that fingerprints your output: protecting a progressive web app.
Zero trust architectures
Zero trust removes location from the trust decision, which makes the browser the clearest case in the model: an artifact you published, running on hardware you do not control. That settles where each decision belongs and what a transform is actually contributing: zero trust and client-side JavaScript.