navigation3

  
Navigation 3, नेविगेशन की नई लाइब्रेरी है. इसे Compose के साथ काम करने के लिए डिज़ाइन किया गया है.
नया अपडेट स्टेबल रिलीज़ रिलीज़ कैंडिडेट बीटा रिलीज़ ऐल्फ़ा रिलीज़
23 सितंबर, 2026 1.2.0 - - 1.3.0-alpha01

डिपेंडेंसी का एलान करना

navigation3 पर डिपेंडेंसी जोड़ने के लिए, आपको अपने प्रोजेक्ट में Google Maven रिपॉज़िटरी जोड़नी होगी. ज़्यादा जानकारी के लिए, Google की Maven रिपॉज़िटरी पढ़ें.

अपने ऐप्लिकेशन या मॉड्यूल के लिए, build.gradle फ़ाइल में उन आर्टफ़ैक्ट की डिपेंडेंसी जोड़ें जिनकी आपको ज़रूरत है:

Groovy

dependencies {
    implementation "androidx.navigation3:navigation3-runtime:1.3.0-alpha01"
    implementation "androidx.navigation3:navigation3-ui:1.3.0-alpha01"
}

Kotlin

dependencies {
    implementation("androidx.navigation3:navigation3-runtime:1.3.0-alpha01")
    implementation("androidx.navigation3:navigation3-ui:1.3.0-alpha01")
}

डिपेंडेंसी के बारे में ज़्यादा जानने के लिए, बिल्ड डिपेंडेंसी जोड़ना लेख पढ़ें.

सुझाव/राय दें या शिकायत करें

आपके सुझाव, शिकायत या राय से Jetpack को बेहतर बनाने में मदद मिलती है. अगर आपको कोई नई समस्या मिलती है या आपके पास इस लाइब्रेरी को बेहतर बनाने के लिए सुझाव हैं, तो हमें बताएं. कृपया नई समस्या सबमिट करने से पहले, इस लाइब्रेरी में शामिल मौजूदा समस्याओं को देखें. स्टार बटन पर क्लिक करके, किसी मौजूदा समस्या के लिए वोट किया जा सकता है.

नई समस्या दर्ज करने का तरीका

ज़्यादा जानकारी के लिए, Issue Tracker का दस्तावेज़ देखें.

वर्शन 1.3

वर्शन 1.3.0-alpha01

23 सितंबर, 2026

androidx.navigation3:navigation3-*:1.3.0-alpha01 रिलीज़ हो गया है. वर्शन 1.3.0-alpha01 में ये बदलाव शामिल हैं.

** गड़बड़ियां ठीक की गईं **

  • NavDisplay में प्रेडिक्टिव बैक ऐनिमेशन हैंडऑफ़ की समस्या ठीक की गई. इसके लिए, DeferredAnimatedContent पर माइग्रेट किया गया और ट्रांज़िशन हैंडऑफ़ की समस्याओं को हल किया गया. I145eaedd b/430807423

इस आर्टफ़ैक्ट के लिए कोई रिलीज़ नोट उपलब्ध नहीं है.

वर्शन 1.2.0

23 सितंबर, 2026

androidx.navigation3:navigation3-*:1.2.0 रिलीज़ हो गया है. वर्शन 1.2.0 में ये बदलाव शामिल हैं.

1.2.0 अब स्टेबल वर्शन है!

1.1.0 के बाद हुए अहम बदलाव

Result API

  • इस नए एपीआई की मदद से, LocalResultEventBus और ResultEventBusNavEntryDecorator की ओर से उपलब्ध कराए गए ResultEventBus का इस्तेमाल करके, NavEntries के बीच नतीजे पास किए जा सकते हैं.
  • rememberResultEventBus को जोड़ा गया, ताकि ResultEventBusNavEntryDecorator के बाहर ResultEventBus को होस्ट किया जा सके और उसे rememberResultEventBusNavEntryDecorator में पास किया जा सके.
  • पाए गए नतीजों को ResultEventBus#conflateAsState के साथ स्टेट के तौर पर ऐक्सेस किया जा सकता है या ResultEffect के साथ नतीजों के फ़्लो के तौर पर इकट्ठा किया जा सकता है.

Deep Link API

Navigation3 अब DeepLinkRequest, DeepLinkUri, और DeepLinkMatcher के ज़रिए androidx.navigation3.runtime.deeplink में Kotlin Multiplatform (केएमपी) डीप लिंक के साथ काम करता है.

  • DeepLinkRequest और RequestExtras: यह DeepLinkUri, यूआरआई स्ट्रिंग या Android Intent से बनाए गए डीप लिंक अनुरोध को दिखाता है. टाइप-सेफ़ RequestExtras कंटेनर का इस्तेमाल करके, अनुरोध के अतिरिक्त मेटाडेटा को अटैच किया जा सकता है. इस कंटेनर को requestExtras डीएसएल और RequestExtrasKey<T> की मदद से बनाया गया है.
  • DeepLinkMatcher: यह एक ऐसे डीप लिंक को दिखाता है जिसे DeepLinkRequest से मैच किया जा सकता है. हर मैच करने वाला इंस्टेंस, उस नेविगेशन कुंजी से जुड़ा होता है जो इस डीप लिंक के साथ काम करती है. किसी नेविगेशन कुंजी को एक से ज़्यादा मैच करने वालों से जोड़ा जा सकता है. DeepLinkMatcher.match को कॉल करने पर, MatchResult मिलेगा. अगर मैच हो जाता है, तो इसमें नेविगेशन की से जुड़ी जानकारी होगी. डिफ़ॉल्ट रूप से, DeepLinkMatcher को दो तरीकों से लागू किया जाता है: UriDeepLinkMatcher का इस्तेमाल Uri के आधार पर डीप लिंक मैच करने के लिए किया जाता है. वहीं, StaticKeyDeepLinkMatcher का इस्तेमाल सिर्फ़ DeepLinkMatcher.Filter के साथ डीप लिंक मैच करने के लिए किया जाता है. , बूलियन के हिसाब से मैच होता है.
  • BackStackMatcher: डीप लिंक के मेल खाने पर सिंथेटिक पिछली गतिविधियां बनाने के लिए, DeepLinkMatcher. BackStackMatcher को DeepLinkMatcher.withBackStack एक्सटेंशन फ़ंक्शन के ज़रिए बनाया जा सकता है.

पीछे जाने पर झलक दिखाने वाले नेविगेशन को हैंडल करना

  • SceneState को पीछे जाने पर झलक दिखाने की सुविधा (onBackCompleted और onBackCancelled) के साथ आसानी से कनेक्ट करने के लिए, NavigationBackHandler और rememberNavigationEventState जोड़े गए हैं. इससे कस्टम यूज़र इंटरफ़ेस (यूआई) कॉम्पोनेंट, स्टैंडर्ड पीछे जाने की प्रोसेस और पीछे जाने पर झलक दिखाने वाले हाथ के जेस्चर की सुविधा के साथ काम कर सकते हैं. इसके लिए, पिछली गतिविधियों के डेल्टा की मैन्युअल तरीके से गिनती करने की ज़रूरत नहीं होती.
  • पीछे जाने पर झलक दिखाने की सुविधा के ट्रांज़िशन को बेहतर बनाया गया है. इसमें फ़ॉरवर्ड ऐनिमेशन के दौरान, बीच में ही ट्रिगर किए गए पीछे जाने पर झलक दिखाने वाले हाथ के जेस्चर की सुविधा भी शामिल है.

अन्य बदलाव

  • NavEntry.contentKey अब डिफ़ॉल्ट रूप से key.toString() और key::class.toString() का कंपोज़िट है. इससे data object कुंजियों के बीच होने वाले टकराव को रोका जा सकता है. इन कुंजियों का नाम अलग-अलग इंटरफ़ेस पर एक जैसा होता है.
  • EntryProvider अब मुख्य टाइप के बजाय मुख्य इंस्टेंस के आधार पर मैच करने को प्राथमिकता देता है.
  • लिंट चेक जोड़ा गया है, ताकि यह पक्का किया जा सके कि Scene लागू करने के तरीके या तो data classes हैं या equals और hashCode लागू करते हैं.

वर्शन 1.2.0-rc01

09 सितंबर, 2026

androidx.navigation3:navigation3-*:1.2.0-rc01 रिलीज़ हो गया है. वर्शन 1.2.0-rc01 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • डीप लिंक यूआरआई पैटर्न में डुप्लीकेट प्लेसहोल्डर के नाम इस्तेमाल करने की अनुमति नहीं है. (I8985c, b/522343165)

वर्शन 1.2.0-beta01

26 अगस्त, 2026

androidx.navigation3:navigation3-*:1.2.0-beta01 रिलीज़ हो गया है. वर्शन 1.2.0-beta01 में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • DeepLinkRequest.extras को Map<String, Any> से बदलकर, टाइप सेफ़ मैप जैसी नई क्लास RequestExtras में बदल दिया गया है. यह क्लास, RequestExtrasKey<T> से T के जोड़े सेव करती है. RequestExtras को requestExtras डीएसएल के साथ इंस्टैंशिएट किया जा सकता है. (Ic929d, b/543883369)

