<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: divyesh vekariya</title>
    <description>The latest articles on DEV Community by divyesh vekariya (@divyesh_vekariya).</description>
    <link>https://dev.to/divyesh_vekariya</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2230009%2Fb6487413-d056-4763-9a33-dd38e24cacf2.png</url>
      <title>DEV Community: divyesh vekariya</title>
      <link>https://dev.to/divyesh_vekariya</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/divyesh_vekariya"/>
    <language>en</language>
    <item>
      <title>Are you a Senior iOS Developer who is seeking new opportunities ?</title>
      <dc:creator>divyesh vekariya</dc:creator>
      <pubDate>Mon, 30 Mar 2026 13:45:03 +0000</pubDate>
      <link>https://dev.to/divyesh_vekariya/complete-guide-for-senior-ios-developer-interview-2026-27ih</link>
      <guid>https://dev.to/divyesh_vekariya/complete-guide-for-senior-ios-developer-interview-2026-27ih</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/divyesh_vekariya/the-complete-senior-ios-developer-interview-guide-2026-227a" class="crayons-story__hidden-navigation-link"&gt;The Complete Senior iOS Developer Interview Guide (2026)&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/divyesh_vekariya" class="crayons-avatar  crayons-avatar--l  "&gt;
            &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2230009%2Fb6487413-d056-4763-9a33-dd38e24cacf2.png" alt="divyesh_vekariya profile" class="crayons-avatar__image" width="600" height="600"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/divyesh_vekariya" class="crayons-story__secondary fw-medium m:hidden"&gt;
              divyesh vekariya
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                divyesh vekariya
                
              
              &lt;div id="story-author-preview-content-3419374" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/divyesh_vekariya" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&gt;
                        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2230009%2Fb6487413-d056-4763-9a33-dd38e24cacf2.png" class="crayons-avatar__image" alt="" width="600" height="600"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;divyesh vekariya&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/divyesh_vekariya/the-complete-senior-ios-developer-interview-guide-2026-227a" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Mar 28&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/divyesh_vekariya/the-complete-senior-ios-developer-interview-guide-2026-227a" id="article-link-3419374"&gt;
          The Complete Senior iOS Developer Interview Guide (2026)
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ios"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ios&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/swift"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;swift&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/interview"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;interview&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/mobile"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;mobile&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/divyesh_vekariya/the-complete-senior-ios-developer-interview-guide-2026-227a" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/exploding-head-daceb38d627e6ae9b730f36a1e390fca556a4289d5a41abb2c35068ad3e2c4b5.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;6&lt;span class="hidden s:inline"&gt; reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/divyesh_vekariya/the-complete-senior-ios-developer-interview-guide-2026-227a#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              &lt;span class="hidden s:inline"&gt;Add Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            1 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
      <category>ios</category>
      <category>swift</category>
      <category>interview</category>
      <category>mobile</category>
    </item>
    <item>
      <title>[Boost]</title>
      <dc:creator>divyesh vekariya</dc:creator>
      <pubDate>Mon, 30 Mar 2026 13:43:48 +0000</pubDate>
      <link>https://dev.to/divyesh_vekariya/-1a3m</link>
      <guid>https://dev.to/divyesh_vekariya/-1a3m</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/divyesh_vekariya/the-complete-senior-ios-developer-interview-guide-2026-227a" class="crayons-story__hidden-navigation-link"&gt;The Complete Senior iOS Developer Interview Guide (2026)&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/divyesh_vekariya" class="crayons-avatar  crayons-avatar--l  "&gt;
            &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2230009%2Fb6487413-d056-4763-9a33-dd38e24cacf2.png" alt="divyesh_vekariya profile" class="crayons-avatar__image" width="600" height="600"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/divyesh_vekariya" class="crayons-story__secondary fw-medium m:hidden"&gt;
              divyesh vekariya
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                divyesh vekariya
                
              
              &lt;div id="story-author-preview-content-3419374" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/divyesh_vekariya" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&gt;
                        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2230009%2Fb6487413-d056-4763-9a33-dd38e24cacf2.png" class="crayons-avatar__image" alt="" width="600" height="600"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;divyesh vekariya&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/divyesh_vekariya/the-complete-senior-ios-developer-interview-guide-2026-227a" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Mar 28&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/divyesh_vekariya/the-complete-senior-ios-developer-interview-guide-2026-227a" id="article-link-3419374"&gt;
          The Complete Senior iOS Developer Interview Guide (2026)
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ios"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ios&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/swift"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;swift&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/interview"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;interview&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/mobile"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;mobile&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/divyesh_vekariya/the-complete-senior-ios-developer-interview-guide-2026-227a" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/exploding-head-daceb38d627e6ae9b730f36a1e390fca556a4289d5a41abb2c35068ad3e2c4b5.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;6&lt;span class="hidden s:inline"&gt; reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/divyesh_vekariya/the-complete-senior-ios-developer-interview-guide-2026-227a#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              &lt;span class="hidden s:inline"&gt;Add Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            1 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
      <category>ios</category>
      <category>swift</category>
      <category>interview</category>
      <category>mobile</category>
    </item>
    <item>
      <title>The Complete Senior iOS Developer Interview Guide (2026)</title>
      <dc:creator>divyesh vekariya</dc:creator>
      <pubDate>Sat, 28 Mar 2026 08:35:39 +0000</pubDate>
      <link>https://dev.to/divyesh_vekariya/the-complete-senior-ios-developer-interview-guide-2026-227a</link>
      <guid>https://dev.to/divyesh_vekariya/the-complete-senior-ios-developer-interview-guide-2026-227a</guid>
      <description>&lt;p&gt;After years of building iOS apps and participating in interview processes, I realized something important:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Senior interviews aren’t about memorizing answers. They’re about how you think.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Most developers prepare by revising concepts, APIs, and common questions. That’s useful—but it’s not enough at the senior level.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What interviewers really look for is:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Your ability to explain &lt;em&gt;why&lt;/em&gt; you made certain decisions&lt;/li&gt;
