RORK LABJP
MAX — Rork Max generates native Swift for iPhone, iPad, Apple Watch, Apple TV, and Vision Pro, with 2-click App Store publishing and no Xcode requiredSTACK — Standard Rork builds cross-platform mobile apps with React Native (Expo); choosing between the two by use case is the key decisionFOCUS — Unlike web-first tools such as Bolt or Lovable, Rork specializes in native iOS and Android app generationBUGS — A hands-on review reports Rork resolved about 70% of bugs without manual help, with the remaining 30% needing edits in the exported codebaseFUNDING — Rork raised $2.8M from a16z (Andreessen Horowitz)PRICING — It is free to start, with paid plans from $25/month, so you can try before committingMAX — Rork Max generates native Swift for iPhone, iPad, Apple Watch, Apple TV, and Vision Pro, with 2-click App Store publishing and no Xcode requiredSTACK — Standard Rork builds cross-platform mobile apps with React Native (Expo); choosing between the two by use case is the key decisionFOCUS — Unlike web-first tools such as Bolt or Lovable, Rork specializes in native iOS and Android app generationBUGS — A hands-on review reports Rork resolved about 70% of bugs without manual help, with the remaining 30% needing edits in the exported codebaseFUNDING — Rork raised $2.8M from a16z (Andreessen Horowitz)PRICING — It is free to start, with paid plans from $25/month, so you can try before committing
Articles/Dev Tools
Dev Tools/2026-06-17Advanced

Auditing the Dependencies Rork Generates: A Supply-Chain Hygiene Routine

Even a four-screen Rork app pulls in 900+ transitive dependencies. Before a vulnerability lands and you cannot tell which app is affected, build an audit habit with npm ls, npm audit, overrides, and depcheck — framed for running several apps at once.

Rork415DependenciesSecurity6npm2Long-term Operations3

Premium Article

I once idly counted the node_modules in an exported Rork project. It was a small app, about four screens. Even so, the installed packages numbered over 900. I recognized maybe a dozen of them by name.

The actual request had been "let the user pick a photo and save it." Rork chose the libraries needed for that, each of which dragged in the libraries it depended on internally, and the total landed at 900. This is not Rork being careless; it is the everyday reality of modern JavaScript development. The problem arises when you carry that everyday reality across several apps as a solo developer.

I run several wallpaper and wellness apps in parallel. When each one carries hundreds of transitive dependencies, the day a vulnerability surfaces in some library, you can no longer tell at a glance which of your apps is affected. Precisely because the AI chooses the dependencies, you need a habit of taking inventory of what was chosen.

Below is the audit routine I actually run to keep the dependencies in Rork-generated apps from quietly expanding your supply-chain risk, alongside the exact commands.

First, make visible what you depend on

The first step of an inventory is to look at direct and transitive dependencies separately. What lines up in package.json is only the direct dependencies; the real risk hides in the transitive ones hanging beneath them. Even in a small app, it is not unusual for transitive dependencies to make up nearly 90% of the total.

I check the direct dependencies by limiting the depth to one level.

# List only direct dependencies (collapse transitive ones)
npm ls --depth=0
 
# Count the total including transitive dependencies
npm ls --all --parseable | wc -l
 
# Reverse-trace WHY a specific library is present
npm why <package-name>

That last one, npm why, is especially effective. When you find an unfamiliar package, you can trace back which direct dependency dragged it in. Discoveries like "an old compression library came in as a chain reaction for this image library" start here.

Sweep for vulnerabilities once a week, mechanically

After visibility comes checking for known vulnerabilities. I run this with no judgment involved, mechanically on a fixed day each week.

# List known vulnerabilities with severity
npm audit
 
# Auto-fix only within non-breaking changes
npm audit fix
 
# Fail CI on high severity and above (decide by exit code)
npm audit --audit-level=high

The thing to watch is not running npm audit fix on impulse. Add --force and it will apply compatibility-breaking major updates all at once, a pitfall that leaves your production build unable to compile. I target only high and above, confirming the impact of each update before taking it in.

When you have several apps, it helps to bundle this weekly sweep into one script.

#!/usr/bin/env bash
# audit-all.sh — check vulnerabilities across all apps at once
set -e
for app in ~/apps/*/; do
  echo "===== $(basename "$app") ====="
  ( cd "$app" && npm audit --audit-level=high || echo "vulnerabilities need attention" )
done

Running this once over the weekend tells you, in one list, which apps need attention. Just moving vulnerability response from "when I remember" to "a weekly inspection" sharply cuts what slips through.

Thank you for reading this far.

Continue Reading

What follows includes implementation code, benchmarks, and practical content we hope you'll find useful. This site runs without ads — server and development costs are supported entirely by members like you. If it's been helpful, we'd be truly grateful for your support.

WHAT YOU'LL LEARN
A workflow that separates direct from transitive dependencies with npm ls and npm why, and reverse-traces how an unfamiliar package got in
A script that runs a weekly npm audit across all your apps, plus a severity filter that avoids breaking production builds with --force
Pinning transitive versions with overrides, removing unused dependencies with depcheck, and why native SDKs need their own separate ledger
Secure payment via Stripe · Cancel anytime

Unlock This Article

Get full access to the rest of this article. Buy once, read anytime. This site is ad-free — your support goes directly toward keeping it running.

or
Unlock all articles with Membership →
Share

Thank You for Reading

Rork Lab is ad-free, supported entirely by members like you. We publish practical guides daily with implementation code, benchmarks, and production-ready patterns. If you've found it useful, we'd love to have you on board.

  • Copy-paste ready implementation code
  • New advanced guides published daily
  • $5/mo or $10 for lifetime access
View Membership →

Related Articles

Dev Tools2026-06-12
Keeping Manual Fixes Alive Across Rork Regenerations — Boundary Design for AI-Owned Code
A tiny copy-change request quietly reverted my week-old ATT fix. Here is the boundary architecture I use now: a guarded directory, one-line adapters, patch assets, and scoped prompts — with measured blast-radius numbers.
Dev Tools2026-05-19
Auto-Throttling AdMob When Crash Rates Spike: A Revenue-Protecting Brake Architecture with Rork, Firebase Remote Config, and Crashlytics
When crash rates spike, do you keep showing ads and watch your store rating crater, or pull back and accept the lost revenue? After 12 years of indie operations, my answer is neither: a four-state auto-throttle architecture that ties Firebase Remote Config and Crashlytics signals into AdMob serving decisions.
Dev Tools2026-04-21
Protecting Your Rork App From Fraudulent Purchases and Request Spoofing — A Complete Server-Side Validation Design With App Attest and Play Integrity
A complete walkthrough of how to protect your Rork app's revenue and API endpoints from request spoofing and IAP fraud using Apple's App Attest and Google's Play Integrity APIs, with runnable Cloudflare Workers code and StoreKit 2 JWS verification.
📚RECOMMENDED BOOKS
Build a Large Language Model (From Scratch)
Sebastian Raschka
LLM Dev
Prompt Engineering for LLMs
Berryman & Ziegler
Prompting
AI Engineering
Chip Huyen
AI Eng
* Contains affiliate links
See all →