गड़बड़ियां ठीक की गईं

  • उस समस्या को ठीक किया गया है जिसकी वजह से फ़ॉरवर्ड ट्रांज़िशन के दौरान ट्रिगर किए गए, अनुमान लगाकर बैक जेस्चर करने की सुविधा के तहत, स्वाइप की प्रोग्रेस के हिसाब से ऐनिमेशन नहीं होता था. पीछे जाने पर झलक दिखाने वाला हाथ का जेस्चर अब ऐनिमेट होगा और ठीक से पूरा होगा. (Icdcb0, b/456218398)
  • लागू करने के लिए, लिंट चेक जोड़ा गया है. इससे यह पक्का किया जा सकेगा कि Scene, डेटा क्लास हैं या वे equals और hashcode को लागू करते हैं. इससे यह पक्का किया जा सकेगा कि ज़रूरत पड़ने पर एक ही Scene का इस्तेमाल किया जाए. (Ibdf0d, b/542316099)
  • NavEntry.contentKey अब डिफ़ॉल्ट रूप से key.toString() और key::class.toString() का कंपोज़िट होता है. इससे यह पक्का होता है कि एक ही नाम वाले, लेकिन अलग-अलग इंटरफ़ेस लागू करने वाले डेटा ऑब्जेक्ट में अब एक जैसा contentKey नहीं होगा. हालांकि, JS प्लैटफ़ॉर्म का key::class, पूरी तरह क्वालिफ़ाइड नाम के बजाय सिर्फ़ क्लास का सामान्य नाम दिखाता है. इसलिए, JS प्लैटफ़ॉर्म को अब भी डुप्लीकेट नामों वाले डेटा ऑब्जेक्ट के लिए, कस्टम contentKey लागू करना चाहिए. (I1fbbb, b/512534342)
  • IllegalArgumentException में, SaveableStateProvider की वजह से होने वाली समस्या को ठीक किया गया है. यह समस्या, एक से ज़्यादा पॉप ट्रांज़िशन के दौरान तेज़ी से वापस नेविगेट करने पर, डुप्लीकेट कुंजियों का इस्तेमाल करने की वजह से होती थी. (I4d728, b/516312097)

वर्शन 1.2.0-alpha07

29 जुलाई, 2026

androidx.navigation3:navigation3-*:1.2.0-alpha07 रिलीज़ हो गया है. वर्शन 1.2.0-alpha07 में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • किसी अन्य DeepLinkMatcher.MatchResult को रैप करने के लिए, एक ऐब्स्ट्रैक्ट WrappedMatchResult क्लास जोड़ी गई. इससे, मैच के नतीजों को अपनी पसंद के मुताबिक बनाया जा सकता है. साथ ही, उन्हें किसी दूसरे नतीजे के ऊपर लेयर किया जा सकता है. (I7d4dc, b/470282247)
  • नई BackStackMatcher क्लास जोड़ी गई है. यह दो पैरामीटर लेती है: एक मैच करने वाला इंस्टेंस और एक बिल्डर लैंबडा. यह इनपुट मैच करने वाले के मैच का नतीजा देता है और पिछली गतिविधियां दिखाता है. मैच होने पर, BackStackMatcher एक BackStackMatchResult दिखाता है. यह WrappedMatchResult को बढ़ाता है. इसमें मैच का ओरिजनल नतीजा और लैंबडा के साथ बनाई गई पिछली गतिविधियां शामिल होती हैं. BackStackMatcher को सिर्फ़ नए DeepLinkMatcher.withBackStack एक्सटेंशन फ़ंक्शन की मदद से बनाया जा सकता है. (Ibf987, b/470282247)

  • एक ऐब्स्ट्रैक्ट DeepLinkSerializer क्लास जोड़ी गई है, जो KSerializer को एक्सटेंड करती है. इसका इस्तेमाल value : T को String के तौर पर कोड में बदलने और डिकोड करने के लिए किया जाता है. DeepLinkSerializer का इस्तेमाल, नॉन-प्रिमिटिव डीप लिंक आर्ग्युमेंट को क्रम से लगाने के लिए किया जा सकता है. rememberSaveable और rememberNavBackStack के साथ काम करता है. (Id3c9f, b/470282247)

  • DeepLinkMatcher ने दूसरा टाइप पैरामीटर out R : DeepLinkMatcher.MatchResult<T> जोड़ा है, ताकि डेवलपर टाइप कास्टिंग के बिना, DeepLinkMatcher.match() से मिले सबक्लास किए गए MatchResult की प्रॉपर्टी ऐक्सेस कर सकें. (I693d3, b/470282247)

  • DeepLinkMatcher.MatchResult's T की ऊपरी सीमा Any? से बदलकर Any हो गई है. (I6bf1a)

  • DeepLinkRequest कंस्ट्रक्टर फ़ील्ड uri अब डिफ़ॉल्ट रूप से शून्य पर सेट है. सेकंडरी कंस्ट्रक्टर के uriString का नाम बदलकर uri कर दिया गया है. (Ia0f14, b/522194187)

गड़बड़ियां ठीक की गईं

  • ResultEffect अब rememberUpdatedState का इस्तेमाल करके, onResult लैंबडा को कैप्चर करता है. (I7d2a3, b/531709234)
  • पाथ सेगमेंट खाली होने पर, डीप लिंक मैचिंग की समस्या ठीक की गई. अगर आर्ग्युमेंट का टाइप स्ट्रिंग है, तो खाली पाथ को खाली स्ट्रिंग वैल्यू के तौर पर माना जाएगा. ऐसा न होने पर, खाली पाथ को 'कोई वैल्यू नहीं दी गई' के तौर पर माना जाता है. साथ ही, यह डिफ़ॉल्ट वैल्यू पर वापस आ जाएगा. अगर कोई डिफ़ॉल्ट वैल्यू नहीं है, तो मैचिंग नहीं हो पाएगी. (I56575, b/535298128)
  • DeepLinkRequest.uri में, खाली क्वेरी वैल्यू के लिए सहायता जोड़ी गई. अगर आर्ग्युमेंट स्ट्रिंग टाइप का है, तो खाली वैल्यू को लिटरल खाली स्ट्रिंग माना जाएगा. इसके अलावा, खाली वैल्यू को 'कोई वैल्यू नहीं दी गई' के तौर पर माना जाता है. साथ ही, मैचिंग के लिए डिफ़ॉल्ट वैल्यू का इस्तेमाल किया जाएगा. अगर कोई डिफ़ॉल्ट वैल्यू नहीं है, तो मैचिंग नहीं हो पाएगी. (I30343, b/535127459)
  • EntryProvider अब मुख्य टाइप के बजाय मुख्य इंस्टेंस के आधार पर मैच करने को प्राथमिकता देता है. (Ib5ec9, b/533331924)
  • SceneState अब सबसे ऊपर मौजूद नॉन-ओवरले सीन से शुरू होने वाले पिछले सीन का सही हिसाब लगाता है. (I91915, b/513630541)

वर्शन 1.2.0-alpha06

15 जुलाई, 2026

androidx.navigation3:navigation3-*:1.2.0-alpha06 रिलीज़ हो गया है. वर्शन 1.2.0-alpha06 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • यूआरआई फ़्रैगमेंट के बारे में UriDeepLinkMatcher दस्तावेज़ अपडेट किया गया है. इसमें बताया गया है कि वाइल्डकार्ड वाले फ़्रैगमेंट, किसी भी इनपुट से मैच करेंगे. हालांकि, इनपुट को आर्ग्युमेंट के तौर पर नहीं निकाला जाएगा. (I5ad9b, b/524677091)
  • अगर यूआरआई पैटर्न में कोई स्कीम शामिल नहीं है या यह डबल स्लैश से शुरू नहीं होता है, तो अनुरोध से मैच न होने UriDeepLinkMatcher की समस्या को ठीक किया गया है. उदाहरण के लिए, www.example.com/home अब http://www.example.com/home से मैच करेगा. (Ia6b65, b/522791926)

वर्शन 1.2.0-alpha05

01 जुलाई, 2026

androidx.navigation3:navigation3-*:1.2.0-alpha05 रिलीज़ हो गया है. वर्शन 1.2.0-alpha05 में ये बदलाव शामिल हैं.

नया एपीआई

  • rememberResultEventBus एपीआई जोड़ा गया है, जो ResultEventBus दिखाता है. इसे rememberResultEventBusNavEntryDecorator को पास किया जा सकता है. इससे ResultEventBusNavEntryDecorator के बाहर ResultEventBus को होस्ट किया जा सकता है. (Ia655b, b/516995400)

