Research & Release Notes

AI-aware JavaScript protection, written down.

Long-form articles on what AI assistants can and cannot do with obfuscated JavaScript, how Maximum-mode transforms hold up against modern reverse engineering, and how teams put protection into release workflows.

Featured Article
Vendor Comparison 2026-04-26 ~10 min read

JavaScript VM protection compared — Jscrambler, JSDefender, Verimatrix, OSS virtualizers

Vendor by vendor on JavaScript bytecode VM protection. What Jscrambler, PreEmptive JSDefender, Verimatrix Code Protection, Digital.ai Application Protection, and the open-source virtualizers actually ship. Where JSO’s selective per-function virtualization fits. Includes a budget-band decision framework.

Read the full comparison

Browse by topic

Grouped hubs

Every article below tests one real library and reports what it measured. If you are looking for a surface rather than a date, start with the six failure modes — the synthesis of the whole series — or jump to the hub for the code you are shipping.

More research and roadmap

Newest first

Articles 109–120 of 256

Compatibility · New 2026-08-16 ~10 min read

Does Obfuscation Break the User Timing API?

Marks, measures and their durations survived five protection configurations unchanged, because a mark name is a string and strings are not rename sites. What breaks is reading the entry objects the platform hands back, and the failure looks like a performance dashboard full of blanks.

Read article ›
Compatibility · New 2026-08-16 ~10 min read

Does Obfuscation Break WeakRef and FinalizationRegistry?

A WeakRef dereferenced to the identical object and a FinalizationRegistry accepted its registrations and unregister token across five protection configurations. The surface is unusually small: only the platform method names can be broken, and the held value is yours to name.

Read article ›
Compatibility · New 2026-08-16 ~10 min read

Does Obfuscation Break Retry and Backoff Configuration?

A retry helper with an exponential backoff schedule and a circuit breaker survived every protection configuration, including member renaming of its own options object. It stops surviving the moment that object is loaded from JSON, and the failure is a silent revert to defaults with a NaN delay.

Read article ›
Compatibility · New 2026-08-16 ~10 min read

Does Obfuscation Break WebAssembly Interop?

A WebAssembly module compiled, instantiated, called its imported callback and returned the same value in all five configurations. The break is member renaming reaching the import object, whose keys are strings compiled into a binary the JavaScript obfuscator never opens.

Read article ›
Compatibility · New 2026-08-16 ~10 min read

Does Obfuscation Break Error Cause Chains?

Error cause chains, AggregateError and the walk a crash reporter does over them measured identical in all five configurations. Member renaming breaks them two ways, and the quieter one leaves your reporter shipping the word undefined instead of a message.

Read article ›
Compatibility · New 2026-08-16 ~10 min read

Does Obfuscation Break toSorted, with and the New Array Methods?

The non-mutating array methods and Object.groupBy measured identical in all five configurations, including non-mutation and comparator stability. The measured curiosity is that arr.with survives member renaming while arr.at does not, and the reason is that with is a reserved word.

Read article ›
Compatibility · New 2026-08-16 ~10 min read

Does Obfuscation Break Tagged Templates?

Tagged templates keep the per-call-site caching and the frozen strings array that css-in-js, lit-html and graphql-tag memoise on, measured across five configurations. The breaks are member renaming reaching strings.raw or length, and both are loud.

Read article ›
Compatibility · New 2026-08-15 ~10 min read

Does obfuscation break UMD and module wrappers?

A UMD wrapper picked the same branch before and after protection in all five configurations, including the AMD and global-fallback paths. Letting member renaming match exports turns module.exports into a generated name and ships a package that exports nothing without throwing.

Read article ›
Compatibility · New 2026-08-15 ~10 min read

Does obfuscation break duck typing and capability checks?

Code that decides what an object is by asking which members it has measured identical in five configurations. Member renaming breaks it two measured ways: a real promise stops being recognised as thenable, and a validator driven by a list of required names reports every field missing.

Read article ›
Compatibility · New 2026-08-15 ~10 min read

Does obfuscation break streams and backpressure?

Reader loops, transform streams and cancellation measured identical against node's real WHATWG streams. Member renaming reaching the underlying-source callbacks produces the quietest failure on this site: no chunks, no output, no error and a successful exit.

Read article ›
Compatibility · New 2026-08-15 ~10 min read

Does obfuscation break undefined and optional reads?

Absent, undefined and null stayed distinguishable in all five configurations, along with void 0, an array hole and a local that shadows undefined. The one measured break is an optional read addressed by a string key while member renaming rewrites the declaration.

Read article ›
Compatibility · New 2026-08-15 ~10 min read

Does obfuscation break Function.name and reflection?

Identifier renaming changes fn.name, constructor.name and the parameter names readable through Function.prototype.toString, while arity and the native-code marker survive. Name-keyed registries and implicit dependency injection are the two patterns that break.

Read article ›

More articles coming

We publish on AI-aware protection, modern JavaScript build integration, runtime evidence, and how obfuscation fits with server-side authority. New posts are linked from the homepage when they go live.