RORK LABJP
FUNDING — Rork closed a $15M seed round led by Left Lane Capital, with Peak XV, True Ventures, Goodwater, and a16z SpeedrunSCALE — In under a year, Rork became one of the world's largest AI mobile app building platforms by web trafficMAX — Rork Max generates native Swift apps, powered by Claude Code and Claude Opus 4.6NATIVE — Rork Max reaches Xcode-class territory: AR/LiDAR, Metal 3D, widgets, Live Activities, HealthKit, and Core MLSTACK — Standard Rork builds iOS and Android together in React Native (Expo), so non-engineers can ship real appsPRICE — Plans start free, paid tiers from $25/month, and Rork Max at $200/monthFUNDING — Rork closed a $15M seed round led by Left Lane Capital, with Peak XV, True Ventures, Goodwater, and a16z SpeedrunSCALE — In under a year, Rork became one of the world's largest AI mobile app building platforms by web trafficMAX — Rork Max generates native Swift apps, powered by Claude Code and Claude Opus 4.6NATIVE — Rork Max reaches Xcode-class territory: AR/LiDAR, Metal 3D, widgets, Live Activities, HealthKit, and Core MLSTACK — Standard Rork builds iOS and Android together in React Native (Expo), so non-engineers can ship real appsPRICE — Plans start free, paid tiers from $25/month, and Rork Max at $200/month
Articles/Dev Tools
Dev Tools/2026-07-06Intermediate

Cloud-Synced Folders Break App Builds — Excluding Build Artifacts From Sync to Fix It for Good

A project living in Dropbox or iCloud Drive stopped building one morning. The cause was sync creating conflicted copies inside build artifacts. Here is how I excluded node_modules and Pods from sync to stop the recurrence, told as an indie developer's field notes.

Dev Environment2DropboxiCloud3Build Errors2Expo130Indie Development18

Premium Article

I noticed a file named "(Hirokawa's conflicted copy)" multiplying inside Pods on the morning a build stopped in red. The same header appeared twice and the linker was confused. This was a project that had built fine the night before.

The culprit was cloud sync. As an indie developer I keep source inside Dropbox and work across multiple machines, and that sync had reached all the way into build artifacts, cutting in mid-write to create "conflicted copies." Putting source in the cloud is not the problem. The pitfall was that I was also syncing artifacts that never needed to sync.

Plenty of developers run this same setup. Here is how I fixed the problem for good across the Dolice projects.

Why builds break inside a synced folder

A build generates, overwrites, and deletes a large number of files in a short window: expanding node_modules, installing Pods, the compiler's intermediates. While those are being written, the cloud sync client reacts to "detected changes" and starts uploading.

Two troubles arise here. One is that the same file receives different changes across machines or version history, the sync client cannot resolve it, and it creates a conflicted copy. The other is that sync temporarily locks or dematerializes a file into a placeholder, so the build tool cannot read the real contents it expected.

So what is broken is not the code but the state of the artifacts around the code. That is why "clean and rebuild" fixes it, yet it breaks again days later. In my setup, with artifacts left in sync, the recurrence rate was effectively 100%. As long as the cause is artifact sync, symptomatic fixes will not stop it.

Which directories to exclude from sync

The rule is simple: do not sync anything you can regenerate. Sync only source and config, and exclude everything a single command can rebuild.

DirectoryWhat it isHow to regenerate
node_modules/npm dependenciesnpm install
ios/Pods/CocoaPods dependenciespod install
~/Library/Developer/Xcode/DerivedData/Xcode intermediatesrebuilt on build
ios/build/ · android/build/build outputrebuilt on build
.gradle/ · android/.gradle/Gradle cacherebuilt on build
.expo/ · .expo-shared/Expo local cacheregenerated at start
*.xcworkspace/xcuserdata/ · .swiftpm/user state / SPM workspaceunneeded / regenerated

Syncing .git is not fatal, but to avoid history conflicts I use GitHub as the remote separately from cloud sync and include .git itself in the exclusions. I recommend this arrangement.

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
If your builds break intermittently inside a synced folder and you can't find the cause, you'll understand why it happens and stop it today with an exclusion setting
You'll get the list of artifacts to exclude from sync — node_modules, Pods, DerivedData — plus the exact exclusion steps for both Dropbox and iCloud
You'll be able to drop a reusable script into your own setup that excludes build artifacts from sync in one run at project creation
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-05-06
Adding Expo Dev Client to Your Rork App — The First Move When Native Modules Stop Working in Expo Go
The moment you add react-native-mmkv or RevenueCat to a Rork app, Expo Go stops launching it. Here's how to set up Expo Dev Client (a custom development build) and the three pitfalls I've actually walked into.
Dev Tools2026-04-08
Rork × Turborepo Monorepo Architecture: Managing Shared Code and Type-Safe Libraries Across Multiple Apps
Learn how to manage multiple Rork/Expo apps with Turborepo in a single monorepo. This guide covers shared component libraries, common type definitions, custom hooks, and utility functions — helping you move faster with higher code quality across all your apps.
Dev Tools2026-07-04
Should You Show a Read More Link? Let the Rendered Text Decide in Rork (Expo)
Clamping a product description to three lines and adding a Read more toggle sounds simple, until the toggle also appears under single-line text. This walks through measuring the real line count with onTextLayout so the toggle only shows when text actually overflows, covering iOS vs Android quirks, expand animation, and font scaling.
📚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 →