&lt;li&gt;How you evaluate trade-offs in architecture and design&lt;/li&gt;
&lt;li&gt;Whether you can identify edge cases and hidden pitfalls&lt;/li&gt;
&lt;li&gt;How clearly you communicate complex ideas&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is what separates a senior engineer from a mid-level one.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What’s inside:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Real-world interview questions&lt;/li&gt;
&lt;li&gt;Deep explanations (not just definitions)&lt;/li&gt;
&lt;li&gt;Common mistakes and how to avoid them&lt;/li&gt;
&lt;li&gt;System-level thinking and decision-making&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;💡 &lt;strong&gt;Disclaimer:&lt;/strong&gt; This is based on my personal experience and is not affiliated with any company.&lt;/p&gt;

&lt;p&gt;If you're preparing for senior iOS roles, I hope this helps you think more clearly and approach interviews with confidence.&lt;/p&gt;

&lt;p&gt;Would love to hear your thoughts—what do you think is the hardest part of senior-level interviews?&lt;/p&gt;

&lt;p&gt;👉 &lt;strong&gt;Read the full guide here:&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://medium.com/@dkvekariya/the-complete-senior-ios-developer-interview-guide-2026-3ec09ab25987" rel="noopener noreferrer"&gt;https://medium.com/@dkvekariya/the-complete-senior-ios-developer-interview-guide-2026-3ec09ab25987&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  #ios #swift #devcommunity #programming #career
&lt;/h3&gt;

</description>
      <category>ios</category>
      <category>swift</category>
      <category>interview</category>
      <category>mobile</category>
    </item>
    <item>
      <title>Building QR Code Generator and Scanner with SwiftUI</title>
      <dc:creator>divyesh vekariya</dc:creator>
      <pubDate>Mon, 23 Feb 2026 14:45:20 +0000</pubDate>
      <link>https://dev.to/divyesh_vekariya/-1bg6</link>
      <guid>https://dev.to/divyesh_vekariya/-1bg6</guid>
      <description>&lt;div class="ltag__link"&gt;
  &lt;a href="/divyesh_vekariya" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2230009%2Fb6487413-d056-4763-9a33-dd38e24cacf2.png" alt="divyesh_vekariya"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="https://dev.to/divyesh_vekariya/mastering-qr-code-generation-scanning-in-swiftui-4980" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;Mastering QR Code Generation &amp;amp; Scanning in SwiftUI&lt;/h2&gt;
      &lt;h3&gt;divyesh vekariya ・ Feb 23&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#swift&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#ios&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#swiftui&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#mobile&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


</description>
      <category>swift</category>
      <category>ios</category>
      <category>swiftui</category>
      <category>mobile</category>
    </item>
    <item>
      <title>Mastering QR Code Generation &amp; Scanning in SwiftUI</title>
      <dc:creator>divyesh vekariya</dc:creator>
      <pubDate>Mon, 23 Feb 2026 14:44:36 +0000</pubDate>
      <link>https://dev.to/divyesh_vekariya/mastering-qr-code-generation-scanning-in-swiftui-4980</link>
      <guid>https://dev.to/divyesh_vekariya/mastering-qr-code-generation-scanning-in-swiftui-4980</guid>
      <description>&lt;h3&gt;
  
  
  🔲 QR codes look simple. But they’re powerful.
&lt;/h3&gt;

&lt;p&gt;Most apps treat QR as just another feature.&lt;/p&gt;

&lt;p&gt;I recently built a QR Code Generator &amp;amp; Scanner in SwiftUI — and it reminded me that QR is not a UI component…&lt;/p&gt;

&lt;p&gt;It’s an offline data bridge.&lt;/p&gt;

