Xcode DerivedData और डेवलपर कैश सुरक्षित रूप से डिलीट करें
AskClean टीम · अपडेट: 2026-11-02
DerivedData वह फ़ोल्डर है जिसमें Xcode बिल्ड प्रोडक्ट और इंडेक्स जैसी अस्थायी फ़ाइलें रखता है, और यह चुपचाप दसियों गीगाबाइट तक बढ़ सकता है। इसे डिलीट करना सुरक्षित है: Xcode बंद करें, ~/Library/Developer/Xcode/DerivedData के अंदर की सामग्री हटाएँ, और अगले बिल्ड में Xcode सब कुछ दोबारा बना लेगा। यह गाइड इसके साथ-साथ सिम्युलेटर, आर्काइव और पैकेज कैश भी कवर करती है।

DerivedData क्या है और यह इतना बड़ा क्यों हो जाता है
DerivedData में Xcode वह सब रखता है जो वह आपके सोर्स कोड से तैयार (derive) करता है: इंटरमीडिएट बिल्ड ऑब्जेक्ट, कंपाइल किए गए प्रोडक्ट, मॉड्यूल कैश, कोड कंप्लीशन और Jump to Definition के लिए सिंबल इंडेक्स, और बिल्ड लॉग। डिफ़ॉल्ट रूप से यह ~/Library/Developer/Xcode/DerivedData में रहता है, और आपने अब तक जो भी प्रोजेक्ट या वर्कस्पेस खोला है, उनमें से हर एक का यहाँ एक सबफ़ोल्डर होता है।
इसके बढ़ने की वजह इसकी बनावट में है: Xcode हर खोले गए प्रोजेक्ट के लिए एक DerivedData फ़ोल्डर बनाता है — उन क्लोन के लिए भी जिन्हें आपने एक बार बिल्ड किया और फिर कभी नहीं छुआ — और इन्हें ख़ुद से नहीं हटाता। हर फ़ोल्डर में कॉन्फ़िगरेशन और डेस्टिनेशन (Debug और Release, सिम्युलेटर और डिवाइस) के हिसाब से अलग-अलग बिल्ड प्रोडक्ट होते हैं, इसलिए यह मानकर न चलें कि आपकी मशीन पर कितनी जगह ख़ाली होगी — पहले प्रोजेक्ट सबफ़ोल्डरों का आकार मापें।
इसकी हर चीज़ परिभाषा से ही दोबारा बनाई जा सकती है — “derived” का मतलब यही है। DerivedData डिलीट करने से आपका सोर्स कोड, प्रोजेक्ट सेटिंग या वर्शन कंट्रोल में रखी कोई भी चीज़ नहीं छुई जाती। इसकी इकलौती कीमत समय है: हर प्रोजेक्ट का अगला बिल्ड पूरा क्लीन बिल्ड होता है, और कुछ मिनट तक बैकग्राउंड में इंडेक्सिंग फिर से चलती है।
DerivedData डिलीट करें
Xcode का Clean Build Folder कमांड (Product > Clean Build Folder, या Shift-Command-K) सिर्फ़ अभी खुले प्रोजेक्ट के बिल्ड प्रोडक्ट साफ़ करता है — किसी अजीब बिल्ड गड़बड़ी को ठीक करने में यह काम आता है, पर डिस्क की जगह पर इसका असर न के बराबर होता है। असली जगह वापस पाने के लिए DerivedData फ़ोल्डर ही डिलीट करें: Xcode की Locations सेटिंग से उन्हें Finder में खोलें, सीधे Finder में उस फ़ोल्डर पर जाएँ, या टर्मिनल से हटाएँ। तीनों रास्तों का नतीजा एक ही है।
प्रोजेक्ट-दर-प्रोजेक्ट डिलीट करना सधा हुआ तरीका है: जिन दो-तीन प्रोजेक्ट को आप रोज़ बिल्ड करते हैं, उनका DerivedData रहने दें और बाक़ी सबके फ़ोल्डर हटा दें। पूरा फ़ोल्डर एक साथ डिलीट करना तेज़ तरीका है, और वह भी ठीक है — बस पूरे रीबिल्ड की कीमत आपको हर प्रोजेक्ट पर एक साथ चुकानी पड़ेगी।
- सबसे पहले Xcode बंद करें। Xcode चलते समय DerivedData डिलीट करने से उसका इंडेक्सर गड़बड़ा सकता है, और जो फ़ाइलें Xcode ने खोल रखी हैं, वे ठीक से डिलीट नहीं हो पातीं।
- फ़ोल्डर ढूँढें: Xcode में Settings > Locations खोलें और DerivedData पाथ के बगल वाले छोटे तीर पर क्लिक करके उसे Finder में खोलें। या Finder में Command-Shift-G (“फ़ोल्डर पर जाएँ”) दबाकर सीधे ~/Library/Developer/Xcode/DerivedData डालें।
- प्रोजेक्ट सबफ़ोल्डरों को आकार के हिसाब से सॉर्ट करें, जिन्हें हटाना है उन्हें चुनें (या सभी के लिए Command-A) और उन्हें रद्दी में डालें। पहले रद्दी में डालना ज़्यादा सुरक्षित आदत है — इरादा बदलने पर आप उन्हें तुरंत वापस ला सकते हैं।
- टर्मिनल से करना हो तो: rm -rf ~/Library/Developer/Xcode/DerivedData एक ही बार में सब कुछ डिलीट कर देता है। बहुत बड़े फ़ोल्डरों के लिए यह Finder से तेज़ है, पर इस्तेमाल से पहले नीचे दिया नोट ज़रूर पढ़ें।
- Xcode फिर से खोलें और बिल्ड करें। हर प्रोजेक्ट का पहला बिल्ड काफ़ी ज़्यादा समय लेगा, और ऐक्टिविटी बार में कुछ देर तक “Indexing” चलता दिखेगा — ये दोनों एक बार की कीमतें हैं।
rm -rf के साथ सावधान रहें: यह रद्दी को दरकिनार करके स्थायी रूप से डिलीट करता है, और इसे पलटा नहीं जा सकता। पाथ बिलकुल सही टाइप करें, इस काम के लिए इसे कभी sudo के साथ न चलाएँ, और अगर टर्मिनल में सहज नहीं हैं, तो Finder वाला तरीका यही काम इस तरह करता है कि उसे पलटा जा सके।
पुराने सिम्युलेटर रनटाइम साफ़ करें
सिम्युलेटर अक्सर डेवलपर स्टोरेज की एक और बड़ी श्रेणी होते हैं। डाउनलोड किया गया हर iOS, watchOS या tvOS रनटाइम अपनी अलग जगह घेरता है, और हर सिम्युलेटेड डिवाइस अपना डेटा ~/Library/Developer/CoreSimulator/Devices में रखता है। अगर आप कुछ Xcode अपग्रेड से गुज़र चुके हैं, तो उन OS वर्शन के रनटाइम जाँचें जिन पर अब आप टेस्ट नहीं करते।
सबसे जल्दी फ़ायदा बिल्ट-इन सफ़ाई कमांड से मिलता है: टर्मिनल में xcrun simctl delete unavailable चलाएँ। यह unavailable (अनुपलब्ध) चिह्नित हर सिम्युलेटर डिवाइस को डिलीट कर देता है — ज़्यादातर ये हटाए गए रनटाइम और पुराने Xcode वर्शन के छोड़े हुए डिवाइस होते हैं — और उनके अंदर के ऐप व डेटा भी साथ में चले जाते हैं। पहले xcrun simctl list devices से सूची देख लें, ख़ासकर तब जब आपके Mac पर एक से ज़्यादा Xcode इंस्टॉल हों।
रनटाइम हटाने के लिए Xcode में Settings > Components खोलें (Xcode 14–15 में इसका नाम Platforms था)। वहाँ हर इंस्टॉल किया हुआ सिम्युलेटर रनटाइम अपने आकार के साथ दिखेगा; कोई पुराना रनटाइम चुनें और डिलीट करें। जब तक आप पुराने OS वर्शन पर सक्रिय रूप से टेस्ट न करते हों, हर प्लेटफ़ॉर्म का सिर्फ़ नवीनतम रनटाइम रखें।
अलग-अलग सिम्युलेटेड डिवाइस भी Window > Devices and Simulators में हटाए जा सकते हैं: Simulators टैब पर जाएँ, जिस डिवाइस को आप कभी इस्तेमाल नहीं करते — जैसे पुराने टेस्ट रन के डेटा वाले वही छह डुप्लिकेट iPhone मॉडल — उस पर राइट-क्लिक करें और Delete चुनें। हर डिवाइस के साथ उसका सहेजा हुआ डेटा और ऐप भी चले जाते हैं।
आर्काइव, डिवाइस सपोर्ट फ़ाइलें और कैश
जब भी आप कोई बिल्ड डिस्ट्रिब्यूट करने के लिए Product > Archive चलाते हैं, ~/Library/Developer/Xcode/Archives में एक नया आर्काइव जुड़ जाता है। हर आर्काइव में ऐप का पूरा बिल्ड और उसके dSYM डीबग सिंबल होते हैं — अक्सर 100 MB से 1 GB तक प्रति आर्काइव। डिलीट करने से पहले यह सौदा समझ लें: इन्हीं dSYM की मदद से उस ख़ास बिल्ड की क्रैश रिपोर्ट सिंबॉलिकेट होती हैं। जो वर्शन अभी App Store या TestFlight पर लाइव हैं, उनके आर्काइव रखें (या पक्का करें कि App Store Connect के पास उनके dSYM हैं), और बाक़ी डिलीट करें — सबसे सुरक्षित रास्ता Xcode का Organizer (Window > Organizer > Archives) है, जहाँ आप हर आर्काइव को उसके संदर्भ के साथ देखकर डिलीट कर सकते हैं।
~/Library/Developer/Xcode/iOS DeviceSupport में वे डीबगिंग सिंबल रहते हैं जो Xcode हर उस असली iPhone या iPad से कॉपी करता है जिसे आपने कभी कनेक्ट किया हो — हर iOS वर्शन का एक फ़ोल्डर, आम तौर पर 2-5 GB का। जिन iOS वर्शन पर अब आपका कोई डिवाइस नहीं चलता, उनके फ़ोल्डर बेकार का बोझ हैं: उन्हें डिलीट कर दें, और अगर कभी उस वर्शन वाला डिवाइस फिर से कनेक्ट करें, तो Xcode सिंबल दोबारा कॉपी कर लेगा (एक बार “Preparing debugger support” दिखेगा)। watchOS और tvOS डिवाइसों के लिए भी ऐसे ही फ़ोल्डर होते हैं।
Xcode अपने कैश ~/Library/Caches/com.apple.dt.Xcode में भी रखता है, और सिम्युलेटर अपने कैश ~/Library/Developer/CoreSimulator/Caches में। दोनों ज़रूरत पड़ने पर दोबारा बन जाते हैं, लेकिन इन्हें तभी साफ़ करें जब Xcode और Simulator ऐप दोनों बंद हों, और CoreSimulator की जिन कैश फ़ाइलों को आप नहीं पहचानते, उन्हें न छेड़ें।
पैकेज मैनेजर कैश (SwiftPM, CocoaPods, npm, Homebrew)
पैकेज मैनेजर डाउनलोड की गई डिपेंडेंसी सँभालकर रखते हैं, ताकि आगे के इंस्टॉल तेज़ हों। यह उपयोगी है, फिर भी जिस मशीन पर सालों से प्रोजेक्ट चल रहे हों, वहाँ ये कैश डिस्क की एक बड़ी श्रेणी बन सकते हैं। ये डाउनलोड कैश दोबारा बन सकते हैं, लेकिन अगले इंस्टॉल में पैकेज फिर से डाउनलोड करने पड़ेंगे।
Swift Package Manager डाउनलोड किए गए पैकेज ~/Library/Caches/org.swift.swiftpm में कैश करता है, और हर प्रोजेक्ट के रिज़ॉल्व किए गए पैकेज चेकआउट उसके DerivedData फ़ोल्डर के अंदर भी रहते हैं — यानी DerivedData साफ़ करने से वे पहले ही साफ़ हो जाते हैं। साझा कैश आप Finder से डिलीट कर सकते हैं, या उस पाथ पर rm -rf चलाकर।
CocoaPods अपने डाउनलोड किए गए pods ~/Library/Caches/CocoaPods में रखता है। इसे ख़ाली करने का साफ़-सुथरा तरीका बिल्ट-इन कमांड है: pod cache clean --all। आपके प्रोजेक्ट के Pods फ़ोल्डर जस के तस रहते हैं; सिर्फ़ डाउनलोड कैश हटता है।
npm का कैश ~/.npm में रहता है और जिस मशीन पर JavaScript का काफ़ी काम होता हो, वहाँ कई गीगाबाइट तक पहुँच सकता है। इसे ख़ाली करने के लिए npm cache clean --force चलाएँ (npm यह फ़्लैग इसलिए माँगता है क्योंकि यह कैश अपनी गड़बड़ियाँ ख़ुद ठीक कर लेता है और आम तौर पर इसे साफ़ करने की ज़रूरत नहीं पड़ती; इसे डिलीट करना सुरक्षित है — अगले इंस्टॉल में पैकेज बस फिर से डाउनलोड हो जाते हैं)। pnpm इस्तेमाल करने वाले इसकी जगह pnpm store prune चला सकते हैं।
Homebrew पुराने डाउनलोड और आउटडेटेड पैकेज वर्शन जमा करता रहता है। brew cleanup आउटडेटेड वर्शन और पुराने डाउनलोड हटाता है, और बिना पैकेज नाम के चलाने पर वे डिपेंडेंसी भी अनइंस्टॉल कर देता है जिनकी अब किसी को ज़रूरत नहीं (जब तक HOMEBREW_NO_AUTOREMOVE सेट न हो); brew cleanup --prune=all पूरा डाउनलोड कैश भी ख़ाली कर देता है। क्या-क्या हटेगा, इसकी ड्राई-रन सूची देखनी हो, तो पहले brew cleanup -n चलाएँ।
इसे ऑटोमेट करें
ऊपर बताया सब कुछ काम करता है, लेकिन डेवलपर कचरा कभी ख़त्म नहीं होता: सामान्य काम के एक हफ़्ते में DerivedData लौट आता है, कैश फिर भर जाते हैं, और हर Xcode अपडेट एक और रनटाइम पीछे छोड़ जाता है। अगर आप हर महीने छह मैनुअल प्रक्रियाएँ दोहराना नहीं चाहते, तो ऑटोमेट करने लायक़ हिस्सा यही है — पर ऐसे टूल से जो चुपचाप थोक में डिलीट करने के बजाय अपना तर्क दिखाए।
AskClean डेवलपर फ़ाइलों को पूरी अहमियत वाली अलग श्रेणियों के रूप में देखता है: एक ही स्कैन Xcode DerivedData को प्रोजेक्ट-दर-प्रोजेक्ट, पुराने सिम्युलेटर रनटाइम (simctl से पढ़े गए, हर प्लेटफ़ॉर्म का नवीनतम रनटाइम छोड़कर), डिवाइस सपोर्ट फ़ाइलें, और npm, SwiftPM, cargo, uv वगैरह के पैकेज मैनेजर कैश अलग-अलग आइटम के रूप में दिखाता है। यह जगह घेरने वाली नई चीज़ों — लोकल AI मॉडल — को भी पकड़ता है: Hugging Face मॉडल एक-एक करके, और Ollama मॉडल लाइब्रेरी एक ही आइटम के रूप में; ये सब डिफ़ॉल्ट रूप से अनचेक रहते हैं।
हर आइटम के साथ व्याख्या मिलती है — यह क्या है, क्या यह दोबारा बन सकता है, और डिलीट करने की कीमत क्या है — और आपकी पुष्टि के बिना कुछ नहीं चलता। पुष्टि किए गए आइटम रद्दी में नहीं जाते, बल्कि स्थायी रूप से डिलीट हो जाते हैं, इसलिए पुष्टि से पहले हर चयन जाँच लें; आपका सोर्स कोड और फ़ोटो लाइब्रेरी कभी नहीं छुए जाते। यह इस गाइड वाली ही चेकलिस्ट है — बस टर्मिनल में घंटे भर की मेहनत के बिना।
क्या दोबारा बन सकता है — और क्या नहीं
यह तालिका बताती है कि डिलीट करने की सीमा कहाँ है; यह जगह की बचत का कोई सार्वभौमिक दावा नहीं है। कोई भी कदम उठाने से पहले और बाद में अपना Mac मापें — Xcode सिम्युलेटर स्टोरेज वाली गाइड में दी गई रीड-ओनली जाँच स्क्रिप्ट कुछ भी बदले बिना इन फ़ोल्डरों का आकार बताती है।
| श्रेणी | डिफ़ॉल्ट स्थान | डिलीट करने का नतीजा |
|---|---|---|
| DerivedData | ~/Library/Developer/Xcode/DerivedData | दोबारा बिल्ड और इंडेक्स होता है; सोर्स कोड और git हिस्ट्री अछूते रहते हैं। |
| सिम्युलेटर डिवाइस | ~/Library/Developer/CoreSimulator/Devices | चुने गए वर्चुअल डिवाइस के ऐप और टेस्ट डेटा खो जाते हैं; simctl या Xcode से ही डिलीट करें। |
| Archives | ~/Library/Developer/Xcode/Archives | क्रैश सिंबॉलिकेट करने के लिए ज़रूरी dSYM हट सकते हैं; पहले Organizer में जाँचें। |
| DeviceSupport | ~/Library/Developer/Xcode/iOS DeviceSupport | उस OS वर्शन वाला डिवाइस फिर से जुड़ने पर डीबग सिंबल दोबारा कॉपी हो जाते हैं। |
FAQ
क्या DerivedData डिलीट करना सुरक्षित है?
हाँ — Mac पर बड़ी जगह ख़ाली करने वाले सबसे सुरक्षित डिलीट में से यह एक है। DerivedData में सिर्फ़ वे फ़ाइलें होती हैं जिन्हें Xcode आपके सोर्स से बनाता है: बिल्ड प्रोडक्ट, मॉड्यूल कैश, इंडेक्स और लॉग। आपका कोड, प्रोजेक्ट फ़ाइलें और git हिस्ट्री कहीं और रहती हैं और इन पर कोई असर नहीं पड़ता। नतीजा बस इतना है कि हर प्रोजेक्ट का अगला बिल्ड पूरा रीबिल्ड होगा और इंडेक्सिंग फिर से चलेगी।
DerivedData कितनी बार साफ़ करना चाहिए?
कोई तय समय-सारिणी ज़रूरी नहीं — इसे तब साफ़ करें जब यह इतना बड़ा हो जाए कि फ़र्क़ पड़े; ज़्यादातर सक्रिय डेवलपरों के लिए इसका मतलब हर एक-दो महीने है। दो मौक़ों पर यह हमेशा सही रहता है: जब आपको तुरंत डिस्क की जगह चाहिए, और जब किसी प्रोजेक्ट में बिना वजह के बिल्ड एरर या पुराना कोड कंप्लीशन दिखे — ऐसे में DerivedData मिटाना पहला मानक इलाज है।
क्या DerivedData डिलीट करने के बाद Xcode धीमा हो जाएगा?
कुछ समय के लिए, हाँ। हर प्रोजेक्ट का पहला बिल्ड क्लीन बिल्ड होता है, जिसमें इंक्रीमेंटल बिल्ड से कई गुना ज़्यादा समय लग सकता है, और कोड कंप्लीशन व सर्च पूरी तरह लौटने से पहले बैकग्राउंड इंडेक्सिंग को कुछ मिनट चाहिए। उस पहले दौर के बाद परफ़ॉर्मेंस बिलकुल पहले जैसी हो जाती है — DerivedData में कैश होते हैं, ऐसे ऑप्टिमाइज़ेशन नहीं जो हमेशा के लिए खो जाएँ।
~/Library/Developer/CoreSimulator का क्या — क्या उसे डिलीट किया जा सकता है?
आँख मूँदकर नहीं — इसमें आपके अभी इंस्टॉल सिम्युलेटर और उनका डेटा रहता है, और इसे पूरा डिलीट करने पर वे तब तक काम नहीं करेंगे जब तक आप रनटाइम दोबारा इंस्टॉल न करें। इसके बजाय इसे ढंग से छाँटें: बेकार पड़े अनाथ डिवाइसों के लिए xcrun simctl delete unavailable चलाएँ (उनके ऐप और डेटा भी साथ में डिलीट होंगे), पुराने रनटाइम Xcode की Settings > Components में हटाएँ, बेकार डिवाइस Devices and Simulators में डिलीट करें, और हाथ से सिर्फ़ Caches सबफ़ोल्डर साफ़ करें — वह भी Xcode और Simulator बंद करके।
क्या Clean Build Folder भी यही काम करता है?
नहीं। Product > Clean Build Folder (Shift-Command-K) सिर्फ़ मौजूदा प्रोजेक्ट के बिल्ड प्रोडक्ट साफ़ करता है, और इंडेक्स, मॉड्यूल कैश और बाक़ी सभी प्रोजेक्ट के फ़ोल्डर जस के तस छोड़ देता है। यह बिल्ड की समस्याएँ सुलझाने का टूल है, डिस्क की जगह ख़ाली करने का नहीं — असली जगह वापस पाने के लिए DerivedData फ़ोल्डर ही डिलीट करने होंगे।
स्रोत