DeepLinkRequest

  • केएमपी के साथ काम करने वाले दो कंस्ट्रक्टर जोड़े गए हैं. इनमें से एक DeepLinkUri लेता है और दूसरा रॉ स्ट्रिंग यूआरआई लेता है. (I3c088, b/513200887, b/522194187)
  • (सिर्फ़ Android के लिए) एक कंस्ट्रक्टर जोड़ा गया है, जो Intent लेता है. (Ia0498, b/513200887, b/522194187)
  • सभी कंस्ट्रक्टर में एक अतिरिक्त extras फ़ील्ड होता है. इसका इस्तेमाल Map<String, Any> के लिए, अनुरोध की अतिरिक्त जानकारी अटैच करने के लिए किया जाता है. (If81d5, b/513200887)
  • एक्स्ट्रा का मैप बनाने के लिए, टाइप सेफ़ तरीके के तौर पर एक नया requestExtras dsl जोड़ा गया है. dsl, RequestExtrasKey से Any के जोड़े सेव करने के लिए put फ़ंक्शन उपलब्ध कराता है. Map<String, Any>.get(key) एक्सटेंशन फ़ंक्शन का इस्तेमाल, RequestExtrasKey(I5091c, b/513200887) की मदद से मैप से डेटा पढ़ने के लिए किया जा सकता है
  • (सिर्फ़ Android के लिए) ActionExtrasKey की मदद से, एक्सट्रा मैप बनाने के लिए ActionExtrasKey और actionExtra फ़ंक्शन जोड़ा गया. (Id0c90, [b/513200887]
  • MimeTypeExtrasKey की मदद से, एक्सट्रा मैप बनाने के लिए MimeTypeExtrasKey और mimeTypeExtra फ़ंक्शन जोड़े गए. (I85131, b/513200887)

DeepLinkMatcher

  • DeepLinkMatcher.mimeTypeFilter और DeepLinkMatcher.actionFilter फ़ंक्शन जोड़े गए हैं. इनकी मदद से, DeepLinkMatcher.Filters बनाया जा सकता है. यह DeepLinkRequest को mimeType या action के हिसाब से फ़िल्टर करता है. यह सुविधा सिर्फ़ Android पर उपलब्ध है. दोनों फ़िल्टर, स्ट्रिंग की समानता के आधार पर मैच करते हैं. साथ ही, ये केस-इनसेंसिटिव होते हैं. (Ie7e67, b/513191950)

एपीआई में हुए बदलाव

DeepLinkRequest

  • fromAction फ़ैक्ट्री फ़ंक्शन हटाएं. किसी कार्रवाई से जुड़ा अनुरोध बनाने के लिए, नए DeepLinkRequest.extras फ़ील्ड का इस्तेमाल करें.(Id0c90, b/513200887)
  • fromMimeType फ़ैक्ट्री फ़ंक्शन हटाया गया. किसी mimeType से जुड़ा अनुरोध बनाने के लिए, नए DeepLinkRequest.extras फ़ील्ड का इस्तेमाल करें. (I85131, b/513200887)
  • (सिर्फ़ Android के लिए) fromIntent फ़ैक्ट्री फ़ंक्शन हटाया गया. इसे एक नए कंस्ट्रक्टर से बदल दिया गया है, जो Intent और एक्स्ट्रा मैप लेता है. (Ia0498, b/513200887, b/522194187)
  • फ़ैक्ट्री फ़ंक्शन fromUri और fromUriString हटा दिए गए हैं. इन्हें नए कंस्ट्रक्टर से बदल दिया गया है. ये कंस्ट्रक्टर, DeepLinkUri या रॉ स्ट्रिंग यूआरआई लेते हैं. (Id5b6f, b/522194187)
  • DeepLinkMatcher, DeepLinkMatcher.MatchResult, और उनकी सबक्लास अब कोवेरिएंट टी (आउट टी) लेती हैं, ताकि Matchers के साथ इस्तेमाल किए जाने वाले हैरारिकल कुंजियों को टाइप कास्टिंग की ज़रूरत न पड़े. (I1e453, b/525094876)
  • आर्ग्युमेंट मैप के लिए UriMatchResult कंस्ट्रक्टर पैरामीटर, अब डिफ़ॉल्ट रूप से खाली मैप पर सेट होता है. (I3acdd)
  • DeepLinkMatcher.Filter ऐब्स्ट्रैक्ट क्लास अब एक फ़ंक्शनल इंटरफ़ेस है. filter कंस्ट्रक्टर फ़ील्ड को हटा दिया गया है. इसके बजाय, इसे सीधे तौर पर सबक्लास में पास किया जाना चाहिए. (I9eb7d, b/522194187)

गड़बड़ियां ठीक की गईं

  • ऐसी एंट्री पर पॉप करने पर, पॉप की गई एंट्री तुरंत गायब हो जाती थी जिसमें लैम्ब्डा वैल्यू वाला नेस्ट किया गया मेटाडेटा होता था. इस समस्या को ठीक कर दिया गया है. (Idb872, b/520494430)
  • UriDeepLinkMatcher को ठीक किया गया है, ताकि मैचिंग के दौरान ज़रूरी आर्ग्युमेंट मौजूद न होने पर, MissingFieldException दिखाने के बजाय शून्य UriMatchResult दिखाए. (I5322f, b/524663005)
  • https स्कीम वाले यूआरआई वाले UriDeeplinkMatcher को सिर्फ़ उन अनुरोधों से मैच किया जा सकता है जिनमें https स्कीम होती है. (Ibfe22, b/522304329)
  • UriDeepLinkMatcher को ठीक करें, ताकि DeepLinkRequest को UriDeepLinkMatcher से मैच करते समय, http स्कीम को https के साथ पॉज़िटिव मैच के तौर पर सही तरीके से पहचाना जा सके. (I3a62b, b/518804264)
  • DeepLinkMatcher.MatchResult comparator अब डिफ़ॉल्ट रूप से 0 दिखाता है, जब दो नतीजे बराबर होते हैं. (I48ddb, b/518841353)
  • ज़रूरी आर्ग्युमेंट मौजूद न होने की वजह से, मैच करने का अनुरोध पूरा न होने पर, UriDeepLinkMatcher अब अपवाद दिखाने के बजाय, शून्य UriMatchResult दिखाएगा. (I669a7, b/470282247, b/512923412)

वर्शन 1.2.0-alpha04

03 जून, 2026

androidx.navigation3:navigation3-*:1.2.0-alpha04 रिलीज़ हो गया है. वर्शन 1.2.0-alpha04 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • ओवरले ऐनिमेशन से जुड़ी समस्या को ठीक किया गया है. इसमें, नेस्ट किए गए ओवरले (जैसे, ModalBottomSheet) के ऊपर मौजूद ओवरले के बंद होने पर, वे अचानक से फिर से ऐनिमेट होने लगते थे. (Ia2b9e, b/502624496)

वर्शन 1.2.0-alpha03

19 मई, 2026

androidx.navigation3:navigation3-*:1.2.0-alpha03 रिलीज़ हो गया है. वर्शन 1.2.0-alpha03 में ये बदलाव शामिल हैं.

नई सुविधाएं

नेविगेशन 3 में अब DeepLinkRequest और DeepLinkMatcher के साथ डीप लिंक काम करते हैं:

  • DeepLinkRequest एक ऐसा डीप लिंक है जिसमें DeepLinkUri और वैकल्पिक mimeType या कार्रवाई(सिर्फ़ Android के लिए) शामिल होती है. नई क्लास के साथ-साथ, uri, mimeType या action के साथ इंस्टेंस बनाने के लिए, कंपैनियन फ़ंक्शन भी उपलब्ध हैं. Android प्लैटफ़ॉर्म पर, इंटेंट से अनुरोध बनाने के लिए भी एक हेल्पर होता है. (Iaaac9, b/470282247)

    val uriOnlyRequest = DeepLinkRequest.fromUriString("https://sampledeeplink.com/home")
    val uriAndMimeRequest = DeepLinkRequest.fromUriString(
      "https://sampledeeplink.com/user/profile?id=123",
      "image/png"
    )
    
  • DeepLinkMatcher एक ऐसा डीप लिंक दिखाता है जिसे DeepLinkRequest से मैच किया जा सकता है. हर मैच करने वाला इंस्टेंस, उस नेविगेशन कुंजी से जुड़ा होता है जो इस डीप लिंक के साथ काम करती है. किसी नेविगेशन कुंजी को एक से ज़्यादा मैचर से जोड़ा जा सकता है. DeepLinkMatcher.match को कॉल करने पर, MatchResult मिलेगा. अगर मैच हो जाता है, तो इसमें नेविगेशन की से जुड़ी जानकारी होगी. डिफ़ॉल्ट तौर पर, DeepLinkMatcher को दो तरीके से लागू किया जाता है: UriDeepLinkMatcher का इस्तेमाल, यूआरआई के आधार पर डीप लिंक मैच करने के लिए किया जाता है. वहीं, StaticKeyDeepLinkMatcher का इस्तेमाल, सिर्फ़ DeepLinkMatcher.Filter वाले डीप लिंक मैच करने के लिए किया जाता है. ये Boolean से मैच करते हैं. (I3798e, b/470282247)

  • UriDeepLinkMatcher, DeepLinkMatcher को लागू करने का एक तरीका है. यह DeepLinkUri को Serializable नेविगेशन कुंजी से मैच करके डीप लिंक को हैंडल करता है. यह प्रिमिटिव टाइप या प्रिमिटिव के कलेक्शन के डीप लिंक आर्ग्युमेंट के साथ काम करता है. जैसे, सूचियां, ऐरे, और सेट. (I1520b, b/470282247)

    @Serializable
    data class UserKey(val id: Int): NavKey
    
    // declare a deep link supported by UserKey
    val userMatcher = UriDeepLinkMatcher(
      uriPattern = "www.sampledeeplink.com/user?userId={id}",
      serializer = serializer<UserKey>()
    )
    
    // handle a requested deep link with fallback key
    val key = userMatcher.match(deepLinkRequest)?.key ?: HomeKey
    
  • DeepLinkUri जोड़ा गया. यह android.net.Uri का Kotlin-multiplatform वर्शन है (Id4725, b/470282247)

एपीआई में हुए बदलाव

  • Compose के compileSdk से मैच करने के लिए, compileSdk 37 पर ले जाया गया

गड़बड़ियां ठीक की गईं

  • एक से ज़्यादा ओवरले दिखाने पर, AnimatedBottomSheetSample के IllegalArgumentException की समस्या ठीक की गई है. अब सैंपल SceneStrategy, आखिरी नॉन-OverlayScene का सही हिसाब लगाएगा और उसे सभी ओवरले सीन के नीचे दिखाएगा. (If2281, b/506733412)
  • NavigationEvent डिपेंडेंसी को 1.1.1 पर अपग्रेड किया गया है. इससे, जांच मोड में NavigationEventHandler को हटाया जा सकता है, ताकि Android Studio के प्रीव्यू में Predictive Back की सुविधा चालू की जा सके. (I487fd)

वर्शन 1.2.0-alpha02

22 अप्रैल, 2026

androidx.navigation3:navigation3-*:1.2.0-alpha02 रिलीज़ हो गया है. वर्शन 1.2.0-alpha02 में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • onBack का नाम बदलकर onBackCompleted करें. साथ ही, पीछे जाने के रद्द किए गए जेस्चर को हैंडल करने की सुविधा के लिए, NavigationBackHandler में onBackCancelled जोड़ें. (I92741)
  • SceneState का इस्तेमाल करते समय, पीछे जाने के जेस्चर और प्रिडिक्टिव बैक को आसानी से हैंडल करने के लिए, NavigationBackHandler जोड़ें. इससे डेवलपर, कस्टम यूआई कॉम्पोनेंट को आसानी से बना सकते हैं. ये कॉम्पोनेंट, स्टैंडर्ड पीछे जाने की प्रोसेस और अनुमान लगाने वाले जेस्चर के साथ काम करते हैं. इसके लिए, उन्हें पिछली गतिविधियों के डेल्टा की मैन्युअल तरीके से गणना करने की ज़रूरत नहीं होती. (I6a055)
  • पीछे जाने पर झलक दिखाने वाले हाथ के जेस्चर को आसानी से कनेक्ट करने के लिए, rememberNavigationEventState जोड़ें SceneState. (Iae49c)

नई सुविधाएं

  • ResultEventBus एपीआई जोड़ा गया है, ताकि ResultEventBusNavEntryDecorator की ओर से उपलब्ध कराए गए LocalResultEventBus की मदद से, NavEntries के बीच नतीजे पास किए जा सकें. नतीजों में पास किए गए टेस्ट को ResultEventBus#conflateAsState के साथ स्थिति के तौर पर या ResultEffect के साथ नतीजों के फ़्लो के तौर पर आंका जा सकता है.

वर्शन 1.2.0-alpha01

08 अप्रैल, 2026

androidx.navigation3:navigation3-*:1.2.0-alpha01 रिलीज़ हो गया है. वर्शन 1.2.0-alpha01 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • OverlayScene से LocalNavAnimatedContentScope को ऐक्सेस करने पर, अब IllegalStateException नहीं होगा. ऐसा इसलिए, क्योंकि OverlayScenes को अब नो-ऑप LocalAnimatedContentScope के साथ उपलब्ध कराया जाता है. (I2f00c, b/486067688)

वर्शन 1.1.7

26 अगस्त, 2026

androidx.navigation3:navigation3-*:1.1.7 रिलीज़ हो गया है. वर्शन 1.1.7 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • उस समस्या को ठीक किया गया है जिसकी वजह से फ़ॉरवर्ड ट्रांज़िशन के दौरान ट्रिगर किए गए, अनुमान लगाकर बैक जेस्चर करने की सुविधा के तहत, स्वाइप की प्रोग्रेस के हिसाब से ऐनिमेशन नहीं होता था. पीछे जाने पर झलक दिखाने वाला हाथ का जेस्चर अब ऐनिमेट होगा और ठीक से पूरा होगा. (Icdcb0, b/456218398)

वर्शन 1.1.6

12 अगस्त, 2026

androidx.navigation3:navigation3-*:1.1.6 रिलीज़ हो गया है. वर्शन 1.1.6 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • NavEntry.contentKey अब डिफ़ॉल्ट रूप से key.toString() और key::class.toString() का कंपोज़िट होता है. इससे यह पक्का होता है कि एक ही नाम वाले, लेकिन अलग-अलग इंटरफ़ेस लागू करने वाले डेटा ऑब्जेक्ट में अब एक जैसा contentKey नहीं होगा. हालांकि, JS प्लैटफ़ॉर्म का key::class, पूरी तरह क्वालिफ़ाइड नाम के बजाय सिर्फ़ क्लास का सामान्य नाम दिखाता है. इसलिए, JS प्लैटफ़ॉर्म को अब भी डुप्लीकेट नामों वाले डेटा ऑब्जेक्ट के लिए, कस्टम contentKey लागू करना चाहिए. (I1fbbb, b/512534342)
  • ठीक किया गया: IllegalArgumentException, SaveableStateHolder से थ्रो किया गया. यह समस्या तब होती थी, जब बैक स्टैक से तेज़ी से पॉप अप होने की वजह से, एक साथ कई पॉप ट्रांज़िशन हो रहे हों. (I4d728, b/516312097)

वर्शन 1.1.5

29 जुलाई, 2026

androidx.navigation3:navigation3-*:1.1.5 रिलीज़ हो गया है. वर्शन 1.1.5 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • entryProvider डीएसएल अब NavEntry को प्राथमिकता देता है, जिसे किसी मुख्य इंस्टेंस के साथ बनाया गया है. उदाहरण के लिए, entry(key = userKey) { ... } को NavEntry पर प्राथमिकता दी जाती है, जिसे किसी मुख्य क्लास के साथ बनाया गया है, जैसे कि entry<UserKey>{ ... }.(Ib5ec9, b/533331924)

वर्शन 1.1.4

01 जुलाई, 2026

androidx.navigation3:navigation3-*:1.1.4 रिलीज़ हो गया है. वर्शन 1.1.4 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • ऐसी एंट्री पर पॉप करने पर, पॉप की गई एंट्री तुरंत गायब हो जाती थी जिसमें लैम्ब्डा वैल्यू वाला नेस्ट किया गया मेटाडेटा होता था. इस समस्या को ठीक कर दिया गया है. (Idb872, b/520494430)

वर्शन 1.1.3

17 जून, 2026

androidx.navigation3:navigation3-*:1.1.3 रिलीज़ हो गया है. वर्शन 1.1.3 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • ओवरले ऐनिमेशन से जुड़ी समस्या को ठीक किया गया है. इसमें, नेस्ट किए गए ओवरले (जैसे, ModalBottomSheet) के ऊपर मौजूद ओवरले के बंद होने पर, वे अचानक से फिर से ऐनिमेट होने लगते थे. (Ia2b9e, b/502624496)

  • NavigationEvent डिपेंडेंसी को 1.1.2 पर अपग्रेड किया गया है. इससे, Android Studio Previews में Predictive Back की सुविधा चालू करने के लिए, जांच मोड में NavigationEventHandler को नो-ऑप के तौर पर हटाने की सुविधा मिली है.

वर्शन 1.1.2

19 मई, 2026

androidx.navigation3:navigation3-*:1.1.2 रिलीज़ हो गया है. वर्शन 1.1.2 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • NavigationEvent डिपेंडेंसी को 1.1.1 पर ले जाया गया है. इससे, Android Studio Previews में Predictive Back की सुविधा चालू करने के लिए, जांच मोड में NavigationEventHandler को नो-ऑप के तौर पर हटा दिया गया है.

वर्शन 1.1.1

22 अप्रैल, 2026

androidx.navigation3:navigation3-*:1.1.1 रिलीज़ हो गया है. वर्शन 1.1.1 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • OverlayScene से LocalNavAnimatedContentScope को ऐक्सेस करने पर, अब IllegalStateException नहीं होगा. ऐसा इसलिए, क्योंकि OverlayScenes को अब नो-ऑप LocalAnimatedContentScope के साथ उपलब्ध कराया जाता है. (I2f00c, b/486067688)

वर्शन 1.1.0

08 अप्रैल, 2026

androidx.navigation3:navigation3-*:1.1.0 रिलीज़ हो गया है. वर्शन 1.1.0 में ये बदलाव शामिल हैं.

1.1.0 अब स्टेबल है!

1.0.0 के बाद हुए अहम बदलाव

सीन के बीच शेयर किए गए एलिमेंट - Navigation3 अब सीन को शेयर किए गए एलिमेंट ऑब्जेक्ट के तौर पर इस्तेमाल करने की सुविधा देता है. इसका मतलब है कि सीन बदलते समय, यह पक्का किया जा सकता है कि वे आसानी से बदलें. इसे चालू करने के लिए, SharedTransitionScope को NavDisplay या rememberSceneState पर पास करें.

SceneDecoratorStrategy - SceneDecoratorStrategy को इसलिए पेश किया गया है, ताकि यूज़र इंटरफ़ेस (यूआई) के सामान्य कॉम्पोनेंट से सीन को सजाने या अलग-अलग सीन के बीच स्थिति शेयर करने जैसे इस्तेमाल के उदाहरणों को सपोर्ट किया जा सके.

NavMetadata DSL - Navigation3 अब टाइप-सेफ़ मेटाडेटा डीएसएल उपलब्ध कराता है. डीएसएल, नए MetadataKey इंटरफ़ेस का इस्तेमाल करता है. इससे, वे कुंजी और वैल्यू टाइप तय कर सकते हैं जिन्हें उन्हें मेटाडेटा मैप में देना है. इसमें NavDisplay ट्रांज़िशन के लिए नए NavMetadataKeys भी जोड़े गए हैं, ताकि इनका इस्तेमाल नए मेटाडेटा डीएसएल के साथ किया जा सके. इससे NavDisplay में ट्रांज़िशन जोड़े जा सकते हैं.

OverlayScene ऐनिमेशन - OverlayScene इंटरफ़ेस में, onRemoved सस्पेंड करने के लिए नया कॉलबैक है. इस कॉलबैक को तब शुरू किया जाता है, जब सीन से जुड़ी कोई कुंजी बैकस्टैक से हटा दी जाती है. हालांकि, ऐसा कंपोज़िशन से बाहर निकलने से पहले होता है. इससे onRemoved में कॉल किए गए एग्ज़िट ऐनिमेशन को पूरा होने का समय मिलता है. इसके बाद, ओवरले सीन को कंपोज़िशन से हटा दिया जाता है.

अन्य बदलाव - NavDisplay और rememberSceneState अब List<SceneStrategy> पैरामीटर का इस्तेमाल करते हैं. पहले, ये SceneStrategy पैरामीटर का इस्तेमाल करते थे. then इनफ़िक्स की मदद से, पैरामीटर को एक साथ जोड़ा जाता था. अब EntryProvider डीएसएल के ज़रिए, एंट्री पासकोड के हिसाब से मेटाडेटा को डाइनैमिक तरीके से जोड़ा जा सकता है.

वर्शन 1.1.0-rc01

25 मार्च, 2026

androidx.navigation3:navigation3-*:1.1.0-rc01 रिलीज़ हो गया है. वर्शन 1.1.0-rc01 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • NavDisplay अब यह पक्का करता है कि ओवरले के नीचे दिखने वाली एंट्री के लिए, Lifecycle की सीमा STARTED पर सेट हो. इससे यह पक्का होता है कि डायलॉग का इस्तेमाल करते समय, dropUnlessResumed जैसे एपीआई काम करते रहें. (If209f, b/483966071)
  • NavDisplay में एक समस्या ठीक की गई है. इसमें एक ही स्क्रीन के बीच आगे-पीछे नेविगेट करने और दोनों के बीच ऐनिमेशन में रुकावट आने की वजह से, स्क्रीन का z-ऑर्डर गलत हो सकता था. (I4d491, b/459419800)

वर्शन 1.1.0-beta01

11 मार्च, 2026

androidx.navigation3:navigation3-*:1.1.0-beta01 रिलीज़ हो गया है. वर्शन 1.1.0-beta01 में ये बदलाव शामिल हैं.

वर्शन 1.1.0-alpha05

25 फ़रवरी, 2026

androidx.navigation3:navigation3-*:1.1.0-alpha05 रिलीज़ हो गया है. वर्शन 1.1.0-alpha05 में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • NavDisplay और rememberSceneState अब then इनफ़िक्स से चेन किए गए पिछले सिंगल SceneStrategy पैरामीटर के बजाय, List<SceneStrategy> पैरामीटर का इस्तेमाल करते हैं. यह List<SceneDecoratorStrategy<T>> के साथ ज़्यादा बेहतर तरीके से काम करता है. इन दोनों एपीआई में पहले से ही का इस्तेमाल किया जाता है. पिछले एपीआई बंद कर दिए गए हैं. (I78b2c, b/482108465)
  • मेटाडेटा #contains ऑपरेटर जोड़ा गया है. इससे यह पता चलेगा कि मेटाडेटा मैप में दिया गया NavMetadataKey मौजूद है या नहीं. (Ic30db, b/485311895)
  • मेटाडेटा डीएसएल के साथ इस्तेमाल करने के लिए, DialogSceneStrategy के लिए NavMetadataKey DialogKey जोड़ा गया. (Ic7a26, b/483388817)

वर्शन 1.1.0-alpha04

11 फ़रवरी, 2026

androidx.navigation3:navigation3-*:1.1.0-alpha04 रिलीज़ हो गया है. वर्शन 1.1.0-alpha04 में ये बदलाव शामिल हैं.

नई सुविधाएं

  • Navigation3 अब टाइप-सेफ़ मेटाडेटा डीएसएल उपलब्ध कराता है. डीएसएल, नए MetadataKey इंटरफ़ेस का इस्तेमाल करता है. इससे, वे कुंजी और वैल्यू टाइप तय कर सकते हैं जिन्हें उन्हें मेटाडेटा मैप में देना है. इससे NavDisplay ट्रांज़िशन के लिए नए NavMetadataKey भी जोड़े गए हैं, ताकि इनका इस्तेमाल नए metadata डीएसएल के साथ किया जा सके. इससे NavDisplay में ट्रांज़िशन जोड़े जा सकते हैं. (Ic10ef, Ic049c,b/476213928)

एपीआई में हुए बदलाव

  • OverlayScene इंटरफ़ेस में, onRemoved निलंबित करने के लिए नया कॉलबैक है. इस कॉलबैक को तब शुरू किया जाता है, जब सीन से जुड़ी कोई कुंजी बैकस्टैक से हटा दी जाती है. हालांकि, ऐसा कंपोज़िशन से बाहर निकलने से पहले होता है. इससे onRemoved में कॉल किए गए एक्ज़िट ऐनिमेशन पूरे हो जाते हैं. इसके बाद, ओवरले सीन को कंपोज़िशन से हटा दिया जाता है. (I29a72, b/440558061)
  • SceneStrategy ने डेकोरेशन फ़ंक्शन को एक नए SceneDecoratorStrategy में अलग कर दिया है. सीन को बेहतर बनाने के लिए, इस नए इंटरफ़ेस का इस्तेमाल किया जाना चाहिए. NavDisplay और rememberSceneState के लिए नए एपीआई उपलब्ध हैं. इनकी मदद से, SceneDecoratorStrategies को जोड़ा जा सकता है. (If9385, b/477669607, b/477670333)

गड़बड़ियां ठीक की गईं

  • उस गड़बड़ी को ठीक किया गया है जिसमें SharedTransitionLayout को NavDisplay या rememberSceneState में पास करने और किसी भी OverlayScene का इस्तेमाल करने पर क्रैश हो जाता था. ऐसा इसलिए होता था, क्योंकि SharedTransitionLayout का इस्तेमाल सिर्फ़ उन NavEntries के साथ किया जा सकता है जिन्हें AnimatedContent के हिस्से के तौर पर रेंडर किया जाता है. साथ ही, OverlayScene को अलग-अलग विंडो में रेंडर किया जाता है. (I1bb76, b/478664101)

डिपेंडेंसी अपडेट

  • Navigation3 1.0.1 से: Navigation3 अब NavigationEvent 1.0.2 पर निर्भर करता है. इससे AndroidStudio के टीज़र देखते समय, NavDisplay का इस्तेमाल करने की वजह से हुई IllegalStateException ठीक हो जाती है. (Id7212, b/477149762)

वर्शन 1.1.0-alpha03

28 जनवरी, 2026

androidx.navigation3:navigation3-*:1.1.0-alpha03 रिलीज़ हो गया है. वर्शन 1.1.0-alpha03 में ये बदलाव शामिल हैं.

नई सुविधाएं

  • अब EntryProvider डीएसएल के ज़रिए, एंट्री पासकोड के हिसाब से मेटाडेटा को डाइनैमिक तरीके से जोड़ा जा सकता है. (I942fb, b/474416976)

वर्शन 1.1.0-alpha02

14 जनवरी, 2026

androidx.navigation3:navigation3-*:1.1.0-alpha02 रिलीज़ हो गया है. वर्शन 1.1.0-alpha02 में ये बदलाव शामिल हैं.

नई सुविधाएं

  • SceneStrategy में अब नए calculatedScene(Scene) फ़ंक्शन की मदद से, सीन को नेस्ट करने की सुविधा उपलब्ध है. इसका मतलब है कि SceneStrategy को पसंद के मुताबिक बनाया जा सकता है, ताकि अन्य सीन में ज़्यादा सुविधाएं मिल सकें. (I5df7c,b/440333896)

वर्शन 1.1.0-alpha01

03 दिसंबर, 2025

androidx.navigation3:navigation3-*:1.1.0-alpha01 रिलीज़ हो गया है. वर्शन 1.1.0-alpha01 में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • Navigation3 अब सीन को शेयर किए गए एलिमेंट ऑब्जेक्ट के तौर पर इस्तेमाल करने की सुविधा देता है. इसका मतलब है कि सीन बदलते समय, यह पक्का किया जा सकता है कि वे आसानी से बदलें. इसे चालू करने के लिए, SharedTransitionScope को NavDisplay या rememberSceneState पर पास करें. (I15868)

संस्करण 1.0

वर्शन 1.0.1

11 फ़रवरी, 2026

androidx.navigation3:navigation3-*:1.0.1 रिलीज़ हो गया है. वर्शन 1.0.1 में ये बदलाव शामिल हैं.

डिपेंडेंसी अपडेट

  • Navigation3 अब NavigationEvent 1.0.2 पर निर्भर करता है. इससे AndroidStudio के टीज़र देखते समय, NavDisplay का इस्तेमाल करने की वजह से हुई IllegalStateException ठीक हो जाती है. (Id7212, b/477149762)

वर्शन 1.0.0

19 नवंबर, 2025

androidx.navigation3:navigation3-*:1.0.0 रिलीज़ हो गया है. वर्शन 1.0.0 में ये बदलाव शामिल हैं.

पेश है Navigation3!

वर्शन 1.0.0-rc01

05 नवंबर, 2025

androidx.navigation3:navigation3-*:1.0.0-rc01 रिलीज़ हो गया है. वर्शन 1.0.0-rc01 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • NavDisplay अब Scene लेवल पर LocalLifecycleOwner सेट करता है. इससे सीन के लेखक यह तय कर पाते हैं कि सभी ट्रांज़िशन पूरे हो गए हैं या नहीं. इसके लिए, उन्हें यह देखना होता है कि Lifecycle.State RESUMED है या नहीं. NavEntry लेवल पर LocalLifecycleOwner का व्यवहार पहले जैसा ही है: ट्रांज़िशन जारी रहने पर, यह STARTED पर भी सीमित रहता है. साथ ही, अगर उस NavEntry को बैक स्टैक से पॉप किया गया है और वह ऐनिमेशन से बाहर निकलने की प्रोसेस में है, तो यह CREATED पर भी सीमित रहता है. (I03113, b/454045829)

वर्शन 1.0.0-beta01

22 अक्टूबर, 2025

androidx.navigation3:navigation3-*:1.0.0-beta01 रिलीज़ हो गया है. वर्शन 1.0.0-beta01 में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • SceneStrategyScope में अब सिर्फ़ नो-आर्ग्युमेंट पब्लिक कंस्ट्रक्टर है. यह आपके SceneStrategy और अलग से दिखाए गए Scene की जांच करने के लिए सही है. ज़्यादा जटिल इस्तेमाल के उदाहरणों के लिए, कृपया rememberSceneState() का इस्तेमाल करें. (I8440c, b/451679047)

गड़बड़ियां ठीक की गईं

  • SceneStrategy को then के साथ जोड़ने पर, इनफ़िनिट लूप की समस्या ठीक की गई. (Iba3f0, b/450323470)
  • backStack को NavDisplay से स्वैप करने और ऐनिमेशन का इस्तेमाल करने पर, स्क्रीन के फ़्लिकर होने की समस्या को ठीक किया गया है. (Ief7b5, b/450967248)

वर्शन 1.0.0-alpha11

08 अक्टूबर, 2025

androidx.navigation3:navigation3-*:1.0.0-alpha11 रिलीज़ हो गया है. वर्शन 1.0.0-alpha11 में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • SceneStrategy पर calculateScene तरीका अब @Composable नहीं है. इसके बजाय, इस काम को अपने SceneStrategy तरीके (यानी कि rememberMySceneStrategy() तरीके में) के निर्माण में ले जाएं. इससे आपको सही वैल्यू के आधार पर, किसी भी rememberSaveable वैल्यू या मुख्य remember स्टेटमेंट की जीवनकाल तय करने की पूरी अनुमति मिलती है. (If1733, b/448709506)
  • SceneStrategy.calculateScene के लिए onBack पैरामीटर को SceneStrategyScope के नए रिसीवर स्कोप में ले जाया गया है. इससे यह साफ़ तौर पर पता चलता है कि यह एक वैकल्पिक पैरामीटर है. साथ ही, इससे आने वाले समय में Navigation3 की सुविधाओं के लिए एक्सटेंशन पॉइंट उपलब्ध कराया जा सकेगा. (I3aea3, b/448460407)
  • NavDisplay में पास किया गया onBack लैम्डा और आपके SceneStrategy में अब count: Int पैरामीटर नहीं मिलता. इससे यह पता चलता है कि कई एंट्री कब पॉप अप होनी चाहिए. इसके बजाय, अब () -> Unit लैंबडा को एक के बाद एक कई बार कॉल किया जाएगा. ऐसा तब होगा, जब आपके सीन के अनुरोधों में कई एंट्री दिखेंगी. हालांकि, ऐसा बहुत कम होता है. (Idedb5, b/446989346)
  • NavEntryWrapper क्लास को हटाएं और इसकी सुविधा को फ़ाइनल NavEntry क्लास से बदलें. इसमें एक नया सेकंडरी कंस्ट्रक्टर होता है, जो नए कॉन्टेंट के साथ NavEntry लेता है. इससे, नई एंट्री को नए कॉन्टेंट के साथ रैप करने की सुविधा मिलती रहेगी. (I7da2a, b/444447130)
  • navEntryDecorator फ़ंक्शन को हटा दिया गया है. यह फ़ंक्शन, NavEntryDecorator बनाता और दिखाता था. इसे NavEntryDecorator क्लास से बदल दिया गया है. यह क्लास अब सार्वजनिक है और सबक्लासिंग के लिए उपलब्ध है. (If81f8, b/444447434, b/447381176)
  • SavedStateNavEntryDecorator का नाम बदलकर SaveableStateHolderNavEntryDecorator कर दिया गया है, क्योंकि यह SaveableStateHolder के साथ एंट्री को डेकोरेट करता है. डेकोरेटर को फ़ंक्शन से क्लास में भी बदला गया है, क्योंकि यह फ़ंक्शन के तौर पर NavEntryDecorator के लिए फ़ैक्ट्री है. (Ie6013, b/447381176)
  • NavDisplay के बजाय SceneState का इस्तेमाल करने वाले कस्टम डिसप्ले को अब LocalEntriesToRenderInCurrentScene कंपोज़िशन लोकल का इस्तेमाल करने की ज़रूरत नहीं है. यह अब इंटरनल है. (Ic40ef, b/414668196)
  • सार्वजनिक एपीआई से SceneSetupNavEntryDecorator और rememberSceneSetupNavEntryDecorator() को हटा दिया गया है. यह सुविधा अब डिफ़ॉल्ट रूप से शामिल होती है. इसलिए, आपको इसे मैन्युअल तरीके से शामिल करने की ज़रूरत नहीं है. (Ieae42, b/444479133)
  • NavEntry, DialogScene, SinglePaneScene, और SceneState अब सभी में equals लागू होता है. (I96121)
  • सीन इंटरफ़ेस में एक नया मेटाडेटा फ़ील्ड जोड़ा गया है. इसकी मदद से, NavDisplay के लिए सीन से जुड़ा मेटाडेटा अटैच किया जा सकता है. इससे किसी सीन को NavDisplay पर मौजूद मेटाडेटा को बदलने की अनुमति मिलती है. उदाहरण के लिए, ट्रांज़िशन के साथ. (I1fd96, b/443955625)
  • सामान्य टाइप पैरामीटर को हटाकर, rememberNavBackStack सिग्नेचर को आसान बनाएं. अब इस फ़ंक्शन में vararg elements: NavKey का इस्तेमाल किया जा सकता है. (I03e45)
  • NavDisplay के डिफ़ॉल्ट ऐनिमेशन अब सामान्य एपीआई का हिस्सा हैं. इससे उन्हें सभी प्लैटफ़ॉर्म से कॉल किया जा सकता है. (I71af9, b/447147159)
  • EntryProviderBuilder का नाम बदलकर EntryProviderScope कर दिया गया है, ताकि यह सही तरीके से पता चल सके कि क्लास एक Kotlin DSL है, जो NavEntries बनाने का स्कोप देती है. (Ia7465)

गड़बड़ियां ठीक की गईं

  • rememberNavBackStack() अब NavKey के लिए पॉलीमॉर्फ़िक सीरियलाइज़ेशन लागू करता है. इसके लिए, कस्टम SavedStateConfiguration की ज़रूरत होती है. इसे सही स्थिति को वापस लाने के लिए कॉन्फ़िगर किया जाता है. KDoc को अपडेट कर दिया गया है. इससे यह पता चलता है कि सभी NavKey सबटाइप को दिए गए SerializersModule में रजिस्टर करना ज़रूरी है. (I6de37,I782f2, b/446664383)

वर्शन 1.0.0-alpha10

24 सितंबर, 2025

androidx.navigation3:navigation3-*:1.0.0-alpha10 रिलीज़ हो गया है. वर्शन 1.0.0-alpha10 में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • NavDisplay का नया ओवरलोड जोड़ें. यह NavEntry<T> की ऐसी सूची लेता है जिसे rememberDecoratedNavEntries ने सजाया है. (I4025b, b/441940314)
  • DialogScene को नए पैकेज में ट्रांसफ़र कर दिया गया है. (Ia5840)
  • सार्वजनिक एपीआई DecorateNavEntry को हटाएं. इसके बजाय, डेकोरेटर की सूची के साथ NavEntry को रैप करने के लिए rememberDecoratedNavEntries का इस्तेमाल करें. (Id8c09)
  • Navigation3 यूज़र इंटरफ़ेस (यूआई) अब नई डिफ़ॉल्ट transitionSpec प्रॉपर्टी उपलब्ध कराता है. (Ibcabd)
  • सीन मैनेज करने के लिए, एक नया SceneState ऑब्जेक्ट जोड़ा गया है. यह एक नया NavDisplay ओवरलोड भी उपलब्ध कराता है, जो SceneState और NavigationEventState लेता है. (Idfb46, b/444479133)
  • NavDisplay अब आपको Transition और currentState को देखकर, ScenetargetState के आधार पर ट्रांज़िशन को पसंद के मुताबिक बनाने की सुविधा देता है. (I906cc, b/443872322)
  • NavigationEventInfo अब interface के बजाय abstract class है. सभी कस्टम लागू करने की प्रोसेस को क्लास से इनहेरिट करने के लिए अपडेट करें. जैसे, data class MyInfo : NavigationEventInfo(). (I1e59c, b/444734264)
  • navigationevent-compose हैंडलर एपीआई अपडेट कर दिए गए हैं. NavigationEventHandler और NavigationBackHandler (और वैरिएंट) अब एक नए ओवरलोड का इस्तेमाल करते हैं. यह ओवरलोड, ऊपर ले जाए गए NavigationEventStates को स्वीकार करता है. आसान ओवरलोड (currentInfo लेने वाले) को सुरक्षित रखा जाता है. साथ ही, अब वे इस नए स्टेट मॉडल का इस्तेमाल करते हैं. (Ic3251, b/444734264)
  • सभी Scene API को navigation3-ui से navigation3-runtime में ले जाया गया है. इसका मतलब है कि अब ये सुविधाएं, navigation3-runtime के साथ काम करने वाले सभी प्लैटफ़ॉर्म पर उपलब्ध हैं. (I431d0, b/444449993)
  • सजाने के लिए, NavEntry की सूची लेने वाला नया rememberDecoratedNavEntries ओवरलोड जोड़ा गया. इनपुट एंट्री को पहले से ही अन्य एंट्री डेकोरेटर के साथ सजाया जा सकता है. (I5a034, b/444230270)
  • navigation3 वाइल्डकार्ड टाइप पैरामीटर (I02540) हटाएं
  • entryProvider DSL के लिए, सामान्य टाइप को मैनेज करने की सुविधा को बेहतर बनाया गया है. अगर आपने पहले androidx.navigation3.runtime.entry इंपोर्ट किया था, तो अब ऐसा करने की ज़रूरत नहीं है. (I299fc)
  • Android पर, रिफ़्लेक्शन पर आधारित NavBackStackSerializer ओवरलोड को सीमित करें. इससे Android के अलावा अन्य प्लैटफ़ॉर्म पर, रनटाइम के दौरान अपने-आप होने वाले सीरियललाइज़ेशन की प्रोसेस में गड़बड़ियां होने से रोका जा सकता है. इसके लिए, मल्टीप्लैटफ़ॉर्म कोड में SavedStateConfiguration के एक्सप्लिसिट ओवरलोड का इस्तेमाल करना ज़रूरी है. (I73313, b/420443609)
  • NavigationEvent के swipeEdge को @IntDef बनाएं (Icee54, b/443950342)
  • Android के लिए, NavBackStack के सीरियल में बदलने की सुविधा पर पाबंदी लगाएं. इससे Android के अलावा अन्य प्लैटफ़ॉर्म पर रनटाइम में होने वाली गड़बड़ियों को रोका जा सकता है. अलग-अलग प्लैटफ़ॉर्म पर स्थिति को सेव करने के लिए, साफ़ तौर पर SavedStateConfiguration के साथ rememberNavBackStack ओवरलोड का इस्तेमाल करें. (I1e418, b/420443609)

गड़बड़ियां ठीक की गईं

  • नेस्ट किए गए NavDisplay में एक ही चाइल्ड एंट्री होने पर, पीछे जाने पर झलक दिखाने वाले हाथ के जेस्चर के दौरान क्रैश होने की समस्या ठीक की गई. (I2cdc0, b/441933162)

वर्शन 1.0.0-alpha09

10 सितंबर, 2025

androidx.navigation3:navigation3-*:1.0.0-alpha09 रिलीज़ हो गया है. वर्शन 1.0.0-alpha09 में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • DecoratedNavEntryProvider को rememberDecoratedNavEntries से बदल दिया गया है. यह फ़ंक्शन, दिए गए डेकोरेटर (I0fe1c, b/441328236) की सूची से सजाए गए NavEntries बनाता है और उन्हें दिखाता है
  • NavBackStack अब NavKey टाइप के लिए जेनरिक है. इससे ऐप्लिकेशन और लाइब्रेरी, अपने बैक स्टैक के लिए कस्टम कुंजी टाइप तय कर सकते हैं. इसके लिए, उन्हें NavKey का इस्तेमाल करने की ज़रूरत नहीं होती. (I4d190,Iad2f4, b/420443609)
  • NavBackStack अब @kotlinx.serialization.Serializable हो गया है. इससे, प्रोसेस के बंद होने और कॉन्फ़िगरेशन में बदलाव होने पर भी, नेविगेशन की स्थिति को सेव और वापस लाया जा सकता है. इसके लिए, आपको अतिरिक्त बॉयलरप्लेट कोड लिखने की ज़रूरत नहीं होती. (I2c3cf, b/420443609)
  • RememberNavBackStack को commonMain में ले जाया गया है, ताकि यह सभी प्लैटफ़ॉर्म टारगेट पर उपलब्ध हो. (Id69e7, b/420443609)

गड़बड़ियां ठीक की गईं

  • NavDisplay अब हर NavEntry को सही Lifecycle.State पर ले जाता है. (I30aac, b/440145700)
  • उस समस्या को ठीक किया गया है जिसमें NavDisplay, NavigationEvent लाइब्रेरी के LocalNavigationEventDispatcherOwner के ज़रिए सेट किए गए किसी भी नेस्ट किए गए NavigationEventDispatcherOwner को अनदेखा कर देता था. (I6224a)

डिपेंडेंसी में बदलाव

वर्शन 1.0.0-alpha08

27 अगस्त, 2025

androidx.navigation3:navigation3-*:1.0.0-alpha08 रिलीज़ हो गया है. वर्शन 1.0.0-alpha08 में ये बदलाव शामिल हैं.

नई सुविधाएं

  • Navigation3 Runtime आर्टफ़ैक्ट में नए Kotlin MultiPlatform (केएमपी) टारगेट जोड़े गए. Navigation3 Runtime अब इन प्लैटफ़ॉर्म पर काम करता है: जेवीएम (Android और डेस्कटॉप), Native (Linux, iOS, watchOS, macOS, MinGW), और Web (JavaScript, WasmJS). (I55078, b/424410398, b/419294028, b/419046226). ध्यान दें: इससे Navigation3 UI आर्टफ़ैक्ट के लिए केएमपी टारगेट नहीं मिलते. अन्य प्लैटफ़ॉर्म पर, आपको अपने हिसाब से NavDisplay लागू करना होगा. अगर आपको इस सुविधा को इस्तेमाल करने में मदद चाहिए, तो कृपया Jetbrains की समस्या यहां देखें और ज़्यादा सहायता पाने के लिए, इसकी प्रोग्रेस को ट्रैक करें.
  • NavDisplayInfo ऑब्जेक्ट अब सार्वजनिक है. इसका इस्तेमाल, NavDisplay से दिखने वाली एंट्री की सूची को वापस पाने के लिए किया जा सकता है. (Ibc91f)

एपीआई में हुए बदलाव

  • स्टेट को पहले जैसा करने के लिए, rememberNavBackStack के साथ इस्तेमाल किया जाने वाला नया NavBackStackSerializer जोड़ा गया है. rememberNavBackStack() अब एक SavedStateConfiguration भी लेता है. इसका इस्तेमाल, अपने कॉन्फ़िगरेशन के लिए किया जा सकता है. (I2f4d2, I4cd58, b/420443609)

गड़बड़ियां ठीक की गईं

  • उस समस्या को ठीक कर दिया गया है जिसकी वजह से नेविगेट करने पर, लाइफ़साइकल के गलत इवेंट ट्रिगर होते थे. (I8bf6d, b/425901162, b/434109022)

मौजूदा समस्याएं

  • I8bf6d ने एक बग पेश किया था. इसकी वजह से, लाइफ़साइकल को अलग-अलग एंट्री के बजाय सीन पर आधारित किया गया था. इससे उन सभी मामलों में लाइफ़साइकल काम नहीं कर रहा था जहां NavEntry को दिया गया key, String नहीं है या आपके NavEntry ने contentKey को बदला नहीं है और इसे key के बराबर सेट नहीं किया है. ध्यान दें कि ऐसा करने से, आपकी कुंजी को Bundle में सेव किया जा सकता है. इस समस्या को अगले रिलीज़ के लिए ठीक कर दिया गया है. (b/440145700)

वर्शन 1.0.0-alpha07

13 अगस्त, 2025

androidx.navigation3:navigation3-*:1.0.0-alpha07 रिलीज़ हो गया है. वर्शन 1.0.0-alpha07 में ये बदलाव शामिल हैं.

MinSdk अपडेट

एपीआई में हुए बदलाव

  • SavedStateNavEntryDecorator अब स्टेटस को सेव और वापस लाने के लिए, SaveableStateProvider में पहले से मौजूद SaveableStateRegistry का इस्तेमाल करता है. (If8d9a)
  • predictivePopTransitionSpec को अब स्वाइप एज को पैरामीटर के तौर पर दिया जाता है. इससे, ट्रांज़िशन को अपनी पसंद के मुताबिक बनाया जा सकता है. यह इस बात पर निर्भर करता है कि उपयोगकर्ता ने अनुमानित बैक जेस्चर किस एज से शुरू किया था. (I753a8)

गड़बड़ियां ठीक की गईं

  • उस समस्या को ठीक कर दिया गया है जिसकी वजह से कस्टम सीन को बार-बार रीफ़्रेश करना पड़ता था. ऐसा इसलिए होता था, क्योंकि सबसे हाल ही के सीन को याद नहीं रखा जाता था. (I7ba84, b/418153031)

डिपेंडेंसी अपडेट करना

वर्शन 1.0.0-alpha06

30 जुलाई, 2025

androidx.navigation3:navigation3-*:1.0.0-alpha06 रिलीज़ हो गया है. वर्शन 1.0.0-alpha06 में ये बदलाव शामिल हैं.

डिपेंडेंसी अपडेट

वर्शन 1.0.0-alpha05

2 जुलाई, 2025

androidx.navigation3:navigation3-*:1.0.0-alpha05 रिलीज़ हो गया है. वर्शन 1.0.0-alpha05 में ये बदलाव शामिल हैं.

व्यवहार में बदलाव

  • NavEntry की स्थिति अब NavDisplay को पास किए गए डेकोरेटर की मौजूदा सूची पर आधारित है. इसका मतलब है कि अगर एक से ज़्यादा पिछली गतिविधियां हैं, तो पिछली गतिविधियों में NavEntry की स्थिति बनाए रखने के लिए, डेकोरेटर को पिछली गतिविधियों के साथ स्वैप किया जाना चाहिए. ऐसा न करने पर, राज्यों को इस तरह से हटाया जाएगा जैसे एंट्री को स्वैप करने के बजाय पॉप किया गया हो. (I7a759, b/428033667)

वर्शन 1.0.0-alpha04

18 जून, 2025

androidx.navigation3:navigation3-*:1.0.0-alpha04 रिलीज़ हो गया है. वर्शन 1.0.0-alpha04 में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • NavEntry.content को अब निजी के तौर पर सेट कर दिया गया है. NavEntry कॉन्टेंट को चालू करने के लिए, नए NavEntry.Content() एपीआई को कॉल करें. इसके लिए, अब key पैरामीटर की ज़रूरत नहीं होती. (Icd0fd, b/420991203)
  • NavEntry.key अब एक निजी फ़ील्ड है. NavEntry और इससे जुड़ी स्थितियों की पहचान, नए contentKey फ़ील्ड से की जानी चाहिए. यह फ़ील्ड, नए contentKeyFactory लैम्ब्डा से जनरेट होता है. साथ ही, यह NavEntry.key से जनरेट किए गए सेव किए जा सकने वाले हैश (I81a6c, b/422001357, b/420991203 I2d7d4, b/420991203, b/422841812) पर डिफ़ॉल्ट रूप से सेट होता है

डिपेंडेंसी में बदलाव

  • Navigation3 अब नए androidx.navigationevent.compose आर्टफ़ैक्ट पर निर्भर करता है.

वर्शन 1.0.0-alpha03

4 जून, 2025

androidx.navigation3:navigation3-*:1.0.0-alpha03 रिलीज़ हो गया है. वर्शन 1.0.0-alpha03 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • Navigation3 अब उन backStacks के लिए डेकोरेटर की स्थितियां नहीं मिटाएगा जिन्हें स्वैप करके, किसी दूसरे backStack इंस्टेंस से बदल दिया गया है. (I28a42, b/415076044)

वर्शन 1.0.0-alpha02

23 मई, 2025

androidx.navigation3:navigation3-*:1.0.0-alpha02 रिलीज़ हो गया है. वर्शन 1.0.0-alpha02 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • SavedStateNavEntryDecorator से जुड़ी समस्या को ठीक किया गया है. इस वजह से, एक जैसी प्रॉपर्टी वैल्यू वाली अलग-अलग डेटा क्लास के बीच टकराव हो रहा था. (b/418070648, Iff4775)
  • क्लास के मौजूद न होने की समस्या को ठीक किया गया है. इस वजह से, साफ़ तौर पर डिपेंडेंसी तय किए बिना ऐप्लिकेशन चलाने पर क्रैश हो जाता था. (b/419049149, I4b4ed)

वर्शन 1.0.0-alpha01

20 मई, 2025

androidx.navigation3:navigation3-*:1.0.0-alpha01 रिलीज़ हो गया है. वर्शन 1.0.0-alpha01 में ये बदलाव शामिल हैं.

नई सुविधाएं

Navigation3 एक नई नेविगेशन लाइब्रेरी है. इसे खास तौर पर, Jetpack Compose के ऐप्लिकेशन में नेविगेशन को मैनेज करने के लिए बनाया गया है. androidx.navigation3.runtime आर्टफ़ैक्ट, बिल्डिंग ब्लॉक उपलब्ध कराता है. वहीं, androidx.navigation3.ui आर्टफ़ैक्ट, NavDisplay एपीआई के ज़रिए यूज़र इंटरफ़ेस (यूआई) लेयर उपलब्ध कराता है. डेवलपर, NavDisplay कंपोज़ेबल फ़ंक्शन को सीधे तौर पर अपनी स्थिति की जानकारी दे सकते हैं. इससे डेवलपर की स्थिति में हुए बदलावों के आधार पर, कॉन्टेंट में बदलाव होता है.

@Serialiable object Home : NavKey
@Serialiable object Chat : NavKey

val backStack = rememberNavBackStack(Home)

NavDisplay(backStack, entryProvider = entryProvider {
  entry<Home> {
    Column {
      Text(“Home”)
      Button(onClick = { backStack.add(Chat) } ) {
        Text(“Go to Chat”)
      } 
    }
  }
  entry<Chat> { /* My Composable Content */ }
})

ज़्यादा जानकारी के लिए, Navigation3 गाइड देखें.