&lt;p&gt;Here’s what’s actually happening:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Text → Encoded using Core Image → Rendered as QR → Scanned via AVFoundation → Decoded instantly → Triggers real app behavior&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That means QR can power:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Offline authentication&lt;/li&gt;
&lt;li&gt;Secure device pairing&lt;/li&gt;
&lt;li&gt;Payment flows&lt;/li&gt;
&lt;li&gt;Deep linking&lt;/li&gt;
&lt;li&gt;Data sharing without internet&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw5982esk6zo7dq6ue45m.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw5982esk6zo7dq6ue45m.jpeg" alt="QRCode Generator Screen Image" width="300" height="652"&gt;&lt;/a&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7a121fa2v8fmjvlmd63t.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7a121fa2v8fmjvlmd63t.jpeg" alt="QRCode Scanner Scree Image" width="300" height="650"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The most interesting part?&lt;br&gt;
iOS does the heavy lifting — you just need to structure the pipeline correctly.&lt;/p&gt;

&lt;p&gt;*&lt;em&gt;I wrote a detailed breakdown of the full generation &amp;amp; scanning architecture here *&lt;/em&gt;👇&lt;br&gt;
&lt;a href="https://medium.com/@dkvekariya/ead7d23b0de1" rel="noopener noreferrer"&gt;Mastering QR Code Generation &amp;amp; Scanning in SwiftUI&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you're building QR-based features (payments, login, pairing), I’d love to exchange ideas.&lt;/p&gt;

&lt;h1&gt;
  
  
  iOSDevelopment #SwiftUI #AVFoundation #CoreImage #SoftwareEngineering #MobileDevelopment
&lt;/h1&gt;

</description>
      <category>swift</category>
      <category>ios</category>
      <category>swiftui</category>
      <category>mobile</category>
    </item>
    <item>
      <title>Is Native iOS Development with Swift Still Worth It in 2025?</title>
      <dc:creator>divyesh vekariya</dc:creator>
      <pubDate>Wed, 15 Oct 2025 14:30:00 +0000</pubDate>
      <link>https://dev.to/divyesh_vekariya/is-native-ios-development-with-swift-still-worth-it-in-2025-3b0c</link>
      <guid>https://dev.to/divyesh_vekariya/is-native-ios-development-with-swift-still-worth-it-in-2025-3b0c</guid>
      <description>&lt;p&gt;Focused on creating a high‑quality iOS app and want the best performance and tightest integration? I came across this article: &lt;a href="https://nevinainfotech25.medium.com/swift-vs-kotlin-vs-flutter-in-app-development-what-to-choose-411cd2c81e10" rel="noopener noreferrer"&gt;Swift vs. Kotlin vs. Flutter in App Development: What to Choose? &lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After reading, I’m convinced that Swift is still the safest bet for a truly polished iOS app. Key reasons:&lt;/p&gt;

&lt;p&gt;Maximum performance and responsiveness on iOS&lt;/p&gt;

&lt;p&gt;Full access to latest Apple APIs/features&lt;/p&gt;

&lt;p&gt;Strong support and stability from Apple&lt;/p&gt;

&lt;p&gt;But is going native (Swift) justifiable when cross‑platform tools are so mature now? Would you pick Swift over Flutter (or Kotlin) if your app is iOS‑only?&lt;/p&gt;

&lt;p&gt;What’s your take — is native iOS via Swift still the gold standard in 2025?&lt;/p&gt;

&lt;p&gt;Maximum performance and responsiveness on iOS&lt;/p&gt;

&lt;p&gt;Full access to latest Apple APIs/features&lt;/p&gt;

&lt;p&gt;Strong support and stability from Apple&lt;/p&gt;

&lt;p&gt;But is going native (Swift) justifiable when cross‑platform tools are so mature now? Would you pick Swift over Flutter (or Kotlin) if your app is iOS‑only?&lt;/p&gt;

&lt;p&gt;What’s your take — is native iOS via Swift still the gold standard in 2025?&lt;/p&gt;

</description>
      <category>swift</category>
      <category>ios</category>
      <category>flutter</category>
      <category>android</category>
    </item>
    <item>
      <title>Is Flutter Still the Best Choice in 2025?</title>
      <dc:creator>divyesh vekariya</dc:creator>
      <pubDate>Sat, 11 Oct 2025 05:52:27 +0000</pubDate>
      <link>https://dev.to/divyesh_vekariya/is-flutter-still-the-best-choice-in-2025-566c</link>
      <guid>https://dev.to/divyesh_vekariya/is-flutter-still-the-best-choice-in-2025-566c</guid>
      <description>&lt;p&gt;Thinking of building a mobile app for both iOS and Android?&lt;br&gt;
Check out this article: Swift vs. Kotlin vs. Flutter in App Development: What to Choose&lt;/p&gt;


