PII in your logs. A Facebook pixel that fires before anyone clicks "accept." A user's email in a URL that gets logged by three different proxies. None of it crashes anything, so it sails through testing. Then a GDPR complaint, an App Store rejection, or a Data Safety mismatch turns a code habit into a legal one. IOnclad flags the patterns a privacy review would catch while you still have time to fix them.
It's broader than a missing cookie banner. IOnclad's privacy overlay runs on every scan and looks for the data-handling patterns that map directly to regulation:
A privacy gap is quiet. The app works, users sign up, and nobody notices until the cost lands all at once. Here's where it actually comes from.
A single console.log(user.email) or logger.info(\`charge for \${creditCard}\`) ships PII straight into your log aggregator, where it sits indefinitely, replicated across backups, and visible to anyone with dashboard access. Under GDPR that's processing you can't account for, and under the right to erasure you now have to find and scrub it from every log line. Error trackers are the same trap: attach a user object to a Sentry or Bugsnag report and that PII lives on a third party's servers, outside your control.
Drop in a Google Analytics snippet, a Meta pixel, or a Mixpanel call with no consent check around it and you're tracking EU visitors the instant the page loads. GDPR Article 6 needs a lawful basis, and the ePrivacy Directive needs consent before non-essential tracking runs. "We'll add the banner later" means every visit until then is a violation, and the pixel in your HTML is the evidence.
Passing ?email=\${user.email} or a user ID as a query parameter feels harmless. It isn't. URLs get logged by your server, every proxy in between, the browser history, and your analytics tool, which means that email is now sitting in a dozen systems you never meant to put it in. This is one of the easiest ways to leak personal data without a single "breach."
Import Apple's AdSupport framework but forget to call the App Tracking Transparency prompt, and Apple rejects the build. Request location, contacts, camera, or microphone in your Android manifest without a matching Data Safety declaration, and Google Play flags it. These aren't fines, they're a blocked launch, and you find out the day you submit instead of the week before.
None of these throw an error or fail a test. Your CI is green, the app runs, and the compliance debt is invisible until a regulator, a store reviewer, or a user complaint surfaces it. By then "fix it before launch" has become "fix it under deadline, with lawyers."
It usually starts as one convenient line during a fast week:
// debugging a payment bug, just want to see what's coming in logger.info(\`checkout for \${user.email}, card \${creditCard}\`); // the marketing tag added "to measure the launch" <script>fbq('track', 'PageView');</script> // no consent gate // the share link that looked fine in review const url = \`/invite?email=\${user.email}\`; // none of this breaks the build. it just quietly // writes PII to logs, tracks EU users without consent, // and leaks an email into every server access log.
IOnclad runs a dedicated privacy and compliance overlay on every scan, regardless of project type, and it's 100% offline. Your code never leaves your machine. It flags:
console.log, a logger, or a print statement.p=none.These checks fire on real, dynamic patterns, not on the word "email" in your UI copy, so a static utm_medium=email marketing string won't trip the URL check. IOnclad finds known patterns and common misconfigurations. It is not legal advice or a substitute for a compliance review.
beforeSend hook on your error tracker to scrub user data before it leaves.ATTrackingManager.requestTrackingAuthorization() before touching the IDFA, and fill out the Play Console Data Safety form for every permission you request.Scan your code and full git history in under a minute. Free verdict, no signup, nothing leaves your machine.