Is OWASP MASVS really the only standard that asks for obfuscation?
It is the only widely used one covered on this site that asks for resilience against reverse engineering as a named expectation rather than leaving it to be inferred. Ten regulatory regimes documented here, from payment card rules to the medical device lifecycle standard, describe outcomes and processes and never name the technique. The mobile standard is different because it was written for a threat model in which the attacker holds the device and can take the application apart at leisure. That is the situation in which impeding analysis becomes a stated goal instead of an optional habit.
Does a mobile standard apply to a codebase written in JavaScript?
It applies to the application you publish, whatever it happens to be written in. If you ship a hybrid application, a framework that packages a JavaScript bundle, or a native application with an embedded web view, then a substantial part of what an assessor will pull apart is JavaScript, and that is the part a JavaScript protector reaches. If your application is fully native with no web content and no bridge, then the standard still applies to you and this product does not, because there is no JavaScript in the artifact to transform.
Which resilience expectations does a JavaScript protector genuinely answer?
Three of them, in substance. Making the shipped code costly to read and follow, which is what renaming, string handling, control flow flattening and virtualised bytecode are for. Detecting that the running program has been instrumented, which the anti monkey patching guard addresses by watching a defined list of platform functions and comparing them against a pristine copy. And binding a build to an identity, which the watermark and the build manifest provide. Those are real answers to real expectations, and they are also only part of the category.
Which resilience expectations does it not answer at all?
Everything that lives below the JavaScript layer, and the list is worth being blunt about. Root and jailbreak detection. Emulator and debugger detection at the process level. Hardware backed device attestation. Certificate pinning in the network stack. Verification that the installed package signature matches yours. None of those can be implemented by transforming a bundle, because a bundle runs inside a runtime that has already been started by code you did not write. They belong to the native shell, and an assessment that expects them will expect them there.
How much weight does the standard itself put on this category?
Less than the teams who arrive here quoting it usually assume, and the document says so plainly. Resilience is presented as an additional layer for applications whose threat model includes an adversary with the device in hand, not as a substitute for the categories that cover storage, cryptography, authentication, network communication and platform interaction. An application that hardcodes a credential and then obfuscates the file has failed a different category and has not passed this one. Reading the resilience section first, and the rest afterwards, is the single most common way to misread the standard.
What does an assessor ask for beyond the protected file itself?
Evidence that the protected file is the one you meant to ship, and that you can account for it later. Three artifacts do most of that work here. The protection manifest records a source hash and an output hash for every file in the run. A fixed seed makes the build reproducible, so the same input and options produce byte identical output and a claim about a past release can actually be checked. And the watermark, an authenticated tag carried in the output, ties an artifact to a build rather than leaving you to argue from memory. Have those before the conversation rather than after it.
How much does protection change what a determined analyst can do on a device they own?
It changes the cost and the timeline, not the ceiling. On a device under the analyst's control, the runtime executes your code because it has to, and everything the program does is observable while it does it. What transformation buys is that reading the artifact stops being the cheap first step, that automated pattern matching over your source stops working, and that findings from one build stop transferring cleanly to the next when the output is regenerated. That is a genuine and measurable increase in effort, and it is the honest claim to put in an assessment rather than a claim about what is achievable in principle.
What is the shortest sensible plan for a hybrid team facing this standard?
Five steps. Read the whole standard before the resilience section, because most findings land elsewhere. Move every decision that carries authority or money to your server, so the categories about authentication and network integrity are satisfied by design. Protect the JavaScript that genuinely encodes your work, and confirm the packaging step does not undo it. Implement the native layer controls in the native layer, where they belong. Then keep the manifest, the seed and the watermark for every release, because the part of an assessment that goes badly is usually the part where nobody can prove what shipped.