&lt;div class="ltag__link"&gt;
  &lt;a href="https://nevinainfotech25.medium.com/swift-vs-kotlin-vs-flutter-in-app-development-what-to-choose-411cd2c81e10" class="ltag__link__link" rel="noopener noreferrer"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmiro.medium.com%2Fv2%2Fresize%3Afill%3A64%3A64%2F1%2A2E5A2FNklI03BSuQ3zyGnA.jpeg" alt="Rahim Ladhani"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="https://nevinainfotech25.medium.com/swift-vs-kotlin-vs-flutter-in-app-development-what-to-choose-411cd2c81e10" class="ltag__link__link" rel="noopener noreferrer"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;Swift vs. Kotlin vs. Flutter in App Development: What to Choose? | by Rahim Ladhani | Medium&lt;/h2&gt;
      &lt;h3&gt;Rahim Ladhani ・ &lt;time&gt;May 28, 2025&lt;/time&gt; ・ 
      &lt;div class="ltag__link__servicename"&gt;
        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fmedium-f709f79cf29704f9f4c2a83f950b2964e95007a3e311b77f686915c71574fef2.svg" alt="Medium Logo"&gt;
        nevinainfotech25.Medium
      &lt;/div&gt;
    &lt;/h3&gt;
&lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


&lt;p&gt;After reading it, I’m leaning heavily toward Flutter.&lt;br&gt;
Why? Because:&lt;/p&gt;

&lt;p&gt;One single codebase saves time and effort&lt;/p&gt;

&lt;p&gt;Strong UI capabilities and flexibility&lt;/p&gt;

&lt;p&gt;Good balance between cost and speed to market&lt;/p&gt;

&lt;p&gt;Performance almost like native(For simple app without core api)&lt;/p&gt;

&lt;p&gt;But is Flutter really good enough compared to native iOS/Android now?&lt;br&gt;
Or are there critical trade‑offs (performance, native API access) that make it risky for some projects?&lt;/p&gt;

&lt;p&gt;What do you think — for a cross‑platform mobile app in 2025, would you choose Flutter, or go native instead?&lt;/p&gt;

</description>
      <category>dart</category>
      <category>flutter</category>
      <category>kotlin</category>
      <category>swift</category>
    </item>
    <item>
      <title>Latest iOS 26 TextKit API's</title>
      <dc:creator>divyesh vekariya</dc:creator>
      <pubDate>Mon, 06 Oct 2025 06:26:14 +0000</pubDate>
      <link>https://dev.to/divyesh_vekariya/-1lfg</link>
      <guid>https://dev.to/divyesh_vekariya/-1lfg</guid>
      <description>&lt;div class="ltag__link"&gt;
  &lt;a href="/divyesh_vekariya" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2230009%2Fb6487413-d056-4763-9a33-dd38e24cacf2.png" alt="divyesh_vekariya"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="https://dev.to/divyesh_vekariya/how-to-build-rich-text-editor-in-swiftui-33kd" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;How to Build Rich Text Editor in SwiftUI&lt;/h2&gt;
      &lt;h3&gt;divyesh vekariya ・ Oct 6&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#swiftui&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#swift&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#ios&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#development&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


</description>
      <category>swiftui</category>
      <category>swift</category>
      <category>ios</category>
      <category>development</category>
    </item>
    <item>
      <title>How to Build Rich Text Editor in SwiftUI</title>
      <dc:creator>divyesh vekariya</dc:creator>
      <pubDate>Mon, 06 Oct 2025 06:23:14 +0000</pubDate>
      <link>https://dev.to/divyesh_vekariya/how-to-build-rich-text-editor-in-swiftui-33kd</link>
      <guid>https://dev.to/divyesh_vekariya/how-to-build-rich-text-editor-in-swiftui-33kd</guid>
      <description>&lt;p&gt;&lt;strong&gt;Building a Rich Text Editor in SwiftUI&lt;/strong&gt; (with iOS 26 APIs)&lt;/p&gt;

&lt;p&gt;I am spending weekends exploring new iOS features — and this time, I went deep into the latest SwiftUI text APIs in &lt;strong&gt;iOS 26&lt;/strong&gt;. The goal? To build a fully native Rich Text Editor — no UIKit, no hacks, just clean SwiftUI.&lt;/p&gt;

&lt;p&gt;Apple’s new text stack has evolved a lot — with &lt;code&gt;AttributedString&lt;/code&gt;, &lt;code&gt;AttributedTextSelection&lt;/code&gt;, and &lt;code&gt;transformAttributes(in:)&lt;/code&gt;, it’s finally possible to manage styles like bold, italic, and underline directly in SwiftUI while keeping everything performant and elegant.&lt;/p&gt;

&lt;p&gt;In my full article, I dive into how to:&lt;br&gt;
 ✅ Build toolbar actions for bold, italic, underline&lt;br&gt;
 ✅ Keep toolbar state synced with selection&lt;br&gt;
 ✅ Handle serialization for saving styled text&lt;/p&gt;

&lt;p&gt;It’s amazing how much cleaner things have become with the new APIs — definitely one of my favorite updates in iOS 26.&lt;/p&gt;

&lt;p&gt;Check out the full write-up here: &lt;a href="https://medium.com/@dkvekariya/how-to-build-rich-text-editor-in-swiftui-f09a39d2dce9" rel="noopener noreferrer"&gt;https://medium.com/@dkvekariya/how-to-build-rich-text-editor-in-swiftui-f09a39d2dce9&lt;/a&gt;&lt;/p&gt;

</description>
      <category>swiftui</category>
      <category>swift</category>
      <category>ios</category>
      <category>development</category>
    </item>
    <item>
      <title>Free GraphQL APIs You Can Use Today</title>
      <dc:creator>divyesh vekariya</dc:creator>
      <pubDate>Thu, 08 May 2025 05:55:07 +0000</pubDate>
      <link>https://dev.to/divyesh_vekariya/free-graphql-apis-you-can-use-today-21c9</link>
      <guid>https://dev.to/divyesh_vekariya/free-graphql-apis-you-can-use-today-21c9</guid>
      <description>&lt;p&gt;Whether you're building a demo, running a workshop, or just learning how GraphQL works, it's always easier with real examples. While Apollo Server makes spinning up your own API smooth, sometimes you just want something ready to go.&lt;/p&gt;

&lt;p&gt;Good news: there are several public GraphQL APIs you can use for free. Here are eight of them, complete with sample queries to get you started.&lt;/p&gt;




&lt;h2&gt;
  
  
  1. SpaceX API
&lt;/h2&gt;

&lt;p&gt;Get information about past launches, rockets, and more.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example Query:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight graphql"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="n"&gt;launchesPast&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;limit&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="n"&gt;mission_name&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="n"&gt;launch_date_local&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="n"&gt;launch_site&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="n"&gt;site_name_long&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="n"&gt;links&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="n"&gt;article_link&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="n"&gt;video_link&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="n"&gt;rocket&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="n"&gt;rocket_name&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://studio.apollographql.com/public/SpaceX-pxxbxen" rel="noopener noreferrer"&gt;Try it here&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  2. SWAPI (Star Wars API)
&lt;/h2&gt;

&lt;p&gt;For Star Wars fans. Great for showing how GraphQL handles nested relationships.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example Query:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight graphql"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="n"&gt;allFilms&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="n"&gt;films&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="n"&gt;title&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://studio.apollographql.com/public/star-wars-swapi/variant/current/home" rel="noopener noreferrer"&gt;Try it here&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  3. Rick and Morty API
&lt;/h2&gt;

&lt;p&gt;Fetch characters, episodes, and locations from the Rick and Morty universe.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example Query:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight graphql"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="n"&gt;characters&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;page&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;filter&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"rick"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;})&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="n"&gt;info&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="n"&gt;count&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="n"&gt;results&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://studio.apollographql.com/public/rick-and-morty-a3b90u/variant/current/home" rel="noopener noreferrer"&gt;Try it here&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  4. Countries API
&lt;/h2&gt;

&lt;p&gt;Get info on country names, codes, and emoji.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example Query:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight graphql"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="n"&gt;countries&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="n"&gt;code&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="n"&gt;emoji&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://studio.apollographql.com/public/countries/variant/current/home" rel="noopener noreferrer"&gt;Try it here&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  5. PokeAPI (GraphQL Wrapper)
&lt;/h2&gt;

&lt;p&gt;All the data needed for a Pokédex. Rate-limited and free for non-commercial use.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example Query:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight graphql"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="n"&gt;gen1_species&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;pokemon_v2_pokemonspecies&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="n"&gt;where&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;pokemon_v2_generation&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;_eq&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"generation-i"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="n"&gt;order_by&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;asc&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://studio.apollographql.com/public/poke-gql/variant/current/home" rel="noopener noreferrer"&gt;Try it here&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  6. DexAPI
&lt;/h2&gt;

&lt;p&gt;Another Pokémon API, fast and great for quick queries. Still in early development.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example Query:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight graphql"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="n"&gt;allPokemon&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://studio.apollographql.com/sandbox/explorer" rel="noopener noreferrer"&gt;Try it here&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  7. Anilist API
&lt;/h2&gt;

&lt;p&gt;Access thousands of anime titles. Free for non-commercial use with generous rate limits.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example Query:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight graphql"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="n"&gt;Page&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="n"&gt;media&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="n"&gt;siteUrl&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="n"&gt;title&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="n"&gt;english&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="n"&gt;native&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="n"&gt;description&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://studio.apollographql.com/sandbox/explorer" rel="noopener noreferrer"&gt;Try it here&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  8. GitHub API
&lt;/h2&gt;

&lt;p&gt;A robust API perfect for real-world GraphQL exploration. Supports queries and mutations.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Note: You’ll need a personal access token and must add an Authorization header in Apollo Explorer.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Example Query:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight graphql"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="n"&gt;viewer&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="n"&gt;login&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="n"&gt;repositories&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;last&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="n"&gt;nodes&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://studio.apollographql.com/public/github/variant/current/home" rel="noopener noreferrer"&gt;Check the docs&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;These public APIs are perfect for practicing GraphQL without setup headaches. Whether you're exploring schema design or teaching a class, these options have you covered.&lt;/p&gt;

&lt;p&gt;Happy Coding...&lt;/p&gt;

</description>
      <category>graphql</category>
      <category>database</category>
      <category>networking</category>
      <category>mobile</category>
    </item>
    <item>
      <title>iOS 19 SDK Developer Update: Prepare for UIApplicationDelegate Deprecations</title>
      <dc:creator>divyesh vekariya</dc:creator>
      <pubDate>Mon, 28 Apr 2025 05:06:01 +0000</pubDate>
      <link>https://dev.to/divyesh_vekariya/ios-19-sdk-developer-update-prepare-for-uiapplicationdelegate-deprecations-e4i</link>
      <guid>https://dev.to/divyesh_vekariya/ios-19-sdk-developer-update-prepare-for-uiapplicationdelegate-deprecations-e4i</guid>
      <description>&lt;p&gt;Dear iOS Developers,&lt;/p&gt;

&lt;p&gt;Recent WebKit commits signal that Apple is planning to deprecate several legacy &lt;code&gt;UIApplicationDelegate&lt;/code&gt; methods in the iOS 19 SDK, expected to be unveiled at WWDC 2025. This move continues Apple’s transition, started with iOS 13, toward &lt;code&gt;UISceneDelegate&lt;/code&gt; for modern app lifecycle management. Below, we outline the changes, their implications, and steps to ensure your apps remain future-proof.&lt;/p&gt;

&lt;h2&gt;
  
  
  Affected APIs
&lt;/h2&gt;

&lt;p&gt;The following &lt;code&gt;UIApplicationDelegate&lt;/code&gt; methods are slated for deprecation in the iOS 19 SDK:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;application(_:open:options:)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;applicationWillResignActive(_:)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;applicationDidEnterBackground(_:)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;applicationWillEnterForeground(_:)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;applicationDidBecomeActive(_:)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;applicationWillTerminate(_:)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These methods have been central to managing app lifecycle events, but Apple is now favoring &lt;code&gt;UISceneDelegate&lt;/code&gt; equivalents to support multi-window and scene-based architectures introduced in iOS 13.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Does Deprecation Mean?
&lt;/h2&gt;

&lt;p&gt;Deprecation is Apple’s way of signaling that these APIs are no longer recommended for use. While deprecated APIs typically remain functional for several iOS versions, they may not receive updates, could exhibit compatibility issues, and will eventually be removed. For reference, APIs like &lt;code&gt;UIWebView&lt;/code&gt; (deprecated in iOS 12) lingered for years but faced App Store submission restrictions by 2020.&lt;a href="https://developer.apple.com/forums/thread/122114" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The deprecation of these &lt;code&gt;UIApplicationDelegate&lt;/code&gt; methods doesn’t mean immediate removal in iOS 19, but it’s a clear directive to migrate to &lt;code&gt;UISceneDelegate&lt;/code&gt; to ensure long-term compatibility.&lt;a href="https://lapcatsoftware.com/articles/2025/4/5.html" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why the Shift to UISceneDelegate?
&lt;/h2&gt;

&lt;p&gt;Since iOS 13, Apple has encouraged developers to adopt &lt;code&gt;UISceneDelegate&lt;/code&gt; for lifecycle management, offering:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Multi-Window Support&lt;/strong&gt;: &lt;code&gt;UISceneDelegate&lt;/code&gt; enables apps to manage multiple scenes, crucial for iPadOS and visionOS.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Granular Lifecycle Control&lt;/strong&gt;: Scene-based APIs provide finer control over individual windows or scenes compared to the app-wide &lt;code&gt;UIApplicationDelegate&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Future-Proofing&lt;/strong&gt;: Aligning with Apple’s modern frameworks, including SwiftUI, ensures compatibility with emerging features like Stage Manager and visionOS.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This shift also reflects Apple’s broader ecosystem goals, where &lt;code&gt;UISceneDelegate&lt;/code&gt; is the foundation for multi-window experiences across iOS, iPadOS, and beyond.&lt;/p&gt;

&lt;h2&gt;
  
  
  Action Plan for Developers
&lt;/h2&gt;

&lt;p&gt;To prepare for iOS 19 and beyond, we recommend the following steps:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Audit Your Codebase&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Identify usage of the deprecated &lt;code&gt;UIApplicationDelegate&lt;/code&gt; methods.&lt;/li&gt;
&lt;li&gt;Use Xcode’s warnings and documentation to pinpoint reliance on these APIs.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Migrate to UISceneDelegate&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Adopt &lt;code&gt;UISceneDelegate&lt;/code&gt; methods, such as &lt;code&gt;scene(_:willConnectTo:options:)&lt;/code&gt;, &lt;code&gt;sceneDidBecomeActive(_:)&lt;/code&gt;, and &lt;code&gt;sceneDidEnterBackground(_:)&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;For apps supporting iOS 13 and later, implement scene-based lifecycle management. Apple’s &lt;a href="https://developer.apple.com/documentation/uikit/app_and_scenes/managing_your_app_s_life_cycle" rel="noopener noreferrer"&gt;Managing Your App’s Life Cycle&lt;/a&gt; guide is a great starting point.&lt;a href="https://lapcatsoftware.com/articles/2025/4/5.html" rel="noopener noreferrer"&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;If supporting iOS 12 or earlier, use conditional checks to maintain compatibility (e.g., &lt;code&gt;if #available(iOS 13.0, *)&lt;/code&gt;).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Test Thoroughly&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Test your app on iOS 18.4 simulators with Xcode 16.3 to ensure no unexpected behavior.&lt;/li&gt;
&lt;li&gt;When iOS 19 SDK betas become available, test early to catch any deprecation-related issues.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Leverage SwiftUI (Optional)&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;For new projects or major refactors, consider SwiftUI’s lifecycle management, which integrates seamlessly with scene-based APIs and reduces reliance on traditional delegates.&lt;a href="https://www.reddit.com/r/iOSProgramming/comments/1k39mfg/uiapplication_delegate_deprecation_coming_in_ios/" rel="noopener noreferrer"&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Plan for App Store Compliance&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Apple may enforce stricter App Store guidelines in the future 2025 or later, potentially rejecting apps using deprecated APIs. Proactively migrating now will avoid future submission issues.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Example Migration
&lt;/h2&gt;

&lt;p&gt;Here’s a basic example of transitioning from &lt;code&gt;UIApplicationDelegate&lt;/code&gt; to &lt;code&gt;UISceneDelegate&lt;/code&gt;:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Before (UIApplicationDelegate)&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight swift"&gt;&lt;code&gt;&lt;span class="kd"&gt;func&lt;/span&gt; &lt;span class="nf"&gt;application&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;_&lt;/span&gt; &lt;span class="nv"&gt;application&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kt"&gt;UIApplication&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;didFinishLaunchingWithOptions&lt;/span&gt; &lt;span class="nv"&gt;launchOptions&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="kt"&gt;UIApplication&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="kt"&gt;LaunchOptionsKey&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kt"&gt;Any&lt;/span&gt;&lt;span class="p"&gt;]?)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="kt"&gt;Bool&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// App setup code&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;func&lt;/span&gt; &lt;span class="nf"&gt;applicationDidBecomeActive&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;_&lt;/span&gt; &lt;span class="nv"&gt;application&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kt"&gt;UIApplication&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// Handle active state&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;After (UISceneDelegate)&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight swift"&gt;&lt;code&gt;&lt;span class="kd"&gt;func&lt;/span&gt; &lt;span class="nf"&gt;scene&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;_&lt;/span&gt; &lt;span class="nv"&gt;scene&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kt"&gt;UIScene&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;willConnectTo&lt;/span&gt; &lt;span class="nv"&gt;session&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kt"&gt;UISceneSession&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;options&lt;/span&gt; &lt;span class="nv"&gt;connectionOptions&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kt"&gt;UIScene&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="kt"&gt;ConnectionOptions&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// App setup code&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;func&lt;/span&gt; &lt;span class="nf"&gt;sceneDidBecomeActive&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;_&lt;/span&gt; &lt;span class="nv"&gt;scene&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kt"&gt;UIScene&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// Handle active state&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For a complete guide, refer to Apple’s &lt;a href="https://developer.apple.com/documentation/uikit/uiscenedelegate" rel="noopener noreferrer"&gt;UISceneDelegate documentation&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Community Discussion
&lt;/h2&gt;

&lt;p&gt;The iOS developer community is already buzzing about this change. Posts on X suggest some developers are concerned about the transition, while others see it as a natural evolution toward &lt;code&gt;UISceneDelegate&lt;/code&gt;. Join the conversation on platforms like Reddit’s r/iOSProgramming or Apple Developer Forums to share insights and solutions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Stay Ahead
&lt;/h2&gt;

&lt;p&gt;To stay informed, keep an eye on WebKit commits and Apple’s developer documentation for early signals of SDK changes. WWDC 2025 (likely June) will likely provide official confirmation and detailed guidance on iOS 19’s changes.&lt;/p&gt;

&lt;p&gt;By starting your migration now, you’ll ensure your apps remain robust, compliant, and ready for Apple’s evolving ecosystem. If you have questions or need assistance, reach out via &lt;a href="https://forums.developer.apple.com" rel="noopener noreferrer"&gt;Apple Developer Forums&lt;/a&gt; or share your thoughts in the community.&lt;/p&gt;

&lt;p&gt;Happy coding…&lt;/p&gt;

</description>
      <category>ios</category>
      <category>swift</category>
      <category>swiftui</category>
      <category>news</category>
    </item>
    <item>
      <title>Color Management Across Apple Frameworks</title>
      <dc:creator>divyesh vekariya</dc:creator>
      <pubDate>Wed, 26 Mar 2025 04:18:49 +0000</pubDate>
      <link>https://dev.to/divyesh_vekariya/color-management-across-apple-frameworks-non</link>
      <guid>https://dev.to/divyesh_vekariya/color-management-across-apple-frameworks-non</guid>
      <description>&lt;p&gt;Managing colors effectively across &lt;strong&gt;UIKit, SwiftUI, and Core Graphics&lt;/strong&gt; can be challenging, but Apple provides a range of tools to ensure consistency. If you're developing an app that uses multiple frameworks, understanding &lt;strong&gt;color spaces, rendering differences, and best practices&lt;/strong&gt; is crucial.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Why Color Management Matters?&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Different Apple frameworks handle colors differently. If not managed properly, the same color might look slightly different in &lt;strong&gt;SwiftUI, UIKit, or Core Graphics&lt;/strong&gt;, leading to inconsistencies in your UI.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Color Spaces in Apple Frameworks&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Apple frameworks support multiple color spaces. The most commonly used ones are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;sRGB&lt;/strong&gt;: Default for most UI colors, suitable for standard displays.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Display P3&lt;/strong&gt;: A wider gamut color space used in modern Apple displays.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Generic RGB&lt;/strong&gt;: A more flexible option but not recommended for precise UI work.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Device RGB&lt;/strong&gt;: Depends on the display profile, which can lead to inconsistencies.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;SwiftUI and UIKit Differences&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;SwiftUI and UIKit have subtle differences in color handling:&lt;/p&gt;

&lt;h4&gt;
  
  
  SwiftUI
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Uses &lt;strong&gt;Color&lt;/strong&gt; struct (built-in color management)&lt;/li&gt;
&lt;li&gt;Automatically adjusts to different environments (light/dark mode, accessibility settings)&lt;/li&gt;
&lt;li&gt;Supports &lt;strong&gt;Display P3&lt;/strong&gt; color out-of-the-box&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  UIKit
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Uses &lt;strong&gt;UIColor&lt;/strong&gt; (supports sRGB, Display P3)&lt;/li&gt;
&lt;li&gt;Requires explicit color space conversion for consistency&lt;/li&gt;
&lt;li&gt;Uses &lt;code&gt;traitCollection&lt;/code&gt; to manage dynamic colors&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Using Colors in Code&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Here’s how you define colors in different frameworks:&lt;/p&gt;

&lt;h4&gt;
  
  
  SwiftUI
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight swift"&gt;&lt;code&gt;&lt;span class="kd"&gt;import&lt;/span&gt; &lt;span class="kt"&gt;SwiftUI&lt;/span&gt;

&lt;span class="kd"&gt;struct&lt;/span&gt; &lt;span class="kt"&gt;ContentView&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kt"&gt;View&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;var&lt;/span&gt; &lt;span class="nv"&gt;body&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kd"&gt;some&lt;/span&gt; &lt;span class="kt"&gt;View&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="kt"&gt;Text&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Hello, SwiftUI!"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
            &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;foregroundColor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;Color&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;displayP3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;red&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;0.9&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;green&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;0.2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;blue&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;0.3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;opacity&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;1.0&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  UIKit
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight swift"&gt;&lt;code&gt;&lt;span class="kd"&gt;import&lt;/span&gt; &lt;span class="kt"&gt;UIKit&lt;/span&gt;

&lt;span class="k"&gt;let&lt;/span&gt; &lt;span class="nv"&gt;color&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kt"&gt;UIColor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;displayP3Red&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;0.9&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;green&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;0.2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;blue&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;0.3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;alpha&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;1.0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Core Graphics
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight swift"&gt;&lt;code&gt;&lt;span class="kd"&gt;import&lt;/span&gt; &lt;span class="kt"&gt;CoreGraphics&lt;/span&gt;
&lt;span class="kd"&gt;import&lt;/span&gt; &lt;span class="kt"&gt;CoreImage&lt;/span&gt;

&lt;span class="k"&gt;let&lt;/span&gt; &lt;span class="nv"&gt;colorSpace&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kt"&gt;CGColorSpace&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kt"&gt;CGColorSpace&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;displayP3&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;let&lt;/span&gt; &lt;span class="nv"&gt;color&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kt"&gt;CGColor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;colorSpace&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;colorSpace&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;components&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mf"&gt;0.9&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;0.2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;0.3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;1.0&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  &lt;strong&gt;Best Practices for Color Consistency&lt;/strong&gt;
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Use Display P3 for modern Apple devices&lt;/strong&gt; for richer colors.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Keep color definitions consistent&lt;/strong&gt; across SwiftUI, UIKit, and Core Graphics.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Test colors on real devices&lt;/strong&gt; (especially with ProMotion and True Tone displays).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Prefer Asset Catalogs&lt;/strong&gt; for managing named colors in both SwiftUI and UIKit.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Handle Dark Mode properly&lt;/strong&gt; by defining light/dark variations of colors.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Further Reading&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;For an in-depth exploration of color management across Apple frameworks, check out this article:&lt;br&gt;&lt;br&gt;
📌 &lt;strong&gt;&lt;a href="https://juniperphoton.substack.com/p/color-management-across-apple-frameworks" rel="noopener noreferrer"&gt;Color Management Across Apple Frameworks&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;Apple’s ecosystem offers powerful color tools—understanding them helps maintain a consistent, vibrant UI across platforms.&lt;/p&gt;

</description>
      <category>ios</category>
      <category>mobile</category>
      <category>ui</category>
      <category>swift</category>
    </item>
  </channel>
</rss>
