Search icon CANCEL
Subscription
0
Cart icon
Your Cart (0 item)
Close icon
You have no products in your basket yet
Save more on your purchases! discount-offer-chevron-icon
Savings automatically calculated. No voucher code required.
Arrow left icon
Explore Products
Best Sellers
New Releases
Books
Events
Videos
Audiobooks
Packt Hub
Free Learning
Arrow right icon
timer SALE ENDS IN
0 Days
:
00 Hours
:
00 Minutes
:
00 Seconds

MobilePro

69 Articles
Runcil Rebello
20 May 2026
10 min read
Save for later

MobilePro #219: Building Safer Async Apps with Swift 6

Runcil Rebello
20 May 2026
10 min read
Mobile development blogs, tutorials and resources inside!Latest Mobile Dev Insights: iOS, Android, Cross-PlatformAdvertise with Us|Sign Up to the NewsletterMobilePro #219: Building Safer Async Apps with Swift 6From Greybox to Cinematic: Create a Stylized Japanese Environment in BlenderStep into the world of stylized environment creation in Blender and learn how to turn a simple greybox into a cinematic render 🎨✨Join 3D Tudor’s hands-on workshop and build a Japanese-inspired environment using modelling, terrain sculpting, geometry nodes, lighting, shaders, vegetation, and compositing workflows.Perfect for Blender artists, environment designers, and aspiring 3D creators looking to create polished cinematic scenes.🌸 Build. Light. Compose. Render.📅 23rd MayUse code: BLENDER50 and get 50% Off!Reserve your seat now for $42 $82Hi ,Today we are covering a piece on Swift 6 structured concurrency and why Apple’s latest concurrency model matters far beyond just cleaner syntax. What makes this especially relevant right now is how quickly modern app development is moving toward AI-assisted, highly parallel workflows where responsiveness, shared state management, and reliability become even more important.That broader shift is visible across this week’s updates too. Google I/O 2026 doubled down on Gemini-powered development experiences, OpenAI is bringing Codex workflows directly onto mobile devices, and both Apple and Google are pushing AI deeper into their developer ecosystems.As apps become more context-aware and AI-driven, concurrency goes beyond being a backend concern, becoming part of the foundation for building responsive, scalable mobile experiences.TL;DRSwift 6 structured concurrency makes async code safer, cleaner, and easier to reason aboutActors and strict concurrency checking help prevent data races before apps shipAsync/await improves readability while keeping apps responsive during background workTask groups and cooperative cancellation simplify large-scale concurrent operationsModern AI-assisted workflows will increasingly depend on strong concurrency foundationsAs AI becomes embedded across development tools and apps, predictable async behavior matters more than everLearn about AI-Ready APIs fromOpenAPI Ambassadors on May 23rdJoin our hands-on masterclass, Architecting Production-Ready APIs for AI Agents, and learn how to build API ecosystems that stay predictable, secure, and governed in an AI-driven world.Led by two OpenAPI Ambassadors, Erik Wilde and Frank Kilcommins, this session brings practical, real-world expertise in API design and governance.Get 50% off when you register within the next 48 hours. Use code: API50Discount Code - API50Reserve your seatThis week’s news cornerEverything Google announced at I/O 2026: At Google I/O 2026, Google unveiled major AI upgrades powered by Gemini across Search, Workspace, YouTube, shopping, and Android XR, introducing smarter personal agents, AI-powered search experiences, and next-gen wearable devices.Apple kicks off WWDC 2026 on June 8 with major AI focus: Apple has officially unveiled the schedule and details for WWDC 2026, which runs from June 8–12 and will give developers early access to the latest Apple platforms, tools, and APIs. The conference is expected to heavily spotlight AI advancements, including major Siri and Apple Intelligence upgrades, alongside updates to iOS 27, macOS 27, and Xcode.Google pushes Gemini Intelligence deeper into Android development: Google is expanding Gemini Intelligence across Android development, introducing new AI-powered tools and APIs aimed at helping developers build smarter, more context-aware app experiences. The updates focus on agentic workflows, adaptive UI generation, and tighter integration between Gemini and Android Studio to automate coding, testing, and app interactions.Apple brings AI-powered accessibility upgrades to iPhone: Apple has announced new iPhone accessibility features powered by Apple Intelligence, including smarter VoiceOver descriptions, Accessibility Reader, and live captions for uncaptioned content. The updates also improve Voice Control and Magnifier with more natural language interactions and AI-assisted understanding of on-screen content.OpenAI brings Codex to mobile for on-the-go app development workflows: OpenAI has expanded Codex into the ChatGPT mobile app, allowing developers to monitor, approve, and steer coding tasks directly from iPhones and Android devices while workflows continue running on desktop or remote environments. For mobile developers, this means AI-assisted coding no longer stops when they leave their desks; developers can review diffs, approve commands, track builds, and manage long-running app development tasks from anywhere.Structured Concurrency in Swift 6: Safer and Smarter Async ProgrammingModern applications are expected to remain fast, responsive, and capable of handling multiple operations at the same time. Whether downloading data, processing files, or updating a user interface, concurrency has become a critical part of software development.Swift 6 introduces a more powerful and developer-friendly concurrency model that makes asynchronous programming easier, safer, and more reliable.Swift’s structured concurrency model is built around features such as async/await, tasks, task groups, actors, and strict concurrency checking.Together, these tools help developers write concurrent code that is easier to read and significantly less prone to common problems like race conditions and deadlocks.Understanding Data RacesA major focus of Swift 6 is preventing data races. A data race occurs when multiple threads access the same mutable data simultaneously, while at least one thread modifies that data. Because execution timing varies unpredictably, applications can behave inconsistently or even crash.Swift 6 addresses this challenge with compile-time safety features, including async and await, tasks and task groups, Actors, Sendable types, and strict concurrency checking.These additions help developers detect concurrency problems early during development rather than after deployment.Async/Await: Writing Cleaner Asynchronous CodeSwift’s async/await syntax simplifies asynchronous programming by making async code read almost like synchronous code.Functions marked with async can pause execution while waiting for long-running operations such as network calls or file access. The await keyword indicates where the pause occurs.For example:func retrieveData() async -> StringCalling the function:let data = await retrieveData()Unlike older callback-based approaches, async/await improves readability and reduces deeply nested completion handlers. It also keeps the main thread responsive while background work completes.Swift additionally supports running multiple async operations concurrently using async let:async let userData = retrieveUserData()async let imageData = retrieveImageData()The application can then wait for both results together:let results = await (userData, imageData)This enables efficient parallel execution while maintaining predictable flow control.Tasks and Task GroupsTasks represent independent units of asynchronous work. They provide greater flexibility and control compared to traditional dispatch queues. A task can be created using:Task { // asynchronous work}Swift manages task execution internally using cooperative thread scheduling, meaning tasks do not necessarily create new threads.Detached TasksDetached tasks run independently of their parent task:Task.detached { let data = await retrieveUserData()}These are useful when work should continue independently without inheriting the parent task’s context.Task CancellationSwift uses cooperative cancellation. Tasks can check whether cancellation has been requested using:Task.isCancelledThis allows tasks to stop gracefully, release resources, and maintain application stability.Task GroupsTask groups allow developers to manage collections of concurrent tasks together. Multiple operations can run simultaneously, and results can be gathered collectively.This is especially useful when fetching multiple resources in parallel or processing batches of data.Actors: Safe Shared State ManagementActors are one of Swift’s most important concurrency features. They provide a safe way to manage mutable shared state by ensuring only one thread accesses actor data at a time.An actor can look similar to a class:actor BankAccount { private var balance: Double}Unlike classes, actors automatically protect their internal state from concurrent access, dramatically reducing the risk of race conditions. Accessing actor methods requires await because interactions are asynchronous by design.Global ActorsSwift also supports global actors, which provide shared execution contexts across an application. A common example is MainActor, which ensures UI-related code runs safely on the main thread.Sendable Types and Strict Concurrency CheckingSwift 6 introduces stronger compile-time enforcement through the Sendable protocol. A Sendable type is safe to transfer across threads and tasks. Value types like Int, String, arrays, and structs often conform automatically.For custom types, developers can explicitly declare conformance:struct Transaction: SendableThis ensures data shared between concurrent contexts remains safe and predictable.Strict Concurrency CheckingSwift 6 also introduces Strict Concurrency Checking, which analyzes code for potential race conditions and unsafe shared state. Developers can enable complete checking in Swift compiler settings or Xcode build settings.This feature helps identify concurrency issues during development, improving application reliability before release.Bridging Legacy APIs with ContinuationsMany older APIs still rely on completion handlers. Swift provides continuations to bridge these APIs into the modern async/await world using withCheckedContinuation and withCheckedThrowingContinuation.These allow callback-based code to integrate seamlessly into Swift’s structured concurrency model while maintaining cleaner syntax and better error handling.Best Practices for Swift ConcurrencyHere are some recommended best practices when working with structured concurrency in Swift:Prefer async/await Over Completion Handlers: Use Swift’s modern async syntax whenever possible for cleaner, easier-to-maintain code.Use Actors for Shared Mutable State: Actors provide built-in protection against race conditions and should be preferred over manual locking mechanisms.Keep Tasks Lightweight: Avoid long-running blocking operations inside tasks. Let Swift’s concurrency system manage execution efficiently.Handle Task Cancellation Gracefully: Always check Task.isCancelled in long-running operations and clean up resources properly.Use Task Groups for Parallel Work: Task groups simplify coordinating multiple asynchronous operations while improving performance.Swift 6 structured concurrency introduces a modern, safer, and more maintainable approach to asynchronous programming. Features like async/await, tasks, actors, task groups, and strict concurrency checking make it significantly easier to build responsive and reliable applications while avoiding common concurrency pitfalls.By adopting these tools and following concurrency best practices, developers can create scalable Swift applications that remain efficient, stable, and easier to maintain in increasingly complex environments.📚 Go DeeperIf you want to master Swift 6, Mastering Swift 6 by Jon Hoffman offers a practical look at modern programming techniques for high-performance apps.🧑‍💻Perfect your application development capabilities using the latest features of Swift 6.2🛠️Learn advanced techniques like concurrency, memory management, Generics, and Swift Testing📱Apply best practices in Swift to write clean, scalable, and maintainable codeMastering Swift 6Buy now at $44.99Build with AIAI is moving fast. Most developers are still catching up the hard way.BuildWithAI is a newsletter by Packt — the trusted name behind 7,000+ tech books, courses, and expert resources across 1,000+ technologies — built specifically for engineers who want to stop reading about AI and start shipping with it. Every issue brings you practical workflows, vetted resources, and real implementation guidance.Subscribe here💬 Let’s TalkHow often do you actually update your paywall after shipping it?Reply and let me know — curious how teams approach iteration.Advertise with usInterested in sponsoring this newsletter and reaching a highly engaged audience of tech professionals? Simply reply to this email and our team will get in touch with next steps.Cheers,Runcil Rebello,Editor-in-Chief, MobilePro*{box-sizing:border-box}body{margin:0;padding:0}a[x-apple-data-detectors]{color:inherit!important;text-decoration:inherit!important}#MessageViewBody a{color:inherit;text-decoration:none}p{line-height:inherit}.desktop_hide,.desktop_hide table{mso-hide:all;display:none;max-height:0;overflow:hidden}.image_block img+div{display:none}sub,sup{font-size:75%;line-height:0}#converted-body .list_block ol,#converted-body .list_block ul,.body [class~=x_list_block] ol,.body [class~=x_list_block] ul,u+.body .list_block ol,u+.body .list_block ul{padding-left:20px} @media (max-width: 100%;display:block}.mobile_hide{min-height:0;max-height:0;max-width: 100%;display:none;overflow:hidden;font-size:0}.desktop_hide,.desktop_hide table{display:table!important;max-height:none!important}.social_block .social-table{display:inline-block!important}}
Read more
  • 0
  • 0

Runcil Rebello
13 May 2026
13 min read
Save for later

MobilePro #218: The Blind Spots of AI-Assisted TDD

Runcil Rebello
13 May 2026
13 min read
Mobile development blogs, tutorials and resources inside!Latest Mobile Dev Insights: iOS, Android, Cross-PlatformAdvertise with Us|Sign Up to the NewsletterMobilePro #217: The Blind Spots of AI-Assisted TDDSwiftCraft 2026 is two weeks away — and your ticket includes a full workshop dayA single-track Swift conference where the Monday workshops are bundled in — including:Daniel Steinberg's full-day Foundation Models / Apple Intelligence workshop,Phil Zakharchenko (ex-Apple, now OpenAI) on building great Mac apps in 2026, andJoannis Orlandos on Swift for embedded Linux.Conference days bring keynotes from Laura Savino (Adobe), Janina Kutyn (Apple Music), and Daniel Steinberg, plus 14 talks on performance, AI-assisted dev, StoreKit 2, SwiftUI animation, and more.Packt readers: £50 off an Indie ticket with code PACKT26 at swiftcraft.uk.Reserve your spotHi ,Today we are covering a piece from Dave Poirier, co-author of AI-Driven Swift Architecture. This article immediately caught our attention because it cuts through a lot of the hype around AI-assisted development workflows.In this article, originally published on LinkedIn, he compares two AI-assisted implementations of the same iOS subsystem: one driven by rigorous spec-first TDD, the other by a messier human-in-the-loop iterative process, and the results are surprisingly revealing.Rather than arguing against AI or TDD, Dave explores where highly disciplined AI workflows can become structurally blind: missing operational concerns, instrumentation, integration seams, and the “what’s missing?” questions that experienced engineers naturally notice while running real systems.TL;DRAI-assisted TDD can produce clean, disciplined code — but still miss real-world engineering concernsSpecs + tests often reinforce the same assumptions instead of challenging themThe strongest production safeguards usually emerge after running and refactoring working codeHuman-in-the-loop workflows catch operational gaps AI workflows often overlookCorrectness inside the spec is not the same as production readiness outside the specThe missing step in many AI coding workflows is asking: “What did we fail to imagine?”Hack Before You LaunchHack Before You Launch is a hands-on workshop for developers and indie hackers building fast with AI tools like ChatGPT and Copilot. Ethical hacker Dr. Katie Paxton-Fear will reveal how AI-built apps can expose hidden security flaws—and how to fix them before launch. Attendees will leave with practical security insights and a pre-launch checklist to help ship safer products.Saturday, 30 May | 10:00 AM – 11:30 AM | 1 hour 30 minutesJoin us to get a step aheadThis week’s news corneriOS 26.5 RC: iOS and iPadOS 26.5 RC (with Xcode 26.5) introduces enhanced StoreKit support for subscription pricing models, along with new APIs and metadata access. It also fixes issues in receipts, subscription entitlements, StoreKit testing, and wallpaper installation/removal.Android Auto app widgets mirror mobile setup: Android Auto is preparing to introduce widget support that mirrors the mobile widget selection experience. The feature has reappeared in recent leaks and is likely to be announced or rolled out soon.Figma Builds In-House Redis Proxy to Hit Six Nines Uptime: Figma built an in-house Redis proxy (FigCache) to unify and stabilize its caching layer, achieving “six nines” uptime while reducing outages and operational complexity at scale.Swift Package Manager is soon the default in Flutter: Flutter 3.44 will make Swift Package Manager the default for iOS/macOS, replacing CocoaPods as it moves to read-only status by 2026. The shift simplifies setup and pushes developers and plugins to adopt Apple’s modern dependency system.Know the authorDave Poirier is a software developer veteran with over 25 years of experience writing mobile, desktop, and server applications. His specialty includes data privacy, data security, and app robustness. Dave developed his skills mostly through self-education and contributing to the open-source community. To this day, Dave continues to contribute to the iOS and macOS communities by sharing his knowledge with his peers, and currently works for iVerify.io, building software solutions to detect compromised mobile devices.AI: When the More Rigorous Process Shipped the Lower-Quality CodeThis article is a field note on two AI-assisted implementations of the same iOS feature, and why the workflow that looked more disciplined produced a weaker result.I recently reviewed two parallel implementations of the same telemetry subsystem on a mobile codebase: a background sampler that captures device metrics, buffers them in memory under power and capacity constraints, encodes them to a binary wire format, and writes time-gated artefacts on an 8-hour cadence.Same ticket, same base branch, two teams, two workflows.Branch A — PRD-driven AI TDDProduct requirements written upfront, decomposed into Given/When/Then specs, then strict test-first development with an adversarial convince me this is correct review skill. Commit history is textbook:test(red) → feat(green) → test(red) → feat(green), dozens of micro-commitsBranch B — Human-in-the-loop iterativeLess ceremonious. The engineer wrote code, ran it, hit edge cases, refactored. Specs were updated after the implementation stabilized. Commit history is messier, visible Replace NSLock with DispatchQueue, Strengthen sampler test coverage, Per-target buffer sizes, and Add rationale to specs.I went in expecting Branch A to be tighter and more correct. The opposite was true on three of four quality dimensions.What I measuredAfter excluding tangential changes on both sides (a sibling component that landed in the same PR, an unrelated flaky-test fix), the scopes are comparable.Test coverageBranch A: roughly 43 test cases (XCTest)Branch B: roughly 62 test cases (Quick/Nimble), with categorically stronger edge-case coverageThe count gap is moderate, but the kind of tests differ sharply:Branch A's strongest tests verify happy-path field storage and single-method behavior.Branch B's strongest tests verify integration invariants the team couldn't easily have predicted upfront:A gate-closed condition must short-circuit before a destructive flush;Ring-buffer FIFO must hold independently across CPU and power buffers under capacity pressure; andProto3 zero-field elision must be locked against binary golden fixtures so the wire format can't silently drift.The Threading correctness was measured against the project's documented rule that synchronous waits on shared state must assert(!Thread.isMainThread):Branch A—partially compliant: Legacy NSLock patterns retained in helper providers, no off-main asserts on those paths.Branch B—compliant: Every sync-wait entry point asserts off-main; NSLock paths replaced with serial DispatchQueueProduction observabilityBranch A—minimal: Silent skip on gate-closed, no performance-tracking hooks, and no log dedup.Branch B: Integrated performance tracker, dedup'd failure logging via a once-only emitter, explicit decision-point logs at every short-circuit.ArchitectureBranch A—cleaner: Direct service registration in each app entry point; minimal public surface.Branch B: Introduced a configuration-aggregating struct that bundles too many unrelated concerns into one place, a small God-object regression.Branch A: A 168-line behavioral spec, decoder co-located with the component.Branch B: A 336-line spec with embedded rationale per decision, decoders relocated to a cross-team folder with a CI snapshot-test runbook documenting the encoder/decoder lock-step contract.Three of four axes go to Branch B. The one win for Branch A is real but smaller in absolute terms than the wins for B.Why the disciplined process underperformedFive mechanisms, ordered by how much I think they mattered.TDD does not generate the highest-leverage tests, Refactor-and-lock-down doesThe most valuable tests on Branch B, binary golden fixtures, ordering invariants across destructive operations, zero-field elision regression guards, share a property: they require first having working code, then capturing its output as ground truth, then writing a test that fails if the output drifts.This is a post-implementation move. A strict red → green workflow steers away from it because there is no failing-test moment to anchor on.Branch A has no golden fixtures. Branch B does, and they will catch wire-format drift years from now without anyone remembering why they exist.Spec-first plus test-first creates a closed echo chamberWhen the spec says X, the test asserts X, and the code does X, all three rhyme. None of them ask what about the interactions?—what happens when drop-oldest fires while the reporter is flushing, when the power throttle activates mid-tick, when the time-gate opens while the buffer is already at 80% capacity.Branch B's spec is twice as long as Branch A's because the author kept discovering interactions post-implementation and updating the spec to match. Branch A's tighter spec reads cleaner but encodes a smaller world.TDD is hostile to instrumentationPerformance tracking, log dedup, debug logs at decision points, named factory methods, doc comments explaining queue ownership, none of these have failing tests demanding them. They are production hygiene.A workflow whose rule is don't add code that isn't driven by a failing test will systematically under-instrument the system, because instrumentation never goes red.Branch A is impressively minimal precisely because the author refused to add what wasn't test-demanded. Branch B looks like an operator built it.Adversarial review hardens claims; it does not reframe scopeA skill that asks convince me your code is correct makes you a better defender of your design. It does not make you ask should I have made a different design? If the author's frame is minimal additive change, no surrounding refactors, adversarial questioning reinforces that frame.The author of Branch A came out very confidently minimal—and that confidence was the structural weakness, not the code itself.A complementary kind of adversary, one that challenges scope rather than correctness, would have asked:Why isn't this proto file in the cross-team decoder folder?Why isn't there a golden binary fixture?Why does this helper still use NSLock when the codebase's threading documentation flags that pattern?Branch B's process exposed those questions naturally because the author was running the code, reading surrounding modules, and noticing gaps. Branch A's process didn't, because the adversary was looking inward at correctness rather than outward at fit.Micro-commits make the refactor step invisibleThe refactor step of red/green/refactor is where dedup, factory methods, comment-as-design-rationale, and instrumentation typically appear.Branch A's commit log is dense with test(red) → feat(green) pairs and almost no visible refactor passes. Branch B's commit log explicitly shows refactor passes, Replace NSLock with DispatchQueue, Strengthen sampler test coverage, Per-target buffer sizes, Drop swiftlint:disable directives. Same red/green machinery, but only one workflow paused to refactor.When the next red → green always feels more productive than stop and improve what just shipped green, the refactor pass gets squeezed out. The duplicated buffer-append code, the inline power-throttle decisions, and the silent gate-skip in Branch A are all unfinished refactor passes that didn't happen because the workflow never paused.The meta-pattern: legible process is not the same as better outcomeBranch A has the more legible process. A reviewer reading its commit log feels reassured. Branch B has a messier, iterative trace, clearly the author was rediscovering invariants and updating things mid-flight.But quality lives in the output, not the trace. The legible process produced a tight, correct, narrowly-scoped implementation that misses operational concerns the messier process happened to cover.The lesson is not that TDD is bad, or that AI-driven workflows are bad. The lesson is more specific: TDD plus spec-first plus correctness-grilling is a high-confidence, self-consistent loop that rewards completeness within scope and is structurally blind to scope itself.To escape its own frame, it needs an outside-the-loop perturbation, a skeptical second reviewer, an explicit what's missing? pass, a forced refactor pause, or an adversary tuned to scope rather than correctness.Practical recommendations for AI-assisted mobile engineering workflowsIf you are running AI-driven TDD on a real production system, four interventions that would close most of the gap I observed:Add a post-TDD golden-file lock-down step: Once all units pass, capture binary outputs as .golden fixtures and commit them. The wire format is now locked. No future refactor can silently change it.This is anti-TDD by construction, you can only write the test after the code works, and that is precisely why it must be a separate phase rather than something the loop is asked to discover.Force at least one integration-seam test per pair of components: Not does the sampler buffer correctly but does the sampler buffer correctly while the reporter is flushing?These tests do not fall out of unit-level TDD. They require explicit prompting: name every cross-component interaction in this diff and write a test for each.Pair correctness-grilling with scope-grilling: Run a second adversary whose only job is to ask what is not in your diff that should be? Point it at proto locations, missing instrumentation, missing comments, threading-rule compliance, opportunities to dedup against existing patterns. This is the question the disciplined inner loop will not ask itself.Make the refactor step a first-class commit: If your trace shows N test(red) → feat(green) pairs and zero refactor commits, something is being skipped. Refactor should be visible in the history, not implicit in the file-state-at-merge.A workflow rule as simple as after every three green commits, you must produce one refactor commit or explicitly state none is needed would have closed much of the observed gap.Closing thoughtThe most generalizable observation from this comparison: when AI does the test-first dance and a human grills it on correctness, both participants stay inside the spec's frame. Neither is positioned to notice what the frame leaves out.The human-in-the-loop iterative process, slower, messier, less impressive on commit-log review, has one structural advantage the disciplined process lacks: the human is running the code and noticing the gaps.That feedback loop, which includes operational instincts, surrounding-module awareness, and the discomfort of seeing your own freshly-written NSLock next to a CLAUDE.md rule that flags it, is not yet replaceable by spec-driven test generation. It is the part of engineering that lives outside the spec.If you are designing AI-assisted workflows for production-grade mobile work, treat AI does TDD, human reviews tests as a strong default for forward progress, and pair it with a separate pass whose only job is to interrogate scope, instrumentation, threading compliance, and what the spec failed to imagine.The disciplined loop will not catch its own blind spots. That is what the second pass is for.📚 Go DeeperIf you’re exploring how AI-assisted workflows are reshaping real-world software engineering, AI-Driven Swift Architecture by Walid SASSI and Dave Poirier offers a practical look at building modern iOS systems with AI-assisted development, architecture patterns, concurrency, and production-ready engineering practices.🧑‍💻Master Clean Architecture, TDD, and modernization with Claude Code support🛠️Build SwiftUI apps powered by Apple Foundation Models and on-device intelligence📱Apply MCP workflows to create AI-driven feature agents in real projectsAI Driven Swift ArchitectureBuy now at $44.99Build with AIAI is moving fast. Most developers are still catching up the hard way.BuildWithAI is a newsletter by Packt — the trusted name behind 7,000+ tech books, courses, and expert resources across 1,000+ technologies — built specifically for engineers who want to stop reading about AI and start shipping with it. Every issue brings you practical workflows, vetted resources, and real implementation guidance.Subscribe here💬 Let’s TalkHow often do you actually update your paywall after shipping it?Reply and let me know — curious how teams approach iteration.Advertise with usInterested in sponsoring this newsletter and reaching a highly engaged audience of tech professionals? Simply reply to this email and our team will get in touch with next steps.Cheers,Runcil Rebello,Editor-in-Chief, MobilePro*{box-sizing:border-box}body{margin:0;padding:0}a[x-apple-data-detectors]{color:inherit!important;text-decoration:inherit!important}#MessageViewBody a{color:inherit;text-decoration:none}p{line-height:inherit}.desktop_hide,.desktop_hide table{mso-hide:all;display:none;max-height:0;overflow:hidden}.image_block img+div{display:none}sub,sup{font-size:75%;line-height:0}#converted-body .list_block ol,#converted-body .list_block ul,.body [class~=x_list_block] ol,.body [class~=x_list_block] ul,u+.body .list_block ol,u+.body .list_block ul{padding-left:20px} @media (max-width: 100%;display:block}.mobile_hide{min-height:0;max-height:0;max-width: 100%;display:none;overflow:hidden;font-size:0}.desktop_hide,.desktop_hide table{display:table!important;max-height:none!important}.social_block .social-table{display:inline-block!important}}
Read more
  • 0
  • 0

Runcil Rebello
06 May 2026
5 min read
Save for later

MobilePro #217: How React Makes UI Adaptive by Design

Runcil Rebello
06 May 2026
5 min read
Mobile development blogs, tutorials and resources inside!Latest Mobile Dev Insights: iOS, Android, Cross-PlatformAdvertise with Us|Sign Up to the NewsletterMobilePro #217: How React Makes UI Adaptive by DesignBuild and test native paywalls in secondsTurn a prompt into a complete native paywall with RevenueCat’s Paywalls AI Editor.Update copy, adapt designs for dark mode, and launch A/B tests without waiting for the next sprint.Use free up to $2.5k monthly tracked revenue. 96,000+ apps trust RevenueCat.Learn moreHi ,Most developers treat UI as something you build once and ship. However, in reality, some screens never stop changing.Onboarding, pricing, and paywalls often need constant iteration, from copy tweaks to layout experiments. That’s where modern UI thinking matters. Frameworks like React treat interfaces as data-driven, making them easier to adapt when things need to change quickly.This week, we’re breaking down how that works under the hood.TL;DRIn React, UI is a function of state. You change the state, and the UI updatesComponents + hooks make it easy to build dynamic, reusable UIState-driven UI is key for screens that need frequent iterationNot all parts of your app stay static after launchThe real challenge isn’t building UI but updating it quickly and oftenThis week’s news corneriOS 26.5 RC: iOS and iPadOS 26.5 RC (with Xcode 26.5) introduces enhanced StoreKit support for subscription pricing models, along with new APIs and metadata access. It also fixes issues in receipts, subscription entitlements, StoreKit testing, and wallpaper installation/removal.Android Auto app widgets mirror mobile setup: Android Auto is preparing to introduce widget support that mirrors the mobile widget selection experience. The feature has reappeared in recent leaks and is likely to be announced or rolled out soon.Figma Builds In-House Redis Proxy to Hit Six Nines Uptime: Figma built an in-house Redis proxy (FigCache) to unify and stabilize its caching layer, achieving “six nines” uptime while reducing outages and operational complexity at scale.Swift Package Manager is soon the default in Flutter: Flutter 3.44 will make Swift Package Manager the default for iOS/macOS, replacing CocoaPods as it moves to read-only status by 2026. The shift simplifies setup and pushes developers and plugins to adopt Apple’s modern dependency system.Understanding React Components and HooksReact applications are built using components, which are reusable pieces of UI. Each component can accept inputs called props and manage its own internal data through state. This allows developers to break down complex interfaces into smaller, manageable parts.Components describe how the UI should look based on the data they receive. Instead of manually updating the interface, React automatically updates the UI when the underlying data changes.Components and Data FlowComponents can be simple or complex, but the key idea is consistency: UI is a function of data.Components receive dataThey render UI based on that dataWhen the data changes, the UI updates automaticallyThis approach removes the need for direct DOM manipulation and keeps UI logic predictable.State: Managing Changing DataState represents data that changes over time.Examples include:user interactionsform inputsfetched dataWhen state updates, React re-renders the component to reflect the new values. This makes it easier to build dynamic interfaces without manually handling UI updates.In practice, many real-world interfaces rely heavily on this pattern of changing UI based on state. Screens that need to adapt frequently — such as pricing or onboarding flows — are often built around dynamic state updates rather than fixed layouts.Hooks: Managing Logic in ComponentsReact uses Hooks to manage state and side effects in functional components.The most commonly used Hooks are:useState → store and update state valuesuseEffect → handle side effects such as data fetching or cleanupHooks keep related logic together, making components easier to understand and maintain.Advanced HooksReact also provides additional Hooks for more complex scenarios:useMemo / useCallback → optimize performance by avoiding unnecessary recalculationsuseRef → access mutable values or DOM elements directlyuseReducer → manage more complex state logicThese tools help improve performance and structure in larger applications.Sharing Data Across ComponentsReact supports sharing data across components using context.This helps:avoid passing data through multiple layersmanage global state more efficientlyContext is particularly useful when multiple components need access to the same data.Bringing It All TogetherComponents and Hooks form the foundation of modern React development.They enable developers to:build scalable applicationsmanage dynamic data flowscreate maintainable UI structuresBy focusing on how data flows through components, React simplifies the process of building complex user interfaces.📚 Go DeeperIf you want to explore these concepts in more detail, React and React Native, Sixth Edition, by Mikhail Sakhniuk, Rodrigo Lobenwein, and Adam Boduch provides a comprehensive guide to building dynamic, scalable applications using modern React practices.🧑‍💻 New content on TypeScript, React frameworks, state management strategies, unit testing, and AI-powered productivity.🛠️ Get to grips with React fundamentals and modern React techniques and architecture📱 Broaden your React expertise through mobile development with React NativeReact and React Native, Sixth EditionBuy now at $54.99 $43.99💬 Let’s TalkHow often do you actually update your paywall after shipping it?Reply and let me know — curious how teams approach iteration.Advertise with usInterested in sponsoring this newsletter and reaching a highly engaged audience of tech professionals? Simply reply to this email and our team will get in touch with next steps.Cheers,Runcil Rebello,Editor-in-Chief, MobilePro*{box-sizing:border-box}body{margin:0;padding:0}a[x-apple-data-detectors]{color:inherit!important;text-decoration:inherit!important}#MessageViewBody a{color:inherit;text-decoration:none}p{line-height:inherit}.desktop_hide,.desktop_hide table{mso-hide:all;display:none;max-height:0;overflow:hidden}.image_block img+div{display:none}sub,sup{font-size:75%;line-height:0}#converted-body .list_block ol,#converted-body .list_block ul,.body [class~=x_list_block] ol,.body [class~=x_list_block] ul,u+.body .list_block ol,u+.body .list_block ul{padding-left:20px} @media (max-width: 100%;display:block}.mobile_hide{min-height:0;max-height:0;max-width: 100%;display:none;overflow:hidden;font-size:0}.desktop_hide,.desktop_hide table{display:table!important;max-height:none!important}.social_block .social-table{display:inline-block!important}.row .side{display:none}}
Read more
  • 0
  • 0

Runcil Rebello
01 May 2026
6 min read
Save for later

MobilePro #216: What DeerFlow Reveals About the Future of AI Tools

Runcil Rebello
01 May 2026
6 min read
Mobile development blogs, tutorials and resources inside!Latest Mobile Dev Insights: iOS, Android, Cross-PlatformAdvertise with Us|Sign Up to the NewsletterMobilePro #216:What DeerFlow Reveals About the Future of AI ToolsBuild AI Agents with DeerFlow 2.0Expect live demos, including agents that review pull requests and generate full research reports from a single prompt, along with a closer look at how DeerFlow coordinates models like GPT, Gemini, and DeepSeek behind the scenes.The event is designed for engineers, AI practitioners, product teams, and anyone exploring autonomous workflows or open-source agent systems. It also includes insights from the maintainers on how the project evolved from DeerFlow 1.0 to 2.0, what is coming next, and how to get involved.📅 Wednesday, May 6 • 9 AM – 10:30 AM EDT🌐 Online event by Packt PublishingRegister nowHi ,AI tools have already started changing how mobile developers work, from generating UI code and helping debug issues to speeding up iteration. However, most of these tools still operate in isolation. While they’re useful for individual tasks, they don’t necessarily function as part of a larger, coordinated system.That’s the direction things are starting to move toward: tools won’t just assist but will orchestrate workflows across your stack.DeerFlow is one example of this shift. It represents a broader pattern that will increasingly influence how developers build, test, and ship applications.This article is a feature by Henry Li (DeerFlow Co-Creator and Core Contributor) for an upcoming FREE live session hosted by Packt, where the DeerFlow team will walk through how these ideas translate into real systems.From AI Assistants to Systems:What DeerFlow Tells Us About Dev Tooling's DirectionDeerFlow (Deep Exploration and Efficient Research Flow) is an open-source superagent harness that orchestrates sub-agents, memory, and sandboxes to do almost anything, and is powered by extensible skills. To understand DeerFlow, whose repo is available here, it helps to look at where it came from.The Evolution of DeerFlowTo understand DeerFlow, whose repo is available here, it helps to look at where it came from.LangManusDeerFlow builds on an earlier open-source project called LangManus, inspired by Manus, an autonomous artificial intelligence agent. Within days of its initial release, LangManus demonstrated that multi-agent systems, combining planning, execution, and research, could be recreated quickly using frameworks like LangChain and LangGraph.Within three days, the project reached 5,000 GitHub stars. However, despite being short-lived due to naming issues, it laid the groundwork for what came next.DeerFlow 1.0DeerFlow introduced a more structured system built around:It used a “mechanical + ReAct” execution model, essentially a loop where the system plans tasks, executes them, and adjusts based on results, thus combining planning with iterative execution.DeerFlow 2.0The latest version moves toward a more flexible architecture:dynamic sub-agents instead of fixed rolesimproved scalabilitystronger extensibilityIt also gained rapid adoption, with tens of thousands of contributors and users engaging with the project.The key shift here is from rigid agent roles to systems that can adapt dynamically — something we’re already starting to see in developer tools.What DeerFlow Actually DoesAt its core, DeerFlow is a modular AI system where different capabilities are packaged as reusable components.While this may sound abstract, the underlying ideas map surprisingly well to real development workflows.Skills: Reusable Units of WorkDeerFlow introduces the concept of Skills — modular capabilities that can be loaded on demand.Examples include:research workflowsdata analysiscontent generationvisualizationEach skill contains structured logic, templates, and best practices.Sandbox: Safe Execution EnvironmentsEach task runs inside an isolated environment with:file system accessscripting support (Bash, Python)configurable runtime (local, Docker, Kubernetes)Sub-agents: Parallel WorkflowsRather than running a single process, DeerFlow splits work into multiple sub-agents that operate in parallel.For example:one agent gathers dataanother processes itanother generates outputContext Engineering and MemoryDeerFlow manages:context flow across taskslong-term memory of user datastructured information storageMessage Gateway: System IntegrationDeerFlow integrates with platforms like Slack and Telegram, enabling workflows to connect with external systems.🛠️ Architecture: From Fixed Systems to Flexible WorkflowsDeerFlow’s architecture consists of interaction, service, agent harness, infrastructure, and integration layers.DeerFlow 2.0 is a Super Agent Harness with full extensibility and execution capabilities.The key difference here is that DeerFlow 1.0 used fixed multi-agent roles, leading to rigidity. DeerFlow 2.0, on the other hand, adopts a Lead Agent with middleware and dynamic sub-agents, improving scalability and flexibility.📱 Why This Matters for Mobile DevelopersYou may not be building multi-agent systems today. But the patterns DeerFlow uses are already starting to show up in the tools you use.We’re moving toward a world where:IDEs don’t just suggest code — they coordinate workflowstools don’t just assist — they automate multi-step taskssystems don’t just run functions — they orchestrate processesFor mobile developers, this could impact:debugging workflowstesting pipelinescontent and UI generationbackend automationWhere This Is HeadingThe shift is subtle but important. AI tools are evolving from isolated assistants to coordinated systems that manage workflows end-to-end.DeerFlow is one example of how that transition is happening under the hood.If this direction interests you, the upcoming DeerFlow session will walk through how these systems are built in practice, including live demos and real workflows.Even if you’re focused on mobile today, understanding where tooling is headed can give you a useful edge as these capabilities start showing up in everyday development environmentsAdvertise with usInterested in sponsoring this newsletter and reaching a highly engaged audience of tech professionals? Simply reply to this email and our team will get in touch with next steps.Cheers,Runcil Rebello,Editor-in-Chief, MobilePro*{box-sizing:border-box}body{margin:0;padding:0}a[x-apple-data-detectors]{color:inherit!important;text-decoration:inherit!important}#MessageViewBody a{color:inherit;text-decoration:none}p{line-height:inherit}.desktop_hide,.desktop_hide table{mso-hide:all;display:none;max-height:0;overflow:hidden}.image_block img+div{display:none}sub,sup{font-size:75%;line-height:0}#converted-body .list_block ol,#converted-body .list_block ul,.body [class~=x_list_block] ol,.body [class~=x_list_block] ul,u+.body .list_block ol,u+.body .list_block ul{padding-left:20px} @media (max-width: 100%;display:block}.mobile_hide{min-height:0;max-height:0;max-width: 100%;display:none;overflow:hidden;font-size:0}.desktop_hide,.desktop_hide table{display:table!important;max-height:none!important}.social_block .social-table{display:inline-block!important}}
Read more
  • 0
  • 0

Runcil Rebello
29 Apr 2026
5 min read
Save for later

MobilePro #215: Why AI tools still struggle to work together

Runcil Rebello
29 Apr 2026
5 min read
Mobile development blogs, tutorials and resources inside!Latest Mobile Dev Insights: iOS, Android, Cross-PlatformAdvertise with Us|Sign Up to the NewsletterMobilePro #215: Why AI tools still struggle to work togetherYour Figma files can't save you frombad AI prompts 👀Join the Claude Code Skills for Product Designers masterclass on May 27, 6:30–9 PM GMT+5 and build AI workflows designed for how product designers actually work.Led by Nick Babich, Senior Product DesignerGet 35% off using code - NL35Register nowHi ,AI coding tools are getting better at generating code. They’re still bad at working together.TL;DRAI tools work well in isolation but break down when integrated into real workflowsThe real challenge is connecting systems, not generating codeProtocols like MCP aim to make tools reusable across environmentsSponsored🎮 The Complete Game Marketing Roadmap: From Idea to Post-Launch Success📅 May 23, 2026 (Saturday) | ⏰ 10 AM ET🎤 Speaker: Jordan Brown, Co-Founder of Frostbloom🎟 Free to attendRegister hereThis week’s news cornerJetpack Compose just made testing more reliable: The April 2026 release switches to coroutine-based testing APIs by default, helping catch race conditions and reduce flaky tests. It also improves debugging for transitions and expands input support.Android Studio is starting to plan your code before writing it: Panda 4 introduces Planning Mode and Next Edit Prediction, helping developers anticipate changes and reduce repetitive edits across files.Apple is doubling down on developer community at WWDC: A June 10 meetup in Cupertino will focus on talks and networking with fellow developers.iOS 26.5 beta focuses on stability over features: The update brings SDK changes, bug fixes, and incremental improvements rather than major shifts.Why Your AI Tools Don’t Work Together(And How MCP Fixes It)Most AI tools still live in silosIf you’ve worked with AI assistants that call APIs or trigger workflows, you’ve probably seen how quickly things break once you move beyond simple use cases. The logic usually lives inside a single tool, and moving it elsewhere means rebuilding everything from scratch.That’s the problem MCP (Model Context Protocol) is trying to solve. Instead of embedding tools inside applications, MCP lets you expose them as reusable capabilities that other systems can discover and use.Building a simple MCP server in SwiftTo make this concrete, you can build a minimal MCP server in Swift that exposes a single tool like get_weather.At a high level:Create an executable Swift packageAdd the MCP Swift SDKDefine a tool with a schemaImplement execution logicExpose it via stdio transportThe SDK provides building blocks like Server, Tool, and JSON-RPC handlers to wire everything together.Designing tools as stable interfacesA key detail is how you design the tool interface.Instead of exposing raw API responses, you:separate external API logicdefine a clean domain modelexpose a structured resultThis keeps the interface stable and avoids leaking third-party data formats.The tool itself defines:a namea descriptionan input schema (JSON Schema)This schema acts as a contract, so AI systems know exactly how to call it.🛠️ How MCP works under the hoodMCP is built on JSON-RPC, but the Swift SDK abstracts it into strongly typed methods.Two core operations power the system:tools/list → discover toolstools/call → execute toolsHandlers map these methods to your implementation.Why stdio transport is enough to startIn this example, the server communicates via stdin/stdout.This makes it:easy to test locallysimple to integrate as a subprocessquick to prototype without infrastructureWhy this shift mattersThe bigger shift here is how we aren't just building a weather tool but how AI systems are evolving.Instead of building tightly coupled integrations, developers are moving toward reusable capabilities that can work across tools and systems.📚 Go DeeperIf you want to explore this further, AI Driven Swift Architecture by Walid SASSI and Dave Poirier walks through how to build structured AI workflows, integrate tools like MCP, and move beyond simple prompt-based approaches.🧑‍💻Build SwiftUI apps powered by Apple Foundation Models and on-device intelligence🛠️Apply MCP workflows to create AI-driven feature agents in real projects🔎 Master Clean Architecture, TDD, and modernization with Claude Code supportAI Driven Swift ArchitectureBuy now at $44.99💬 Let’s TalkWhat’s been your biggest friction point with AI coding tools so far?Reply and let me know. I’d love to hear what you’re running into.Advertise with usInterested in sponsoring this newsletter and reaching a highly engaged audience of tech professionals? Simply reply to this email and our team will get in touch with next steps.Cheers,Runcil Rebello,Editor-in-Chief, MobilePro*{box-sizing:border-box}body{margin:0;padding:0}a[x-apple-data-detectors]{color:inherit!important;text-decoration:inherit!important}#MessageViewBody a{color:inherit;text-decoration:none}p{line-height:inherit}.desktop_hide,.desktop_hide table{mso-hide:all;display:none;max-height:0;overflow:hidden}.image_block img+div{display:none}sub,sup{font-size:75%;line-height:0}#converted-body .list_block ol,#converted-body .list_block ul,.body [class~=x_list_block] ol,.body [class~=x_list_block] ul,u+.body .list_block ol,u+.body .list_block ul{padding-left:20px} @media (max-width: 100%;display:block}.mobile_hide{min-height:0;max-height:0;max-width: 100%;display:none;overflow:hidden;font-size:0}.desktop_hide,.desktop_hide table{display:table!important;max-height:none!important}.social_block .social-table{display:inline-block!important}}
Read more
  • 0
  • 0

Runcil Rebello
22 Apr 2026
7 min read
Save for later

MobilePro #214: Modern AI development, iOS 27, Android 17 Beta 4, and more…

Runcil Rebello
22 Apr 2026
7 min read
Mobile development blogs, tutorials and resources inside!Latest Mobile Dev Insights: iOS, Android, Cross-PlatformAdvertise with Us|Sign Up to the NewsletterMobilePro #214: Modern AI development, iOS 27, Android 17 Beta 4, and more…View the latest HubSpot Developer Platform updates in Spring SpotlightSee what's new for the HubSpot Developer Platform!Ship faster with AI coding tools like Cursor, Claude Code, and Codex. Build MCP-powered AI connectors, run serverless functions with support for UI extensions, and use date-based versioning to streamline roadmap planning.Learn moreHi ,Welcome to the 214th edition of MobilePro.AI coding tools like Claude Code and Cursor are quickly becoming part of everyday development workflows. They’re great for generating code, prototyping features, and speeding up iteration. But once you try to use them in a real project, the challenge shifts from writing code to getting these tools to work with the rest of your stack.That’s where things start to get complicated, and it’s also where a lot of the latest development work is focused.Before we get into that in more detail, here are a few stories from the mobile dev world that caught our attention this week:iOS 27 will add Liquid Glass controls and minor UI tweaksGoogle I/O 2026 sessions list highlights Android 17, AI, and cross-device UXAndroid 17 hits final beta with privacy and performance upgradesGemini arrives on macOS with native AI featuresLet's get started!The Integration Problem Behind Modern AI DevelopmentAI coding tools like Claude Code and Cursor are quickly becoming part of everyday development workflows. In practice, you start to see the same pattern emerge: tools work well in isolation but connecting them to real systems is where things get tricky.Updates like HubSpot’s Spring Spotlight for its Developer Platform reflect how teams are starting to tackle exactly this problem at the platform level.These tools are great for generating code, prototyping features, and speeding up iteration. But once you try to use them in a real project, the challenge shifts from writing code to getting these tools to work with the rest of your stack.The integration problemConsider an AI agent that needs to send Slack messages, read and send emails, and query a database. To make this work, you have to integrate each of these services manually.That usually means working directly with APIs, building wrappers around them, and exposing that functionality in a way the agent can use.These integrations are rarely generic. In many cases, they are intentionally constrained.For example, an email integration might avoid exposing destructive actions like deleting messages to reduce the risk of unintended side effects. As a result, the integration layer becomes highly specific to the needs of a particular application.Some frameworks offer prebuilt integrations, but even those are tied to a specific environment. Once everything is set up, the agent can perform useful actions, but only within that setup.The portability challengeThe real complexity shows up when you try to reuse that functionality somewhere else.Imagine you’ve built an agent inside Cursor that interacts with Slack, Gmail, and a database. Everything works well in that environment.Now suppose you want to bring the same capabilities into Claude Code. Even though the functionality is conceptually identical, the integrations cannot simply be reused as they were built specifically for the original environment.This means rewriting integration logic, adapting it to a new system, and testing it again. If you want to support additional environments like Copilot or other AI assistants, the same process repeats.And over time, the effort multiplies, even though the underlying functionality remains unchanged.💡 A different approach to integrationsThis is the problem that newer approaches such as the Model Context Protocol (MCP) are trying to address.Instead of embedding integrations directly into each tool, MCP introduces a separate layer where these capabilities can live. The idea is to implement the integration once and expose it through a standard interface.Any system that supports that interface can then use the same functionality without requiring a custom implementation.In practical terms, this means that capabilities like sending messages, querying data, or interacting with external services can be shared across tools. The focus shifts from rebuilding integrations to designing them in a way that they can be reused.Why this shift mattersAs AI-assisted development becomes more common, the bottleneck is moving away from code generation and toward system integration. Developers are spending less time writing individual functions and more time thinking about how different tools, services, and agents work together.This changes the nature of development work. It places more emphasis on designing workflows, managing context, and ensuring that different parts of the system can communicate reliably.Tools that support this kind of interoperability are becoming more relevant, especially as teams start combining multiple AI assistants and platforms in their day-to-day work.If you interested in going deeper into how these workflows actually come together in practice, check out Agentic Coding with Claude Code by Eden Marco.🧑‍💻Learn Claude Code as a development partner to build custom automations and agentic workflows.🛠️ Build and iterate on a Next.js application using Claude Code for AI-assisted development.🔎 Scale AI-assisted development with Claude Code while maintaining code quality.Agentic Coding with Claude CodeBuy now at $49.99This week’s news cornerWith that in mind, here are a few updates from the past week that show where mobile development is heading next.iOS 27 rumored to bring new design changes in two key areas: iOS 27 is set to be released on June 8. It may introduce a systemwide “Liquid Glass” slider. This will allow users to finely adjust transparency and contrast across the interface. Also, Apple will likely roll out small UI and UX refinements, continuing gradual improvements to the Liquid Glass design rather than making major changes.Google I/O 2026 sessions list teases major Android 17 highlights, AI, and Chrome: Google has posted its sessions list for Google I/O 2026 (May 19-20). It hints major updates across Android 17, AI, and Chrome, with a strong focus on new performance improvements, media features, and cross-device “Adaptive Everywhere” experiences. The event will also showcase advances in Google’s AI (including multimodal and robotics capabilities) and introduce new Chrome features, emphasizing AI-driven functionality across platforms.The Fourth Beta of Android 17: Android 17 has reached Beta 4, the final planned beta, marking a near-stable release for developers to test app compatibility, performance, and new APIs. It introduces stricter privacy, security, and memory management features, along with tools for detecting performance issues, as Google urges developers to prepare their apps and SDKs for the official release.Google's AI gives Apple's macOS a 'native' experience for sharing and more: Google has launched its Gemini AI app for macOS, offering a native desktop experience with features including quick access via shortcuts and the ability to share on-screen content for contextual assistance. This move builds on Google and Apple’s ongoing collaboration to integrate Gemini across Apple devices, enhancing AI capabilities while maintaining user privacy.👋 And that’s a wrap! We hope you enjoyed this edition ofMobilePro. If you have any suggestions and feedback, or would just like to say hi to us, please write to us. Just respond to this email!Advertise with usInterested in sponsoring this newsletter and reaching a highly engaged audience of tech professionals? Simply reply to this email and our team will get in touch with next steps.Cheers,Runcil Rebello,Editor-in-Chief, MobilePro*{box-sizing:border-box}body{margin:0;padding:0}a[x-apple-data-detectors]{color:inherit!important;text-decoration:inherit!important}#MessageViewBody a{color:inherit;text-decoration:none}p{line-height:inherit}.desktop_hide,.desktop_hide table{mso-hide:all;display:none;max-height:0;overflow:hidden}.image_block img+div{display:none}sub,sup{font-size:75%;line-height:0}#converted-body .list_block ol,#converted-body .list_block ul,.body [class~=x_list_block] ol,.body [class~=x_list_block] ul,u+.body .list_block ol,u+.body .list_block ul{padding-left:20px} @media (max-width: 100%;display:block}.mobile_hide{min-height:0;max-height:0;max-width: 100%;overflow:hidden;font-size:0}.desktop_hide,.desktop_hide table{display:table!important;max-height:none!important}}
Read more
  • 0
  • 0
Unlock access to the largest independent learning library in Tech for FREE!
Get unlimited access to 7500+ expert-authored eBooks and video courses covering every tech area you can think of.
Renews at €18.99/month. Cancel anytime
Runcil Rebello
15 Apr 2026
11 min read
Save for later

MobilePro #213: Working with Claude Code, Swift IDE support, React Native 0.85, and more…

Runcil Rebello
15 Apr 2026
11 min read
Mobile development blogs, tutorials and resources inside!Latest Mobile Dev Insights: iOS, Android, Cross-PlatformAdvertise with Us|Sign Up to the NewsletterMobilePro #213: Working with Claude Code, Swift IDE support, React Native 0.85, and more…Grow your mobile apps efficientlyWithout ads!Do you rely on paid ads for mobile growth? Don't the rising costs and limited visibility make it harder to scale?Insert Affiliate gives you another option.It lets you run an affiliate channel for your app, where partners, creators, or communities drive users via tracked links, and you can tie installs, purchases, and subscriptions back to the source.Compatible with: iOS and Android, Flutter, Unity and React Native (Discounts available)✔️ Clear visibility into revenue, including renewals and refunds.❌ No rebuilding your stack.Start tracking affiliate revenueHi ,Welcome to the 213th edition of MobilePro.AI in development continues to be a growing beast. We’ve moved from asking models for snippets to relying on them across larger parts of the workflow. Unfortunately, that also brings with it new challenges. Sessions get cluttered, context drifts, and outputs become inconsistent. Sure, code gets written faster now, but controlling how AI behaves inside the development process is a concern.That shift is reflected across this week’s updates. Swift is expanding into AI-friendly editors beyond Xcode. Meanwhile, React Native continues evolving its architecture and benchmarks like Android Bench are beginning to measure how well AI actually performs on real development tasks. At the same time, the idea of an AI coding stack is taking shape; orchestration, execution, and models all work together! That’s why this week’s tutorial focuses on using Claude Code as a structured development environment, and how managing context, memory, and workflows can turn AI from a helpful assistant into a reliable part of your stack.Before we move to the tutorial, here are some of the key news highlights from this week:Swift expands IDE support beyond Xcode to modern editors and AI toolsReact Native 0.85 ships new animation backend and key improvementsAI coding shifts toward composable multi-tool stacksGPT-5.4 and Gemini 3.1 Pro lead Android AI coding benchmarksLet's get started!Lessons Learned from Security Incidents in Mobile AppsJoin Security Researcher and Pentester, Jan Seredynski, on May 12 as he dissects real-world security incidents in banking, food delivery, and e-commerce.From face verification bypass to location spoofing, he'll break down the anatomy of a breach and what teams can do differently to address them.Register now📢 Important: MobilePro is Moving to SubstackWe’ll be moving MobilePro to Substack soon. From that point forward, all issues will come from packtmobilepro@substack.com.To ensure uninterrupted delivery, please whitelist this address in your mail client. No other action is required.You’ll continue receiving the newsletter on the same weekly cadence, and on Substack you’ll also gain more granular control over your preferences if you wish to adjust them later.Getting Started with Claude Code: From Setup to Real-World WorkflowsModern AI-powered development tools are evolving quickly, but getting real value from them requires more than just installation. You need to understand how they behave in practice, how to control them, configure them, and integrate them into your daily workflow.Claude Code is designed to be more than a coding assistant. It’s a configurable, extensible system that supports long-running development workflows through features like slash commands, memory, hooks, and skills. In this article, we’ll walk through how to move from basic setup to using Claude Code effectively in real-world scenarios.Controlling Claude Code with Slash CommandsOnce inside Claude Code, the primary way to interact with it is through slash commands. These commands give you direct control over sessions, context, and configuration. Some of the most important ones include:/clear: Resets the session completely/compact: Summarizes the conversation to reduce context size/config: Opens configuration settings/agents: Manages specialized sub-agents/models: Lists available modelsAs conversations grow, they can become inefficient or confusing, a phenomenon often called context rot. Commands like /clear and /compact help maintain performance and clarity over time. This is where context engineering becomes practical: you’re actively shaping what the model remembers and how it behaves.Bringing Claude Code into Your IDEWhile Claude Code can run in the terminal, most developers use it directly inside their IDE, especially tools like Cursor. Integrating Claude Code into your editor allows you to:View code changes in real timeWork with diffs more effectivelyKeep your workflow centralizedThis setup transforms Claude Code from a chat tool into a true development companion embedded in your environment.Automating Workflows with HooksHooks are one of the most powerful features in Claude Code. They allow you to run automated logic at specific points in the workflow. For example, you can trigger actions before or after a tool runs, when a user submits a prompt, and when Claude finishes generating output.A simple use case is a notification hook that plays a sound when Claude completes a response. While basic, it demonstrates how hooks can automate repetitive tasks and enforce consistency.More advanced use cases include running tests automatically, formatting code, blocking unsafe changes, and triggering sub-agents. Hooks are essential for building reliable, repeatable workflows.Memory: Making Claude Code PersistentClaude Code isn’t limited to a single session, it can retain structured context across projects using a memory system built around CLAUDE.md files. Here are the types of memory:User Memory: Personal preferences across all projectsProject Memory: Shared rules and context for a specific projectOrganization Policy: Company-wide rules and constraintsThese memory files are loaded hierarchically, meaning:Global preferences coexist with project-specific rulesMore specific instructions override broader onesWhy Memory MattersInstead of repeating instructions, you can store them once and reuse them automatically. This improves consistency, efficiency, and output quality. You can even initialize memory automatically using the /init command, which analyzes your codebase and generates a structured context file.Safe Experimentation with RewindAI-assisted coding encourages experimentation, but it also introduces risk. Claude Code addresses this with a built-in checkpointing system. Using /rewind, you can undo code changes, restore previous states, and explore alternative implementations safely. Each prompt that modifies files creates a checkpoint, allowing you to roll back changes without losing progress. This significantly reduces the cost of AI recovery, making development more forgiving and iterative.Extending Claude Code with SkillsSkills (formerly custom slash commands) allow you to encapsulate repeatable workflows into reusable commands. For example, you can create a skill that reviews changed files, generates a commit message, and executes Git commands. Skills are defined using simple Markdown files with structured prompts. They can also accept dynamic input using placeholders like $ARGUMENTS.Skills matter because they combine prompt engineering, tool execution, and context control. They enable you to build mini automation pipelines inside Claude Code, tailored to your workflow. For more advanced use cases, you can:Restrict allowed tools (principle of least privilege)Preload context using system commandsCombine retrieval and generationThis turns Claude Code into a programmable agent system rather than just an assistant.Best Practices for Working Effectively with Claude CodeWhile Claude Code is powerful out of the box, getting consistent and reliable results depends on how you use it. The following best practices will help you avoid common pitfalls and maximize productivity:Treat Context as a Limited Resource: Claude Code operates within a context window, so managing what it “remembers” is critical.Use /compact regularly to reduce noise in long sessionsUse /clear when switching tasks or domainsAvoid dumping unnecessary information into the conversationUse Memory Strategically, Not Excessively: Memory is powerful, but overusing it can backfire.Keep md files concise and specificStore only high-value, reusable information (coding standards, workflows, preferences)Avoid vague or redundant entriesSeparate Global and Project-Level Concerns: Take advantage of Claude Code’s layered memory system:Use user memory for personal habits and preferencesUse project memory for team conventions and architectureUse local memory for temporary overridesKeep Hooks Lightweight and Fast: Hooks run automatically and frequently, so performance matters.Prefer simple shell commands over heavy scriptsAvoid long-running processes inside hooksTest hooks independently before integratingValidate AI Output Before Trusting It: Even with strong context, Claude Code can make mistakes.Review diffs carefully before approving changesTest generated code, especially in critical pathsDon’t blindly accept commits or automation resultsMonitor Costs and Usage (When Using API Keys): If you’re using API-based billing:Check /cost regularlySet usage limits in the Anthropic consoleBe cautious with multi-agent workflowsClaude Code is not just about generating code, it’s about shaping how AI participates in your development process. By combining slash commands for control, hooks for automation, memory for persistence, rewind for safety, and skills for extensibility you can build workflows that are not only powerful but also predictable and scalable. The real value comes from understanding how these pieces fit together, and using them intentionally.Claude Code becomes significantly more powerful when you stop treating it like a chat assistant and start treating it like a programmable development environment. The difference lies in how you manage context, structure memory, and design your workflows. Master those, and Claude Code shifts from helpful to indispensable.If you want to learn more about agent coding, check out Agentic Coding with Claude Code by Eden Marco.🧑‍💻Learn Claude Code as a development partner to build custom automations and agentic workflows.🛠️ Build and iterate on a Next.js application using Claude Code for AI-assisted development.🔎 Scale AI-assisted development with Claude Code while maintaining code quality.Agentic Coding with Claude CodeBuy now at $49.99This week’s news cornerWith that in mind, here are a few updates from the past week that show where mobile development is heading next.Swift expands IDE support across modern editors and AI tools: Swift now supports a wider range of IDEs, including Cursor, VSCodium, AWS Kiro, and Google Antigravity, through its official extension on the Open VSX Registry, bringing first-class language features like debugging, refactoring, and test tooling beyond Xcode.React Native 0.85 is out: React Native 0.85 has released. This latest version comes with New Animation Backend and moves Jest preset to a dedicated package. It includes several other fixes and improvements including multiple CDP connections, native tabs on macOS, and request payload previews.AI coding stacks emerge as next phase of developer tooling: The modern AI coding ecosystem is no longer centered around a single tool but is emerging as a composable stack made up of orchestration (e.g., Cursor), execution (e.g., Claude Code), and model layers (e.g., OpenAI Codex). It highlights a growing need to evaluate and integrate multiple AI tools as part of their core development setup.Google updates best AI models for coding Android apps, Gemini & GPT 5.4 at the top: Google has updated its Android Bench rankings, with OpenAI’s GPT-5.4 and Gemini 3.1 Pro now tied as the top AI models for Android app development. The benchmark evaluates models on real Android tasks, though results may vary based on developer workflows and use cases.Let's shape a newsletter togetherWe’re running a quick survey to understand how you actually build with AI.Help us shape a newsletter that solves real workflow bottlenecks.Take the Survey📢 Important: MobilePro is Moving to SubstackWe’ll be moving MobilePro to Substack soon. From that point forward, all issues will come from packtmobilepro@substack.com.To ensure uninterrupted delivery, please whitelist this address in your mail client. No other action is required.You’ll continue receiving the newsletter on the same weekly cadence, and on Substack you’ll also gain more granular control over your preferences if you wish to adjust them later.👋 And that’s a wrap! We hope you enjoyed this edition ofMobilePro. If you have any suggestions and feedback, or would just like to say hi to us, please write to us. Just respond to this email!Advertise with usInterested in sponsoring this newsletter and reaching a highly engaged audience of tech professionals? Simply reply to this email and our team will get in touch with next steps.Cheers,Runcil Rebello,Editor-in-Chief, MobilePro*{box-sizing:border-box}body{margin:0;padding:0}a[x-apple-data-detectors]{color:inherit!important;text-decoration:inherit!important}#MessageViewBody a{color:inherit;text-decoration:none}p{line-height:inherit}.desktop_hide,.desktop_hide table{mso-hide:all;display:none;max-height:0;overflow:hidden}.image_block img+div{display:none}sub,sup{font-size:75%;line-height:0}#converted-body .list_block ol,#converted-body .list_block ul,.body [class~=x_list_block] ol,.body [class~=x_list_block] ul,u+.body .list_block ol,u+.body .list_block ul{padding-left:20px} @media (max-width: 100%;display:block}.mobile_hide{min-height:0;max-height:0;max-width: 100%;overflow:hidden;font-size:0}.desktop_hide,.desktop_hide table{display:table!important;max-height:none!important}}
Read more
  • 0
  • 0

Runcil Rebello
08 Apr 2026
10 min read
Save for later

MobilePro #212: Mitigating iOS security threats, iOS 26.5, Gemma 4, and more…

Runcil Rebello
08 Apr 2026
10 min read
Mobile development blogs, tutorials and resources inside!Latest Mobile Dev Insights: iOS, Android, Cross-PlatformAdvertise with Us|Sign Up to the NewsletterMobilePro #212: Mitigating iOS security threats, iOS 26.5, Gemma 4, and more…Hi ,Welcome to the 212th edition of MobilePro.Mobile development is evolving on two fronts at once: the platforms we build for are getting more sophisticated, and the systems we rely on are becoming more tightly controlled. Apple’s latest updates to StoreKit and its continued push with Liquid Glass show how both monetization and design are being refined at a deeper level, while changes from players like Anthropic highlight how quickly the rules around AI tooling and developer workflows can shift.At the same time, building modern apps isn’t just about features—it’s about resilience. This week’s article takes a step back from APIs and frameworks to focus on something equally critical: security. By breaking down common iOS attack techniques—from network interception to runtime manipulation—and mapping them to practical defenses, it gives you a clearer mental model for thinking like a defender and building apps that are not just functional, but fundamentally secure.Before we move to the tutorial, here are some of the key news highlights from this week:iOS 26.5 Beta enhances StoreKit for subscriptions, with fixes and a testing workaroundGemma 4 brings local agentic AI to Android with faster, more efficient on-device intelligenceApple expands Liquid Glass gallery with more third-party app showcasesAnthropic shifts Claude harnesses to pay-as-you-go, raising lock-in concernsLet's get started!Grow your mobile apps efficientlyWithout ads!Do you rely on paid ads for mobile growth? Don't the rising costs and limited visibility make it harder to scale?Insert Affiliate gives you another option.It lets you run an affiliate channel for your app, where partners, creators, or communities drive users via tracked links, and you can tie installs, purchases, and subscriptions back to the source.Compatible with: iOS and Android, Flutter, Unity and React Native (Discounts available)✔️ Clear visibility into revenue, including renewals and refunds.❌ No rebuilding your stack.Start tracking affiliate revenue📢 Important: MobilePro is Moving to SubstackWe’ll be moving MobilePro to Substack soon. From that point forward, all issues will come from packtmobilepro@substack.com.To ensure uninterrupted delivery, please whitelist this address in your mail client. No other action is required.You’ll continue receiving the newsletter on the same weekly cadence, and on Substack you’ll also gain more granular control over your preferences if you wish to adjust them later.Understanding common attack techniques in iOS security and mitigating themModern iOS security is no longer just about defending devices at the perimeter, it is about understanding how attacks originate, how they operate, and how different techniques combine to compromise systems. A practical way to approach security is to think like a defender: first identify where an attack starts, and then understand how it works. This dual perspective enables faster decision-making and more effective defenses.This article explores common attack techniques affecting iOS environments, from network-based threats to identity attacks, application vulnerabilities, and platform-level exploits. By connecting each threat to real-world behaviors and mitigation strategies, we build a clear map from technique → defense.Network attacks: intercepting and disrupting communicationNetwork attacks target data in transit between devices and services.Man-in-the-Middle (MITM) attacksMITM attacks occur when an attacker intercepts communication between a user and a server. Common methods include rogue Wi-Fi hotspots, downgrade attacks, and fake network infrastructures.Modern iOS protections such as TLS, HTTPS enforcement, and encrypted DNS reduce these risks, but they do not eliminate them entirely. Applications must still enforce certificate pinning, strong TLS configurations, and end-to-end encryption.DNS hijackingDNS hijacking redirects users to malicious destinations by manipulating domain resolution. Attackers may poison DNS caches, spoof responses, and compromise infrastructure.Mitigations include DNSSEC (ensures authenticity of DNS responses) and Encrypted DNS (DoH/DoT) for secure transport.Denial-of-Service (DoS)DoS attacks aim to disrupt availability. On iOS, these are often caused by input parsing bugs, UI crashes, and wireless protocol vulnerabilities.Unlike traditional large-scale floods, many iOS DoS incidents exploit specific software weaknesses, which are typically patched through updates.Identity and trust attacksThese attacks exploit trust relationships, either by deceiving users or manipulating system trust mechanisms.Authentication attacksAttackers attempt to gain access through phishing proxies, credential stuffing, SIM swapping, and OAuth misconfigurations.A compromised device can quickly lead to account takeover, especially if passcodes or credentials are exposed.Elevation of privilegeThese attacks involve chaining vulnerabilities to execute code, escape app sandbox, and gain system-level access.Modern iOS defenses (sandboxing, code signing) make this difficult, but sophisticated attackers can still succeed using zero-day exploits.URL scheme hijackingCustom URL schemes can be abused to intercept sensitive data such as OAuth tokens. This is why universal links (HTTPS-based) are preferred and apps must validate redirects and parameters.Application surface and data attacksThese attacks exploit weaknesses in how applications handle data and input.Injection attacksInjection occurs when untrusted input is treated as executable logic. Examples include malicious deep links, unsafe WebView content, and improper query construction. The key issue is trusting user input without validation.Configuration attacksAttackers may trick users into installing malicious configuration profiles, rogue certificates, and fake MDM enrollments. These attacks rely heavily on social engineering rather than technical exploits.Insecure data storageCommon mistakes include storing sensitive data in plaintext, logging credentials, and using insecure storage mechanisms. iOS provides strong protections (Keychain, Secure Enclave), but misuse can negate these benefits.Clipboard hijackingMalicious apps may monitor or modify clipboard data to steal OTPs, replace wallet addresses, and capture credentials.Code integrity and platform exploitsAt a deeper level, attackers attempt to break the integrity of applications and the platform itself.Reverse engineering and code tamperingAttackers analyze apps to understand logic, identify vulnerabilities, and modify behavior. Tools like Frida and IDA make this easier, especially on jailbroken devices.App repackingA legitimate app is modified and redistributed to steal data and inject malicious functionality. This is mitigated on standard iOS devices through strict code signing and App Store controls.Runtime manipulationInstead of modifying the app binary, attackers hook functions at runtime, alter memory, and bypass checks.Side channel attacksSensitive data may be inferred through timing differences, power usage, and cache behavior. These attacks do not break encryption directly but exploit observable patterns.Physical attacksWhen attackers have physical access, they may attempt passcode guessing, use forensic tools, and exploit hardware vulnerabilities.How to mitigate these iOS security threatsTo effectively defend against these diverse attack vectors, organizations and developers should adopt a layered, proactive approach.Strengthen Identity and AccessUse passkeys and strong authentication methodsEnforce multi-factor authentication (prefer device-based over SMS)Avoid password reuseSecure network communicationsEnforce HTTPS and strong TLS configurationsImplement certificate pinning where appropriateUse encrypted DNS (DoH/DoT)Treat all input as untrustedValidate and sanitize all external inputUse allowlists instead of blocklistsAvoid dynamic execution of user-controlled dataProtect data at restStore secrets in the KeychainUse strong file protection classesAvoid logging sensitive informationReduce attack surfaceRemove unused features and permissionsRestrict entitlementsAvoid unnecessary third-party dependenciesEnforce secure app distributionUse official channels (App Store, TestFlight)Monitor for repackaged or counterfeit appsValidate app integrity using tools like App AttestHarden against runtime attacksImplement runtime integrity checksDetect debugging or hooking attemptsMove critical logic to the serverManage devices and profiles carefullyAvoid installing unknown configuration profilesVerify MDM sourcesRestrict enterprise certificatesKeep systems updatedApply OS and app updates promptlyPatch known vulnerabilities quicklyMonitor for emerging threatsBuild user awarenessTrain users to recognize phishing and social engineeringEncourage cautious behavior with links, downloads, and promptsPromote secure handling of devices and dataEffective iOS security is not about any single defense—it is about understanding how attacks originate and how they unfold. By pairing origin (internal vs external) with technique (network, identity, application, or platform), defenders can better assess risks and deploy targeted controls.In today’s environment—where personal devices, cloud services, and remote access blur traditional boundaries—security must be layered, adaptive, and user-aware. The organizations that succeed are those that continuously ask:Where could this attack start?How would it work?What control breaks the chain?Answer those questions consistently, and your defenses become not only stronger—but smarter.If you want to learn more about iOS security, check out iOS Security Through Defensive Techniques by Deya Eldeen Elkhawaldeh and Dave Poirier.🧑‍💻Harden apps against iOS attack paths with validation, tamper resistance, runtime checks and more.🛠️Build a strong iOS security baseline with threat modeling, privacy, and safe data handling.🔎Protect sensitive data using correct cryptography, secure storage, and hardware backed keys.iOS Security Through Defensive TechniquesBuy now at $44.99This week’s news cornerWith that in mind, here are a few updates from the past week that show where mobile development is heading next.iOS 26.5 is out: iOS and iPadOS 26.5 beta (via Xcode 26.5) adds new StoreKit capabilities for handling subscription pricing terms, billing plans, and entitlement metadata, especially for monthly plans with 12-month commitments. There’s a known StoreKitTest issue affecting SKTestSession in unit tests (with a workaround), and a bug with certain wallpapers failing to install/remove has been fixed.Gemma 4: The new standard for local agentic intelligence on Android: Gemma 4 brings local, agentic AI to Android, enabling on-device intelligence and offline AI-powered coding in Android Studio with strong reasoning and tool-calling capabilities. It powers the next-gen Gemini Nano, offering faster, more efficient performance, while giving developers a privacy-focused, cost-effective way to build and ship AI features locally.Apple showcases apps using Liquid Glass in new developer gallery: Apple has refreshed its developer gallery to highlight more third-party apps adopting the Liquid Glass design, showcasing smoother, more responsive UI experiences across Apple platforms. The updated gallery features apps like Carrot Weather and Denim, reflecting ongoing refinements by both Apple and developers since the design’s debut.Anthropic’s harness shakeup “just fragments workflows,” developers warn: Anthropic has removed Claude subscription support for third-party AI harnesses like OpenClaw, shifting developers to pay-as-you-go billing due to infrastructure demands. Developers warn this move fragments workflows, reduces portability, and increases vendor lock-in, sparking concerns about control and flexibility in the AI ecosystem.📢 Important: MobilePro is Moving to SubstackWe’ll be moving MobilePro to Substack soon. From that point forward, all issues will come from packtmobilepro@substack.com.To ensure uninterrupted delivery, please whitelist this address in your mail client. No other action is required.You’ll continue receiving the newsletter on the same weekly cadence, and on Substack you’ll also gain more granular control over your preferences if you wish to adjust them later.👋 And that’s a wrap! We hope you enjoyed this edition ofMobilePro. If you have any suggestions and feedback, or would just like to say hi to us, please write to us. Just respond to this email!Advertise with usInterested in sponsoring this newsletter and reaching a highly engaged audience of tech professionals? Simply reply to this email and our team will get in touch with next steps.Cheers,Runcil Rebello,Editor-in-Chief, MobilePro*{box-sizing:border-box}body{margin:0;padding:0}a[x-apple-data-detectors]{color:inherit!important;text-decoration:inherit!important}#MessageViewBody a{color:inherit;text-decoration:none}p{line-height:inherit}.desktop_hide,.desktop_hide table{mso-hide:all;display:none;max-height:0;overflow:hidden}.image_block img+div{display:none}sub,sup{font-size:75%;line-height:0}#converted-body .list_block ol,#converted-body .list_block ul,.body [class~=x_list_block] ol,.body [class~=x_list_block] ul,u+.body .list_block ol,u+.body .list_block ul{padding-left:20px} @media (max-width: 100%;display:block}.mobile_hide{min-height:0;max-height:0;max-width: 100%;overflow:hidden;font-size:0}.desktop_hide,.desktop_hide table{display:table!important;max-height:none!important}}
Read more
  • 0
  • 0

Runcil Rebello
01 Apr 2026
10 min read
Save for later

MobilePro #211: Building Apps with Lovable, WWDC 2026, Firebase Studio Migration, and more…

Runcil Rebello
01 Apr 2026
10 min read
Mobile development blogs, tutorials and resources inside!Latest Mobile Dev Insights: iOS, Android, Cross-PlatformAdvertise with Us|Sign Up to the NewsletterMobilePro #211: AI in Development, What's new in Swift, iOS, and Android and more…Hi ,Welcome to the 211th edition of MobilePro.AI is becoming less of a separate tool and more of a built-in layer in how we write mobile apps. Instead of jumping between your IDE and a chatbot, you can now generate code, debug issues, and refactor entire files directly inside Xcode or Android Studio. But as these tools become more integrated, using them effectively isn’t just about prompting, it’s about understanding how they actually work under the hood. This week’s article breaks that down with a practical mental model, explaining concepts like tokens, context windows, and attention in a way that helps you get faster, more reliable results while building mobile apps.At the same time, the broader mobile ecosystem is shifting just as quickly. Apple is exploring a more open and competitive future for Siri, potentially bringing it closer to ChatGPT-level intelligence, while Android continues to push performance and new desktop-style multitasking experiences. With both platforms and workflows evolving in parallel, knowing how to work with AI, not just use it, is quickly becoming a core skill for mobile developers.Before we move to the tutorial, here are some of the key news highlights from this week:Swift 6.3 released with Android SDK, improved C interoperability, and better cross-platform toolingApple plans major Siri overhaul in iOS 27 with chatbot-style experience and deeper AI integrationAndroid 17 Beta 3 reaches platform stability with desktop-style multitasking and floating windowsiOS 26.5 Beta introduces Maps updates, RCS encryption, and improved third-party integrations in the EUXcode tip: automate moving DEBUG builds to /Applications using simple .xcconfig changesLet's get started!📢 Important: MobilePro is Moving to SubstackWe’ll be moving MobilePro to Substack soon. From that point forward, all issues will come from packtmobilepro@substack.com.To ensure uninterrupted delivery, please whitelist this address in your mail client. No other action is required.You’ll continue receiving the newsletter on the same weekly cadence, and on Substack you’ll also gain more granular control over your preferences if you wish to adjust them later.Using a practical mental model to understand AI in mobile developmentAI tools are now built directly into mobile development workflows. Instead of switching between your IDE and a separate chatbot, you can generate code, explain errors, refactor files, and write tests without leaving Xcode or Android Studio. But to get consistent results, you need to understand what the model is doing with your input. This article gives you a practical mental model of how large language models (LLMs) process prompts, why tokens matter, and how that impacts speed, cost, and code quality when building mobile apps.Why AI inside the IDE matters for mobile developersYou no longer need to open in a separate tab these days. It now lives right inside tools like Xcode and Android Studio, where you write and ship code. This changes how developers work. Mobile development runs on tight feedback loops: build, run, test, and repeat. You also deal with limited context, such as small screens, partial logs, incomplete stack traces, and strict performance constraints. To use AI effectively, you do not need to delve deep into the AI theory. You need a usable mental model that helps you predict what the model will do and how to work with it.The one breakthrough that made this possibleModern AI coding tools are powered by transformer-based language models. The key breakthrough was the transformer architecture, introduced in the research paper Attention Is All You Need (2017). Transformers use a mechanism called attention to understand relationships across long inputs. Instead of processing text strictly line by line, attention helps the model decide what parts of the input matter most. This is what allows AI tools to reason about entire files, functions, and call chains. That is also why AI can assist with real code tasks like refactoring, debugging, and writing tests, not just autocomplete.Tokens—the unit AI actually works withLLMs do not read words the way humans do. They read tokens. A token is a unit of text the model processes, and it is not always a full word. Tokens can be complete words, parts of words, punctuation, symbols, whitespace, or code fragments. When you paste a Swift file, write a prompt, or ask for a refactor, the model first converts that input into tokens. The model then generates its output token by token.This is the key mental shift: tokens, not prompts, are the real interface between you and the model. Everything you send is a token sequence, and every output is also a token sequence.Why tokens matter in mobile developmentTokens are not an abstract detail. They directly affect how usable AI is inside a mobile development workflow. Let’s take a look at some of the major reason tokens matter.Tokens affect costMost AI APIs charge based on how many tokens you send (input) and how many tokens the model generates (output). If you paste large files repeatedly or write overly long prompts, cost grows quickly.Tokens affect latencyMore tokens usually mean slower responses. In an IDE workflow, speed matters. If an AI suggestion takes too long, developers stop using it and go back to manual work.Tokens consume the context windowEvery model has a maximum amount of text it can consider at once. That limit is measured in tokens. If you spend that budget on boilerplate, duplicated logs, or unnecessary explanations, the model has less room to see the important parts of your codebase.This matters for mobile developers because many projects include large UI files, generated code, long JSON models, and repetitive patterns. Inefficient prompts waste both time and money.NoteEvery time you send a prompt, you are budgeting the model’s attention.Writing token-efficient promptsToken efficiency is not about making prompts short. It is about making them dense and useful. Here are practical rules that work well in mobile development:Be precise rather than verbose: State the task and the expected output. Avoid long background paragraphs unless they change the requirements.Remove redundant explanations: The model already understands what common mobile concepts are. You do not need to explain what a ViewModel is or what MVVM means unless your project uses a non-standard version.Structure prompts like code comments, not essays: Use bullet points, constraints, and direct instructions. This reduces tokens while improving clarity.Let’s look at an example approach to understand this better.Instead of writing a prompt like the following:“I need you to create a function that takes two integer parameters and returns their sum, and make sure it works correctly and follows best practices.”Write something like this:“Swift: write add(a:b:) -> Int. Two ints in, sum out. Add unit test.”This is shorter, clearer, and easier for the model to follow.CautionOver-compressing can reduce clarity. If the prompt becomes vague, the model may guess your intent. The goal is efficient clarity, not minimal length.AI inside IDEs rewards structured thinking. Tokens control speed, cost, and output quality. Better results come from better token discipline, not longer prompts.AI can make mobile development faster, but only if you treat it like part of your engineering workflow, not a magic shortcut. The more you understand how models process input through tokens and context limits, the easier it becomes to get useful answers with less trial and error. Keep your prompts structured, focus on what matters, and avoid wasting the model’s attention on noise. With good token-discipline, AI becomes a reliable assistant for writing, fixing, and improving mobile code inside the IDE.If you want to learn more about AI in mobile development, check out AI Driven Swift Architecture by Walid Sassi and Dave Poirier.🧑‍💻 Master Clean Architecture, TDD, and modernization with Claude Code support🛠️Build SwiftUI apps powered by Apple Foundation Models and on-device intelligence🔎 Apply MCP workflows to create AI-driven feature agents in real projectsAI Driven Swift ArchitectureBuy now at $42.74This week’s news cornerWith that in mind, here are a few updates from the past week that show where mobile development is heading next.Swift 6.3 is out: Swift 6.3 has released. With this new release, Swift is expanding into new domains and is improving developer ergonomics. It provides more flexible C interoperability, improvements to cross-platform build tooling, improvements for using Swift in embedded environments, and an official Swift SDK for Android. Swift SDK being the most notable feature allows developers to build native Android applications using Swift.5+ Things to Know About the Siri Chatbot Coming in iOS 27: Apple is set to overhaul Siri in iOS 27 with a full chatbot-style experience, enabling natural conversations, complex tasks, and deeper system integration, bringing it closer to tools like ChatGPT and Gemini. The new Siri will include a standalone app, enhanced capabilities (like content generation, file analysis, and app control), and tighter integration across Apple devices and services. It will likely be powered partly by Google’s Gemini models, with optional support for third-party AI chatbots, while still emphasizing privacy and controlled memory.Android 17 Beta 3 is out: Android 17 Beta 3 introduces full desktop-style multitasking with floating app windows (“Bubbles”) and reaches platform stability. It also adds UI improvements, better widgets on external displays, and enhanced accessibility and customization features.iOS 26.5 Beta is out: iOS 26.5 Beta 1 adds features like suggested places and upcoming ads in Maps, along with reintroducing end-to-end encryption for RCS messaging. It also includes EU-focused updates for better third-party device integration and smaller system improvements.How to auto-move Xcode DEBUG builds to Applications: If you’ve been manually moving Xcode DEBUG builds to /Applications just to make features like App Intents work, there’s a much simpler way. By tweaking a few .xcconfig settings (DEPLOYMENT_LOCATION, DSTROOT, INSTALL_PATH), Xcode can handle everything automatically—no more post-build scripts or cleanup headaches. A quick, practical tip worth checking out if you work with Xcode and Shortcuts integrations.📢 Important: MobilePro is Moving to SubstackWe’ll be moving MobilePro to Substack soon. From that point forward, all issues will come from packtmobilepro@substack.com.To ensure uninterrupted delivery, please whitelist this address in your mail client. No other action is required.You’ll continue receiving the newsletter on the same weekly cadence, and on Substack you’ll also gain more granular control over your preferences if you wish to adjust them later.👋 And that’s a wrap! We hope you enjoyed this edition ofMobilePro. If you have any suggestions and feedback, or would just like to say hi to us, please write to us. Just respond to this email!Advertise with usInterested in sponsoring this newsletter and reaching a highly engaged audience of tech professionals? Simply reply to this email and our team will get in touch with next steps.Cheers,Runcil Rebello,Editor-in-Chief, MobilePro*{box-sizing:border-box}body{margin:0;padding:0}a[x-apple-data-detectors]{color:inherit!important;text-decoration:inherit!important}#MessageViewBody a{color:inherit;text-decoration:none}p{line-height:inherit}.desktop_hide,.desktop_hide table{mso-hide:all;display:none;max-height:0;overflow:hidden}.image_block img+div{display:none}sub,sup{font-size:75%;line-height:0}#converted-body .list_block ol,#converted-body .list_block ul,.body [class~=x_list_block] ol,.body [class~=x_list_block] ul,u+.body .list_block ol,u+.body .list_block ul{padding-left:20px} @media (max-width: 100%;display:block}.mobile_hide{min-height:0;max-height:0;max-width: 100%;overflow:hidden;font-size:0}.desktop_hide,.desktop_hide table{display:table!important;max-height:none!important}}
Read more
  • 0
  • 0

Runcil Rebello
25 Mar 2026
10 min read
Save for later

MobilePro #210: Building Apps with Lovable, WWDC 2026, Firebase Studio Migration, and more…

Runcil Rebello
25 Mar 2026
10 min read
Mobile development blogs, tutorials and resources inside!Latest Mobile Dev Insights: iOS, Android, Cross-PlatformAdvertise with Us|Sign Up to the NewsletterMobilePro #210: Building Apps with Lovable, WWDC 2026, Firebase Studio Migration, and more…Hi ,Welcome to the 210th edition of MobilePro.Building apps is starting to feel very different. Not long ago, creating something like a Kanban board meant wiring up UI, backend, and state management step by step. Now, tools like Lovable let you go from idea to working app in minutes, generating both frontend and backend from a simple prompt. It’s a shift toward a more conversational way of building software — one where the barrier to getting started is lower than ever.At the same time, the ecosystem around us continues to evolve just as quickly. Google is already moving developers away from Firebase Studio toward new AI-first tools, Android is introducing benchmarks to evaluate how well AI actually performs in real-world development tasks, and WWDC 2026 is expected to double down on Apple Intelligence and new APIs. Even cross-platform tooling is expanding into new territories like WebAssembly and Linux. In a world where both the tools and the platforms are changing this fast, understanding how to use these new AI-driven workflows effectively becomes just as important as knowing how to code — which is exactly what this week’s tutorial explores with building apps using Lovable.Before we move to the tutorial, here are some of the key news highlights from this week:Firebase Studio migration guide prepares developers for platform shutdownApple announces dates for WWDC 2026 developer conferenceAndroid introduces benchmark to improve AI-assisted app developmentAvalonia MAUI Preview 1 brings .NET MAUI apps to Linux and WebLet's get started!📢 Important: MobilePro is Moving to SubstackWe’ll be moving MobilePro to Substack soon. From that point forward, all issues will come from packtmobilepro@substack.com.To ensure uninterrupted delivery, please whitelist this address in your mail client. No other action is required.You’ll continue receiving the newsletter on the same weekly cadence, and on Substack you’ll also gain more granular control over your preferences if you wish to adjust them later.🚀 Agentic AI for Enterprise Transformation WorkshopThe AI skills gap is widening.Here's how you can close it for yourself.In 12 months, the people who understand agentic AI end-to-end will be the ones leading teams, driving strategy, and making the calls. This April 18–19 workshop is your shortcut, two intensive days on the Microsoft stack where you design, build, and deploy a real enterprise AI agent from scratch. The window is open. Not for long.Get 40% off using code LIVE40Reserve Your SpotBuilding Apps with LovableIn this article, we will explore a popular tool for creating beautiful front ends: Lovable.We’ll start by building an application from scratch: a Kanban board. The app we create will be fully functional, but it will also go beyond just building a frontend. We’ll use Supabase to handle and store data in the backend.Lovable allows us to build both the frontend and the backend from a chat interface—without having to interact with the code directly. This makes developing and deploying an app accessible to everyone, even one without much programming experience.Before AI, researching and building an app like a Kanban board would have taken a programmer about a week. Now, with the right guidance, we can create the initial version in 10 to 30 minutes.First Lovable ProjectLet’s build a simple app using Lovable, and we will briefly walk through its interface, which already looks intuitive. At the center, you can provide a prompt describing what your app should do.You can attach a design image or import from Figma which Lovable will use to guide the generation of your application’s layout and style:In terms of privacy, you can choose between Public, Workspace or Personal. But for the free account, you can only choose Public.Further down, you’ll see projects created by the community.“Remixes” indicate that a public project has been used as a base for creating something new, and you’ll notice that some projects have been remixed many times.Now, let’s go back to our goal: building a Kanban board to manage tasks. For this, we’ll attach an image of a Trello Kanban board (you can use your preferred image).With the attached image, enter a prompt.Go ahead and create the new project. Initially, you’ll see Lovable start processing, this might take a few minutes depending on the complexity of your project.On the left-hand side, you’ll find the chat interface where you can interact with Lovable and request changes. On the right-hand side, youshould ideally see a preview of your app.NoteSometimes this preview might not load due to an error, but you can just ask Lovable to fix it. Often, the issue is something small, like a missing package which Lovable can fix automatically.Your Kanban board should appear in the preview! You can try adding a new task (e.g., Read book) and see it appear on the board. In my case, I can even move tasks around.Now, let’s understand what’s happening under the hood. All the generated code is hidden by default, but you can click on </> Code at the top to see it.This reveals the entire codebase of your app, and you can even edit it if you wish, though I don’t recommend doing that just yet.Lovable also allows you to request additional changes directly through chat. It’s quite intuitive, but there are a few more features worth noting.Chat Mode (enable it by clicking on it) lets you have conversations with Lovable without applying changes to the project:Edit Mode allows you to make changes through the visual interface. For example, you can rename the board, adjust text size, or modify UI elements:In the above, the background color was changed to ‘zinc-500’.These changes arerecorded as Visual Edits and don’t consume any prompt messages which is useful if you’re running low on them.There are also prompt edits where you prompt the AI to edit the particular area you have pointed out, and that consumes credits.Best Practices When Using LovableLovable is a powerful and user-friendly tool that makes creating, customizing, and deploying applications straightforward, even without deep coding experience. To get the most out of it, you can follow these best practices:Start with a clear software specificationDefine features, scope, and constraints before touching Lovable. This ensures your outputs are aligned from the start.Break work into phases (spec → to-do → prompts)Structure your build into logical steps instead of doing everything at once. This makes development easier to manage and debug.Use reference designs to guide UI generationAttach images or Figma designs to improve layout and styling accuracy. This reduces back-and-forth iterations.Use History and export your project earlyTrack changes and revert when needed using History. Exporting ensures you retain control over your code outside Lovable.Be precise and intentional with prompts (credits are limited)Each prompt costs credits, so vague instructions can quickly waste them. Clear prompts reduce rework and improve output quality.Use Plan Mode before generating codePlan Mode lets you brainstorm and debug without burning credits. Prompt Lovable to ask clarifying questions before it writes a single line.Set up Knowledge Files for persistent contextAdd coding standards and project architecture to Workspace/Project Knowledge — Lovable injects these into every prompt automatically.Scope your prompts with guardrailsAlways specify the page, expected behavior, and what not to touch: "implement X on /settings, don't modify component Y."Edit visually for freeUse Visual Edits mode to tweak text, colors, and spacing without spending credits.If you want to learn more about AI coding, check out Vibe Coding with Cursor, Windsurf, and Lovable by Greg Lim.🧑‍💻 Master the emerging vibe coding mindset for AI-assisted software development🛠️ Build and deploy complete applications using Cursor, Windsurf, and Lovable🔎 Apply real-world development practices including specifications, testing, version control, and CI-style workflowsVibe Coding with Cursor, Windsurf, and LovableBuy now at $34.99This week’s news cornerWith that in mind, here are a few updates from the past week that show where mobile development is heading next.Firebase Studio migration guide prepares developers for platform shutdown: Google is sunsetting Firebase Studio by March 2027, and developers are being guided to migrate their projects to Google Antigravity (for code-first workflows) or Google AI Studio (for prompt-based prototyping). While the development environment is going away, core Firebase services like Firestore and Authentication will continue to work.Apple announces dates for WWDC 2026 developer conference: Apple has announced WWDC 2026 will take place from June 8–12, where it will unveil the next generation of iOS, iPadOS, macOS, and developer tools. The event is expected to highlight major AI advancements, especially around Siri and Apple Intelligence, alongside new APIs and platform capabilities.Android introduces benchmark to improve AI-assisted app development: Google has introduced Android Bench, a new benchmark and leaderboard designed to evaluate how well AI models handle real-world Android development tasks. This gives devs betters visibility into which AI tools actually understand Android-specific challenges, like Gradle configs, UI components, and API changes, leading to more reliable AI-assisted coding and higher-quality apps.Avalonia MAUI Preview 1 brings .NET MAUI apps to Linux and Web: Avalonia has released Preview 1 of its .NET MAUI backend. It enables MAUI apps to run on Linux and WebAssembly and offers a choice between native and consistent cross-platform (drawn) UIs. The release also improves Avalonia 12 with new controls and APIs, and shows strong compatibility through real-world app ports with minimal changes. With this, Devs get more flexibility to target additional platforms like Linux and WebAssembly with minimal changes, while choosing between native or consistent cross-platform UI experiences.Google pushes Android apps toward desktop with new design guidance: Google has introduced new Desktop Experience design guidance and refreshed Android design resources to help developers build adaptive apps for larger screens, multitasking, and non-touch inputs like keyboard and mouse. The update focuses on improving productivity through higher information density and better support for desktop-style interactions.Teaching Claude to QA mobile apps with agentic testing workflows: In this article, Christopher S. Meiklejohn shares how they built an AI-powered QA system using Claude to automatically test a cross-platform mobile app, revealing stark differences between Android’s flexible tooling and iOS’s restrictive ecosystem. You get to learn practical lessons on automation, debugging discipline, and the realities of shipping across platforms. Read more to see how it all works in practice.📢 Important: MobilePro is Moving to SubstackWe’ll be moving MobilePro to Substack soon. From that point forward, all issues will come from packtmobilepro@substack.com.To ensure uninterrupted delivery, please whitelist this address in your mail client. No other action is required.You’ll continue receiving the newsletter on the same weekly cadence, and on Substack you’ll also gain more granular control over your preferences if you wish to adjust them later.👋 And that’s a wrap! We hope you enjoyed this edition ofMobilePro. If you have any suggestions and feedback, or would just like to say hi to us, please write to us. Just respond to this email!Advertise with usInterested in sponsoring this newsletter and reaching a highly engaged audience of tech professionals? Simply reply to this email and our team will get in touch with next steps.Cheers,Runcil Rebello,Editor-in-Chief, MobilePro*{box-sizing:border-box}body{margin:0;padding:0}a[x-apple-data-detectors]{color:inherit!important;text-decoration:inherit!important}#MessageViewBody a{color:inherit;text-decoration:none}p{line-height:inherit}.desktop_hide,.desktop_hide table{mso-hide:all;display:none;max-height:0;overflow:hidden}.image_block img+div{display:none}sub,sup{font-size:75%;line-height:0}#converted-body .list_block ol,#converted-body .list_block ul,.body [class~=x_list_block] ol,.body [class~=x_list_block] ul,u+.body .list_block ol,u+.body .list_block ul{padding-left:20px} @media (max-width: 100%;display:block}.mobile_hide{min-height:0;max-height:0;max-width: 100%;overflow:hidden;font-size:0}.desktop_hide,.desktop_hide table{display:table!important;max-height:none!important}}
Read more
  • 0
  • 0
Runcil Rebello
18 Mar 2026
10 min read
Save for later

MobilePro #209: Animations in React Native, Room 3.0, Android kernel optimization, and more…

Runcil Rebello
18 Mar 2026
10 min read
Mobile development blogs, tutorials and resources inside!Latest Mobile Dev Insights: iOS, Android, Cross-PlatformAdvertise with Us|Sign Up to the NewsletterMobilePro #209: Animations in React Native, Room 3.0, Android kernel optimization, and more…Hi ,Welcome to the 209th edition of MobilePro.Mobile apps need to work, yes, but they also need to feel right. More often than not, that comes down to the small details: how smooth a transition feels, whether an interaction responds instantly, or whether an animation drops a frame at the wrong moment. This week’s updates across the ecosystem point in that same direction. iOS 27 is expected to prioritize stability over visual changes, Android is seeing performance boosts at the system level, and tools like Room 3.0 are evolving to make apps more consistent across platforms.At the same time, we’re seeing deeper shifts in how apps are expected to behave. Samsung’s push toward AI-first interactions suggests a future where apps may need to expose functionality beyond just UI, while platform improvements continue to raise the baseline for responsiveness and polish. In that kind of environment, performance isn’t a “nice-to-have” but an intrinsic part of the user experience. That’s exactly why this week’s tutorial focuses on mastering animations in React Native with Reanimated, and how moving work to the UI thread can make the difference between something that works and something that feels smooth.Before we move to the tutorial, here are some of the key news highlights from this week:iOS 27 may prioritize stability and performance over new design changesRoom 3.0 brings Kotlin Multiplatform and modern APIs to Android persistenceAndroid kernel optimization could deliver major performance gains across devicesSamsung pushes AI deeper into Android, reshaping how apps are designedLet's get started!📢 Important: MobilePro is Moving to SubstackWe’ll be moving MobilePro to Substack soon. From that point forward, all issues will come from packtmobilepro@substack.com.To ensure uninterrupted delivery, please whitelist this address in your mail client. No other action is required.You’ll continue receiving the newsletter on the same weekly cadence, and on Substack you’ll also gain more granular control over your preferences if you wish to adjust them later.🚀 Build & Deploy OpenClaw LIVE MasterclassWe’re hosting a hands-on workshop where you’ll learn how to architect, secure, and run OpenClaw in production, turning AI into a real business engine. You’ll see how founders are automating revenue-driving workflows, managing API costs smartly, and building scalable AI systems that actually work.This is not theory. You’ll build alongside us.🎟 For a limited time, get 40% off your ticket using code OC40Book nowMastering Animations in React Native with ReanimatedAnimations can be used to improve the user experience in mobile applications. They usually help users to quickly recognize that something has changed or help them focus on what is important. They improve the user experience and user satisfaction. Also, animations are simply fun to look at. For example, the heartbeat reaction in the Instagram app when you like a post or the Snapchat ghost animation when refreshing a page.In the React Nativeworld, we have a lot of libraries and approaches to animate our components, including the built-in Animated API. But in this article, we would look at a library called React Native Reanimated and compare it with the Animated API to learn why it is the best choice.Animated APIThe Animated API is the most common tool used to animate components in React Native. It has a set of methods that help you to create an animation object, control its state, and process it. The main benefit is that it can be used with any component, and not just animated components such as View or Text.But, at the same time, this API has been implemented in the old architecture of React Native. Asynchronous communications between JavaScript and UI Native threads are used with the Animated API, delaying updates by at least one frame and lasting approximately 16 ms. Sometimes, the delay may last even longer if the JavaScript thread is running React's diff algorithm and comparing or processing network requests simultaneously. The problem of dropped or delayed frames can be solved with the React Native Reanimated library, which is based on the new architecture and processes all business logic from the JavaScript thread in the UI thread.React Native ReanimatedReact Native Reanimated canbe utilized to provide a more exhaustive abstraction of the Animated API to use with React Native. It provides an imperative API with multistage animations and custom transitions, while at the same time providing a declarative API that can be used to describe simple animations and transitions in a similar way to how CSS transitions work. It's built on top of React Native Animated and reimplements it on the Native thread. This allows you to use the familiar JavaScript language while taking advantage of the most high performance and simple API.Furthermore, React Native Reanimated defines worklets, which are JavaScript functions that can be synchronously executed within the UI thread. This allows instant animations without having to wait for a new frame. Let's take a look at what a simple worklet looks like:function simpleWorklet() { "worklet"; console.log("Hello from UI thread");}The only thing that is needed for the simpleWorklet function to get called inside the UI thread is to add the "worklet" directive at the top of the function block.React Native Reanimated provides a variety of hooks and methods that help us handle animations:useSharedValue: This hook returns a SharedValue instance, which is the main stateful data object that lives in the UI thread context and has a similar concept to Value in the core Animated API. A Reanimated animation is triggered when SharedValue is changed. The key benefit is that updates to shared values can be synchronized across the React Native and UI threads without triggering a re-render. This enables complex animations to run smoothly at 60 FPS without blocking the JS thread.useDerivedValue: This hook creates a new shared value that automatically updates whenever the shared values used in its calculation change. It allows you to create shared values that depend on other shared values, while keeping them all reactive. useDerivedValue is used to create a derived state in a worklet that runs on the UI thread based on updates to the source shared values. This derived state can then drive animations or other side effects without triggering a re-render on the JS thread.useAnimatedStyle: The hook allows you to create a style object with the ability to animate its properties based on shared values. It maps shared value updates to the corresponding view properties. useAnimatedStyle is the main way to connect shared values to views and enable smooth animations running on the UI thread.withTiming, withSpring, withDecay: These are animation utility methods that update a shared value in a smooth, animated way using various curves and physics. They allow you to define animations declaratively by specifying the target value and animation configuration.We have learned what React Native Reanimated is and how it is different from the Animated API. Next, let's try to install it and apply it to an app.Installing the React Native Reanimated libraryTo install the React Native Reanimated library, run this command inside your Expo project:expo install react-native-reanimatedAfter the installation is complete, we need to add the Babel plugin to babel.config.js:module.exports = function(api) { api.cache(true); return { presets: ['babel-preset-expo'], plugins: ['react-native-reanimated/plugin'], };};The main purpose of that plugin is to convert our JavaScript worklet functions into functions that will work in the UI thread.After you add the Babel plugin, restart your development server and clear the bundler cache:expo start --clearThat’s all! We have installed the Reanimated library. We are now introduced to the React Native Reanimated library. We have found out why it is better than the built-in Animated API.If you want to dive deeper into React and React Native features, check out the 6th edition of React and React Native by Mikhail Sakhniuk, Rodrigo Lobenwein, and Adam Boduch.🛠️ New content on TypeScript, React frameworks, state management strategies, unit testing, and AI-powered productivity📦Get to grips with React fundamentals and modern React techniques and architecture⚙️Broaden your React expertise through mobile development with React NativeReact and React NativePre-order now at $54.99This week’s news cornerStepping back from Flutter for a moment, here are a few notable updates from the past week across the mobile development ecosystem.iOS 27 may focus on stability instead of redesigning Liquid Glass: Reports suggest iOS 27 is unlikely to bring major visual changes to Apple’s Liquid Glass design introduced in iOS 26, with Apple instead prioritizing performance and stability improvements. This means fewer UI disruptions to account for and a more stable design system to build against, while attention shifts toward optimizing apps for performance rather than adapting to a new interface overhaul.Room 3.0 modernizes Android persistence with Kotlin Multiplatform support: Google has released the first alpha of Room 3.0, a major update that shifts the library to a Kotlin-first, multiplatform architecture, adding support for web targets like JavaScript and WebAssembly alongside Android and iOS. This update brings adoption of KSP over KAPT, coroutine-first APIs, and migrating away from SupportSQLite to new SQLite driver APIs, changes that improve performance, consistency, and cross-platform code sharing.Android Performance Boost Could Soon Reach Billions of Devices: Google rebuilt Android’s core (kernel) using real app usage data via AutoFDO, making devices faster without adding new features. This optimization boosts system performance (up to ~20%+ in key operations), improving app launches, multitasking, and overall responsiveness.How Samsung’s AI-first direction could change Android app design: Samsung is embedding AI (Gemini) deeper into Android, turning it into a system-level layer that can coordinate actions across apps. This shift could change app design, requiring developers to expose app functions so AI agents can execute tasks directly instead of relying on traditional UI interactions.📢 Important: MobilePro is Moving to SubstackWe’ll be moving MobilePro to Substack soon. From that point forward, all issues will come from packtmobilepro@substack.com.To ensure uninterrupted delivery, please whitelist this address in your mail client. No other action is required.You’ll continue receiving the newsletter on the same weekly cadence, and on Substack you’ll also gain more granular control over your preferences if you wish to adjust them later.👋 And that’s a wrap! We hope you enjoyed this edition ofMobilePro. If you have any suggestions and feedback, or would just like to say hi to us, please write to us. Just respond to this email!Cheers,Runcil Rebello,Editor-in-Chief, MobilePro*{box-sizing:border-box}body{margin:0;padding:0}a[x-apple-data-detectors]{color:inherit!important;text-decoration:inherit!important}#MessageViewBody a{color:inherit;text-decoration:none}p{line-height:inherit}.desktop_hide,.desktop_hide table{mso-hide:all;display:none;max-height:0;overflow:hidden}.image_block img+div{display:none}sub,sup{font-size:75%;line-height:0}#converted-body .list_block ol,#converted-body .list_block ul,.body [class~=x_list_block] ol,.body [class~=x_list_block] ul,u+.body .list_block ol,u+.body .list_block ul{padding-left:20px} @media (max-width: 100%;display:block}.mobile_hide{min-height:0;max-height:0;max-width: 100%;overflow:hidden;font-size:0}.desktop_hide,.desktop_hide table{display:table!important;max-height:none!important}}
Read more
  • 0
  • 0

Runcil Rebello
04 Mar 2026
8 min read
Save for later

MobilePro #207: What’s new in iOS, Android 17 beta 2, Flutter roadmap, and more…

Runcil Rebello
04 Mar 2026
8 min read
Mobile development blogs, tutorials and resources inside!Latest Mobile Dev Insights: iOS, Android, Cross-PlatformAdvertise with Us|Sign Up to the NewsletterMobilePro #207: What’s new in iOS, Android 17 beta 2, Flutter roadmap, and more…Hi ,Welcome to the 207th edition of MobilePro.AI in mobile apps is maturing fast.Last week, we looked at transport choices, SSE vs Streamable HTTP, and how they directly shape real-time UX in AI-powered apps. But once you move beyond “how data flows,” another architectural question becomes unavoidable: when is your system actually ready to act?As AI features evolve from simple API calls into tool-driven workflows, multi-model coordination, and agent-style behavior, initialization and capability alignment become critical. Skipping that step is how you end up with fragile integrations, mismatched tool calls, and bugs that only surface in production.This week’s tutorial dives into a foundational but often overlooked concept: the AI handshake. Using Model Context Protocol (MCP) as a reference, we explore why capability negotiation isn’t protocol ceremony, it’s architectural discipline. If you’re building in-app copilots, assistants, or AI-powered automation, understanding initialization can save you from subtle state and coordination failures later.Before we move to the tutorial, here are some of the key news highlights from this week:Apple released iOS 26.4 and iPadOS 26.4 Beta 3 with new features and improvementsAndroid 17 Beta 2 introduced new APIs, privacy updates, and cross-device capabilitiesGoogle outlined its vision for a more agent-driven Android experienceFlutter and Dart shared their 2026 roadmapGoogle’s Android developer verification program continues to spark debateLet's get started!🚀 Build & Deploy OpenClaw LIVE MasterclassWe’re hosting a hands-on workshop where you’ll learn how to architect, secure, and run OpenClaw in production, turning AI into a real business engine. You’ll see how founders are automating revenue-driving workflows, managing API costs smartly, and building scalable AI systems that actually work.This is not theory. You’ll build alongside us.🎟 For a limited time, get 40% off your ticket using code OC40Book nowStop Calling AI Tools Before You Initialize: Why AI Apps Need a Proper HandshakeLast week, we talked about transports, SSE vs Streamable HTTP, and how that choice shapes the UX of your AI-powered mobile app. But transport only answers one question: How do messages move? It doesn’t answer another very important question: When should messages be allowed to move at all? That’s where handshake / initialization comes in.We’d like to add that if you’re building AI features that call tools, run workflows, or coordinate client and server models, skipping this step is how things get chaotic.The Real Problem: Tool Calls Without DisciplineImagine this:Your app loads.It immediately tries to call an AI tool.The server hasn’t finished loading capabilities.The model version changed.The client assumes tools exist that the server doesn’t support.Or worse: auth isn’t ready.Now you’ve got mismatched capabilities, failed tool calls, inconsistent state, and hard-to-reproduce bugs. Most AI integration bugs are not model issues. They’re state and coordination issues.What Initialization Actually DoesIn Model Context Protocol (MCP), the handshake is explicit.It looks like this:Client → Server: initialize: The client asks, “What do you support?” It sends:protocol versionits capabilitiesmetadata about itselfServer → Client: initialize response: The server responds with:its capabilities (tools, resources, prompts, logging, etc.)protocol versionserver infoClient → Server: notifications/initialized: The client signals, “Got it. We’re aligned. Ready to operate.” Only after this message should normal operations (like tools/list or tools/call) happen.Why This Matters for Mobile AppsMobile apps already live in a world of gated states:Don’t hit APIs before auth token refresh.Don’t render protected UI before session validation.Don’t send WebSocket messages before connection is open.Don’t enable payment buttons before payment SDK is ready.MCP’s handshake is the same discipline applied to AI tooling. It enforces no tool calls before capability alignment. That’s not protocol bureaucracy but production safety. In mobile architecture terms, the handshake is a state gate. Before initialization:Tool calls → ❌Resource access → ❌Sampling → ❌However, after initialization:Tool calls → ✅Notifications → ✅Normal operations → ✅This is especially important if:Your server dynamically enables/disables toolsYou support multiple model providersYour capabilities change over timeYou plan to version your AI featuresWithout a handshake, you’re relying on assumptions, and those don’t scale.Handshake = Future-ProofingHere are a few reasons handshaking matters in the long term:Capability evolution: Your server may:Add toolsRemove toolsChange tool schemasAdd logging or sampling Handshake ensures the client adapts dynamically.Multi-model systems: If your client can:Use local modelsUse remote modelsSwitch between providers Initialization keeps both sides aware of what’s supported.Production stability: When something breaks, you know:Was initialization completed?Were capabilities mismatched?Did the client skip the state gate? That’s debuggable.The Mobile TakeawayTransport determines how data flows. Handshake determines when it’s safe to act.If you’re building:AI chat assistantsIn-app copilotsTool-driven automationEnterprise AI workflowsThen initialization is architectural discipline.If you want to go deeper into how MCP evolved from REST/GraphQL thinking, how to build and test STDIO, SSE, and Streamable HTTP servers, implement sampling and elicitation, secure your endpoints with JWT and OAuth2, and eventually take MCP apps to production, Learn Model Context Protocol with TypeScript by Christoffer Noring walks you through the full journey step by step.📘The only resource you'll need to build, test, and deploy MCP servers and clients🧩Take a modern approach toward building, testing, and securing distributed agentic AI apps🔀Get clear, professional guidance on developing for both LLM and non-LLM clientsLearn Model Context Protocol with TypeScriptBuy now at $44.99This week’s news cornerIf framework choice is a long-term strategic decision, this week’s updates show just how fast the ground keeps shifting underneath us.Apple Seeds Third Betas of iOS 26.4 and iPadOS 26.4 to Developers: Apple seeded the third betas of upcoming iOS 26.4 and iPadOS 26.4 updates to developers a week after the second beta. There are several new features added to iPhone and iPad, such as the Playlist Playground feature, native video podcasting capabilities for Apple Podcasts, end-to-end encryption for RCS in its test phase, and so on.The Second Beta of Android 17: The second beta of Android 17 is released. This beta includes several new capabilities, such as the EyeDropper API and a privacy-preserving Contacts Picker. It also delivers advanced ranging, cross-device handoff APIs, and more.The Intelligent OS—Making AI agents more helpful for Android apps: Android has introduced AppFunctions to support an agentic future. It enables apps to expose data and actions directly to AI agents like Gemini, along with a new intelligent UI automation framework that allows Gemini to complete multi-step tasks across apps, with user transparency and control at the core.Google’s Android developer verification program draws pushback: The developer verification program announced in August 2025 gets pushback. The program requires all developers to register centrally with Google, including paying fees, submitting ID, and handing over signing keys before their apps can run on certified Android devices. The Keep Android Open campaign has taken form, and an open letter was issued to Google and the Android developer community against this new policy. Critics argue the new program undermines Android’s openness by restricting sideloading and independent app distribution and are urging regulators to intervene to preserve choice and competition in the ecosystem.Flutter and Dart’s 2026 roadmap: Flutter and Dart’s 2026 roadmap focuses on high performance multiplatform experiences (Impeller on Android, Wasm on web), AI-driven “agentic” and ephemeral UIs via GenUI, and full-stack Dart with stronger cloud and AI tooling support. The team is also evolving Dart’s syntax and performance, enhancing AI-powered developer workflows, and advancing a more open, sustainable ecosystem.Safely Refactor Production Codebases with AI🎟 Get 50% off with code MOBILEPRO50 (exclusive offer for Packt community members)Register Now👋 And that’s a wrap! We hope you enjoyed this edition ofMobilePro. If you have any suggestions and feedback, or would just like to say hi to us, please write to us. Just respond to this email!Cheers,Runcil Rebello,Editor-in-Chief, MobilePro*{box-sizing:border-box}body{margin:0;padding:0}a[x-apple-data-detectors]{color:inherit!important;text-decoration:inherit!important}#MessageViewBody a{color:inherit;text-decoration:none}p{line-height:inherit}.desktop_hide,.desktop_hide table{mso-hide:all;display:none;max-height:0;overflow:hidden}.image_block img+div{display:none}sub,sup{font-size:75%;line-height:0}#converted-body .list_block ol,#converted-body .list_block ul,.body [class~=x_list_block] ol,.body [class~=x_list_block] ul,u+.body .list_block ol,u+.body .list_block ul{padding-left:20px} @media (max-width: 100%;display:block}.mobile_hide{min-height:0;max-height:0;max-width: 100%;overflow:hidden;font-size:0}.desktop_hide,.desktop_hide table{display:table!important;max-height:none!important}}
Read more
  • 0
  • 0

Runcil Rebello
25 Feb 2026
9 min read
Save for later

MobilePro #206: Picking the Right Transport for AI, iOS and Xcode 26.4 beta 2, Swift system metrics, and more…

Runcil Rebello
25 Feb 2026
9 min read
Mobile development blogs, tutorials and resources inside!Latest Mobile Dev Insights: iOS, Android, Cross-PlatformAdvertise with Us|Sign Up to the NewsletterMobilePro #206: Picking the Right Transport for AI, iOS and Xcode 26.4 beta 2, Swift system metrics, and more…Hi ,Welcome to the 206th edition of MobilePro.Adding AI to a mobile app meant wiring up an API call and rendering whatever came back. That’s no longer the case now. Building AI features feels more like designing a real-time system.Modern AI-powered apps, whether they include copilots, smart summaries, or automated support, depend heavily on how the client and server communicate. The transport layer you choose directly shapes user experience, performance, and scalability. What used to be a backend detail has become a product decision.Nobody deliberately optimizes for rigidity. No team sets out to make AI features fragile or hard to scale. But when transport trade-offs aren’t made explicit, that’s exactly where teams end up.So this week’s tutorial explores a practical question many teams now face: SSE or Streamable HTTP for AI in mobile apps? We will break down the trade-offs so you can choose the right transport for your architecture, especially if you’re working with structured protocols like MCP. As AI becomes embedded into core product flows, making the right infrastructure choice early can save you from costly rewrites later.By the end of this article, you should be able to:Understand when SSE creates a superior real-time UXIdentify when Streamable HTTP fits better into existing API infrastructureAvoid over-engineering early while keeping future flexibilityBefore we move to the tutorial, here are some of the key news highlights from this week:Apple released Xcode 26.4 Beta 2 and iOS/iPadOS 26.4 Beta 2JetBrains launched a Java-to-Kotlin converter extension for VS CodeGoogle I/O 2026 is set for May 19–20Swift System Metrics 1.0 was releasedLet's get started!Unblocked: The context layer your AI tools are missingGive your agents the understanding they need to generate reliable code, reviews, and answers. Unblocked builds context from your team’s code, PR history, conversations, documentation, planning tools, and runtime signals. It surfaces the insights that matter so AI outputs reflect how your system actually works.See how it worksSSE or Streamable HTTP? Picking the Right Transport for AI in Mobile AppsAI features in mobile apps aren’t just about prompts anymore. If you’re building something like the following, you are not only integrating an LLM but also building a full-fledged system:an in-app assistant,a “generate content” button,automated support flows,real-time summarization,tool-driven copilotsEvery system hits the same question early: How should the client and server communicate? That choice becomes even more important if you’re using structured tool-calling protocols like Model Context Protocol (MCP), where communication is explicit and message-based. Let’s break down three transport patterns that matter most for AI-powered mobile apps today: Local processes (stdio), Server-Sent Events (SSE), and Streamable HTTP.Local Processes (stdio): Best for Dev Tools and Local AI WorkflowsLocal process transports (often via stdin/stdout, aka stdio) are a way for a client to communicate with a server running as a child process on the same machine. MCP supports this well, especially for local tooling. This approach is great for local developer assistants, internal automation scripts, prototyping MCP servers without networking, and desktop tooling that supports mobile teams.However, it’s not a common fit for production mobile apps, since iOS and Android apps don’t typically spawn local server processes in a clean, portable way (thanks to sandboxing and platform constraints). Instead, let’s focus on the two transports that matter far more for mobile AI features: SSE and Streamable HTTP.SSE (Server-Sent Events): Best for Streaming AI OutputSSE is a streaming transport built on HTTP where the server pushes events to the client over a long-lived connection. If you’ve ever used ChatGPT-style streaming responses, you’ve basically seen why SSE exists.Why SSE is a strong fit for mobile AIAI output is rarely instantaneous as it arrives in chunks. Therefore, SSE lets you build UX like: “Generating response…” progress updates, streaming partial text into the UI, token-by-token chat responses, and tool execution progress.Mobile UX advantageSSE enables experiences that feel alive. Instead of a frozen UI waiting for a response, your user sees progress, intermediate results, and continuous updates. That’s a huge difference in perceived performance.DownsidesSome environments handle SSE less cleanly than WebSocketsReconnection logic matters (especially on mobile networks)You need to manage backgrounding/foregrounding carefullyStreamable HTTP: Best for Hybrid “Normal API + Streaming When Needed”Streamable HTTP is the practical middle-ground. It behaves like a normal HTTP API, but the server can decide whether to return a normal JSON response or stream events (like SSE-style output).This is especially attractive in MCP-style architectures, because you can keep your API simple while still supporting streaming.Why mobile teams should careStreamable HTTP fits cleanly into existing backend infrastructure: API gateways, authentication middleware, rate limiting, request tracing, and existing monitoring stacks.And you can still support streaming for AI output when required.Where it shinesMobile apps that mostly use request/response APIsApps where streaming is “optional”AI tools where some calls are fast and some are long-runningDownsidesMore complexity on the server sideYou need to support both response types cleanlyStill requires careful client-side parsingSo which one should you choose?Here’s the simplest rule:Choose SSE if…You’re building an app where the AI output needs to feel live and interactive, such as:a chat assistant appan AI-powered customer support inboxa “Copilot inside your app” experience (like Notion/Slack-style AI)an app that runs long AI tasks and needs to show progress updatesIf your product experience depends on responsiveness and streaming, SSE is the natural fit.Choose Streamable HTTP if…You’re building an app where AI is a feature, but not necessarily a live chat experience, such as:an e-commerce app generating product descriptionsa travel app generating itinerariesa fintech app generating summaries of transactionsa health app generating weekly reportsa productivity app generating meeting summariesStreamable HTTP works best when your app mostly behaves like a normal API-driven mobile app, but occasionally benefits from streaming output.As AI becomes a standard feature inside mobile apps, we’re going to see more architectures that treat LLM calls like real-time systems, because of which choosing the right transport is step one.If you're exploring protocols like MCP, this decision becomes even more explicit, but even without MCP, the transport trade-offs remain the same.If you’re curious about where MCP fits in the evolution from REST and GraphQL to tool-driven AI systems and want hands-on guidance on building, testing, securing, and shipping MCP servers Learn Model Context Protocol with TypeScript by Christoffer Noring is a practical deep dive.📘The only resource you'll need to build, test, and deploy MCP servers and clients🧩Take a modern approach toward building, testing, and securing distributed agentic AI apps🔀Get clear, professional guidance on developing for both LLM and non-LLM clientsLearn Model Context Protocol with TypeScriptBuy now at $44.99This week’s news cornerIf framework choice is a long-term strategic decision, this week’s updates show just how fast the ground keeps shifting underneath us.Apple releases 26.4 beta 2 of Xcode and iOS: The beta 2 for 26.4 is released for Xcode, iOS, and iPadOS. Xcode 26.4 Beta 2 introduces Swift 6.3, C++26 feature support in Apple Clang, enhanced Instruments profiling (Run Comparison, Top Functions, improved flame graphs). It also brings major updates to Swift Testing, Localization, and Swift/C++ interoperability. iOS & iPadOS 26.4 Beta 2 adds offline asset pack status checks, enhanced Memory Integrity Enforcement, new StoreKit transaction fields, and early RCS end-to-end encryption testing. It also resolves key issues in Networking, SwiftUI, UIKit, and Feedback, with a few known issues in Background Assets and Reality Composer.Swift System Metrics 1.0: Process-Level Monitoring: A stable Swift package called Swift System Metrics 1.0 for collecting process-level metrics is released. It integrates with Swift Metrics, OpenTelemetry, and Service Lifecycle for production-ready observability. It will enable better performance monitoring, reliability tracking, and resource optimization, that will ensure scalable, high-performing APIs that power mobile experiences.Java to Kotlin Conversion Comes to Visual Studio Code: JetBrains released a Java-to-Kotlin (J2K) converter extension for Visual Studio Code. It will let developers convert individual Java files to Kotlin directly within VS Code using the same reliable engine found in IntelliJ IDEA. This will lower the barrier to migrate Java codebases to Kotlin, support teams working outside IntelliJ, and accelerate modernization of Android and backend projects without requiring a full IDE switch.Google I/O 2026: Google I/O 2026 will take place on May 19–20. It’s expected to unveil Android 17 features, major Gemini AI updates, and advancements across Search, Chrome, and potentially Google XR hardware. AI is likely to remain central to the event, with deeper Gemini integration across Android and other Google platforms, alongside possible updates on Chrome OS and emerging XR devices. You can register for the event here.If you’re not learning to build with AI right now, you’re falling behind.Join Michelle Sandford, Developer Engagement Lead at Microsoft, for a live workshop on mastering AI-assisted development with GitHub Copilot, from advanced prompting and Agent Mode to production-ready workflows.🚀 3 hours | 65% hands-on | Real-world coding exercisesBuild faster. Ship smarter. Stay in control.🎟 Get 50% off with code COPILOT50 (limited time).Seats are limited.Register Now👋 And that’s a wrap! We hope you enjoyed this edition ofMobilePro. If you have any suggestions and feedback, or would just like to say hi to us, please write to us. Just respond to this email!Cheers,Runcil Rebello,Editor-in-Chief, MobilePro*{box-sizing:border-box}body{margin:0;padding:0}a[x-apple-data-detectors]{color:inherit!important;text-decoration:inherit!important}#MessageViewBody a{color:inherit;text-decoration:none}p{line-height:inherit}.desktop_hide,.desktop_hide table{mso-hide:all;display:none;max-height:0;overflow:hidden}.image_block img+div{display:none}sub,sup{font-size:75%;line-height:0}#converted-body .list_block ol,#converted-body .list_block ul,.body [class~=x_list_block] ol,.body [class~=x_list_block] ul,u+.body .list_block ol,u+.body .list_block ul{padding-left:20px} @media (max-width: 100%;display:block}.mobile_hide{min-height:0;max-height:0;max-width: 100%;overflow:hidden;font-size:0}.desktop_hide,.desktop_hide table{display:table!important;max-height:none!important}}
Read more
  • 0
  • 0
Runcil Rebello
18 Feb 2026
11 min read
Save for later

MobilePro #205: Choosing the Right Mobile Framework, Android 17’s Big Screen Mandate, Flutter 3.41’s Evolution, and more…

Runcil Rebello
18 Feb 2026
11 min read
Mobile development blogs, tutorials and resources inside!Latest Mobile Dev Insights: iOS, Android, Cross-PlatformAdvertise with Us|Sign Up to the NewsletterMobilePro #205: Choosing the Right Mobile Framework, Android 17’s Big Screen Mandate, Flutter 3.41’s Evolution, and more…Hi ,Welcome to the 205th edition of MobilePro.Once upon a time, choosing a mobile framework used to feel like a technical debate. Now, that is no longer the case. Today, it feels more like a long-term bet.Platforms and frameworks are both evolving, sometimes faster than teams expect. When the ecosystem keeps shifting like this, the wrong framework choice causes a bundle of issues: it slows you down, yes, but it also compounds over time. It affects how easily you adapt to new OS requirements, how quickly you ship updates, how you handle performance trade-offs, and even how you structure your team. Where once framework selection used to be about trends or developer preference, now it’s about resilience.That’s why this week’s tutorial takes a practical look at Flutter versus other approaches. We're not crowning a winner, but we provide a breakdown of the architectural trade-offs so you can choose without regretting it later. In an environment where platforms tighten rules and frameworks evolve quickly, flexibility might be the most important tool in your arsenal to achieve a happily-ever-after.Before we move to the tutorial, let's have a look at some of the important news stories from this week:Android 17 Beta 1 removed the ability to opt out of resizabilityFlutter 3.41 refined platform polish and modular upgradesReact Native 0.84 made Hermes V1 the default and cleaned up legacy architectureLet's get started!The Problem with One-Size-Fits-All Mobile App Security and How to Fix ItIs your team struggling to balance security requirements with user experience?Join us onFebruary 24at4 PM CET/10 AM ET for a webinar discussing how leading financial services teams are shifting to data-driven, risk-based mobile security for more precise responses.Register NowWhy Flutter is the strongest default bet for teams in 2026Choosing the wrong mobile framework doesn’t just slow development, it can lock your team into months of rework, hiring friction, and architectural compromises you didn’t anticipate. Flutter is often positioned as the “safe” cross-platform bet. But no framework is universally correct. The real question is whether Flutter aligns with your product complexity, team structure, performance needs, and long-term roadmap. Here’s how to think about it.Native Development: the gold standard with multiplying costsNative development (Swift for iOS, Kotlin for Android) remains the cleanest architectural path. It gives you immediate access to new OS features, first-class platform fidelity, maximum performance headroom, and nNo framework abstraction risk.If you’re building a platform-defining app that deeply integrates with OS-level features, native is still the strongest technical choice. But native becomes expensive the moment you support more than one platform.Two platforms mean two codebases, two specialized teams, two release cycles, and two QA pipelines, and two sets of platform-specific bugs.Coordination overhead grows fast. Feature parity becomes a project management problem. Hiring flexibility shrinks. Deadlines become harder to protect. Native doesn’t just multiply code, it multiplies operational complexity.Why cross-platform exists (it’s not about “write once”)Cross-platform frameworks aren’t primarily about saving keystrokes. They’re about reducing duplication and coordination risk. With a unified codebase, teams can fix bugs once, ship features in sync, maintain consistent UX, operate with smaller teams, and reduce long-term maintenance cost.That’s why cross-platform remains attractive even for serious production apps. But not all cross-platform frameworks are architecturally equal.The three major cross-platform approachesMost frameworks fall into one of these models:JavaScript + bridge (React Native)React Native uses JavaScript or TypeScript for logic and communicates with native APIs through a bridge.Its pros include familiarity for web/React teams, a mature ecosystem, and the use of native UI components.Trade-off is that the bridge introduces runtime complexity. Performance and consistency depend on how well native modules are implemented.Native UI Abstraction (.NET MAUI)MAUI builds cross-platform apps using C# and .NET while rendering native UI components. Its pros include strong fit for .NET organizations and shared business logic. Trade-off is that it has less unified UI control and limited web reach compared to Flutter.Custom Rendering Engine (Flutter)Flutter compiles to native code and renders its own UI using a graphics engine rather than relying on native components. This architectural decision is why Flutter feels different, and why it often performs differently.Flutter vs. React Native: the architectural difference that mattersReact Native maps to native UI components. Flutter renders everything itself. This difference affects animation smoothness, cross-platform visual consistency, dependency on OS-level UI changes, and Bridge overhead.Flutter avoids a JavaScript runtime bridge, which reduces a common source of performance unpredictability. It also ensures that UI behaves the same across platforms. That consistency is one of Flutter’s biggest strengths, and also one of its philosophical trade-offs. You’re choosing control over platform mimicry.Where Flutter winsFlutter tends to win when teams prioritize speed, consistency, and scalability of development.Developer velocity: Flutter’s hot reload is one of the most refined in the industry. Fast iteration directly improves productivity in UI-heavy workflows. Small friction differences compound over months of development.True unified codebase: Many frameworks claim “one codebase” but still diverge over time. Flutter delivers one of the closest real-world experiences to one UI layer, one logic layer, and one release rhythm. This reduces coordination overhead significantly.Performance without a JS runtime: Flutter compiles ahead of time and avoids JavaScript bridge overhead. For most production apps, performance is not a primary complaint in the Flutter ecosystem. UI-heavy applications especially benefit from predictable rendering.Strong plugin ecosystem: Flutter’s ecosystem is large and active. Most common mobile features are available via community or official plugins. And when they’re not, writing platform-specific plugins is straightforward, reducing long-term lock-in risk.Production-scale adoption: Flutter is used in production by companies including Google Classroom, Google Ads, Nubank, BMW, Toyota, Grab, and eBay Motors. This signals maturity beyond experimentation.Where Flutter is not idealNo framework is universally correct. Flutter has trade-offs:Rapid evolution: Flutter evolves quickly. That means deprecations, migration effort, and breaking changes across versions. If your organization prefers slow-moving ecosystems, this matters.Larger binary size: Flutter apps bundle the rendering engine, which increases base app size. For most markets this is acceptable. For ultra-lightweight apps or strict size constraints, it can be a concern.Platform-specific UX nuances: Flutter can mimic native patterns, but it doesn’t inherit them automatically. If your product depends heavily on deeply platform-native interactions, extra work may be required to avoid a “cross-platform feel.”The AI dimension: why popularity compounds advantageAI is changing development in two major ways:AI as developer assistance: Stacks with large public ecosystems generate better AI tooling support. Flutter benefits from strong open-source presence, large documentation base, and an active community. This improves code-generation quality and debugging assistance.AI inside apps: Modern apps increasingly include summarization, search, recommendations, and generative features. Flutter integrates smoothly with Firebase and Google’s AI tooling, making it practical for teams building AI-enabled features. However, AI-generated code does not replace architectural understanding. Teams still need to enforce structure and maintainability.A practical decision frameworkUse this as a quick reference.Choose Flutter if:You need iOS + Android (and possibly web) from one teamUI consistency matters more than platform mimicryYou prioritize iteration speedYou want strong performance without JS runtime complexityChoose React Native if:Your organization is deeply invested in ReactYou prefer native UI componentsYou’re comfortable maintaining native bridgesChoose .NET MAUI if:You’re a .NET-first organizationWeb reach is secondaryShared business logic is the priorityChoose Native if:You need deep OS integrationsPlatform-specific UX is criticalYou require smallest possible binariesYou already have strong platform-dedicated teamsFlutter isn’t compelling because it’s perfect. It’s compelling because it balances trade-offs extremely well:Strong performance without a JS bridgeGenuine cross-platform coverageHigh developer velocityMature ecosystemProven production adoptionNative still wins on platform purity and first access to new OS capabilities, but it multiplies complexity.Choosing Flutter isn’t just a technical decision. It’s a strategic one about how your team wants to build, scale, and maintain software over time.And in an environment where platforms evolve quickly and AI is accelerating development cycles, that strategic flexibility may be the deciding factor.To learn more about Flutter, check out the fourth edition of Flutter for Beginners by Thomas Bailey and Alessandro Biessek.📘 Fourth edition of Flutter for Beginners is fully updated for the latest Flutter and Dart releases and uses real-world examples🧩 Practical guide shows you how to build, test, and release high-quality mobile apps for iOS, Android, and the web🔀Work with Flutter widgets and learn about stateful/stateless widgetsFlutter for BeginnersPre-order now at $44.99This week’s news cornerIf framework choice is a long-term strategic decision, this week’s updates show just how fast the ground keeps shifting underneath us.Android 17 Beta 1 pushes adaptive apps with mandatory resizability support: Google has released the first beta of Android 17, kicking off the next platform cycle. It introduces major changes for large screens, removing the ability for apps to opt out of resizability and orientation changes, meaning developers must ensure their apps work smoothly across tablets, foldables, and multi-window environments.Flutter 3.41 empowers community with modularity and platform polish: Flutter 3.41 brings improved iOS tooling support (like better Swift Package Manager integration and UIScene adoption) and platform-specific asset optimizations that can reduce app size and improve performance. The release also refines navigation, scrolling, previews, and accessibility APIs, directly impacting real-world app UX and maintainability. Additionally, clearer release windows and modular library updates make it easier for teams to plan upgrades and manage dependencies.React Native 0.84 makes Hermes V1 the default with faster builds and internal cleanup: React Native 0.84 ships Hermes V1 as the default JavaScript engine on both iOS and Android. The release also enables precompiled iOS binaries by default to significantly speed up builds and continues removing legacy architecture code from core components. Developers will need Node.js 22 or later and should test for compatibility as legacy modules and tooling updates roll out in this stable update.UK watchdog wins voluntary fair app-store commitments from Apple and Google: Apple and Google have agreed to voluntary commitments with the UK’s Competition and Markets Authority to treat third-party apps more fairly, including transparent app reviews and non-discriminatory search rankings, while promising easier access to system features for developers. The move is part of a new digital markets regime aimed at reducing Apple and Google’s market dominance and improving the mobile app ecosystem for developers.Apple’s Siri AI overhaul faces fresh delays, slipping key features past iOS 26.4: Reports suggest Apple’s ambitious Siri AI revamp, originally expected with iOS 26.4, is running into development snags, with advanced capabilities like in-app actions and deeper personal context now likely to arrive in iOS 26.5 or even iOS 27 later this year. This ongoing delay, driven by testing issues and reliability problems, has frustrated users and highlighted how far Siri’s evolution still has to go compared with rivals.Xcode 26.4 beta brings incremental tools and platform updates for devs: Apple has released the Xcode 26.4 beta (build 17E5159k), marking the next step in the Xcode 26 cycle with updated tooling for building and testing apps across Apple platforms. This beta arrives alongside iOS 26.4 betas, giving developers early access to the latest SDKs and compatibility updates.If you’re not learning to build with AI right now, you’re falling behind.Join Michelle Sandford, Developer Engagement Lead at Microsoft, for a live workshop on mastering AI-assisted development with GitHub Copilot, from advanced prompting and Agent Mode to production-ready workflows.🚀 3 hours | 65% hands-on | Real-world coding exercisesBuild faster. Ship smarter. Stay in control.🎟 Get 50% off with code COPILOT50 (limited time).Seats are limited.Register Now👋 And that’s a wrap! We hope you enjoyed this edition ofMobilePro. If you have any suggestions and feedback, or would just like to say hi to us, please write to us. Just respond to this email!Cheers,Runcil Rebello,Editor-in-Chief, MobilePro*{box-sizing:border-box}body{margin:0;padding:0}a[x-apple-data-detectors]{color:inherit!important;text-decoration:inherit!important}#MessageViewBody a{color:inherit;text-decoration:none}p{line-height:inherit}.desktop_hide,.desktop_hide table{mso-hide:all;display:none;max-height:0;overflow:hidden}.image_block img+div{display:none}sub,sup{font-size:75%;line-height:0}#converted-body .list_block ol,#converted-body .list_block ul,.body [class~=x_list_block] ol,.body [class~=x_list_block] ul,u+.body .list_block ol,u+.body .list_block ul{padding-left:20px} @media (max-width: 100%;display:block}.mobile_hide{min-height:0;max-height:0;max-width: 100%;overflow:hidden;font-size:0}.desktop_hide,.desktop_hide table{display:table!important;max-height:none!important}}
Read more
  • 0
  • 0

Runcil Rebello
11 Feb 2026
12 min read
Save for later

MobilePro #204: AI in Figma, AI Coding agents in Xcode, Kotlin’s new release, and more…

Runcil Rebello
11 Feb 2026
12 min read
Mobile development blogs, tutorials and resources inside!Latest Mobile Dev Insights: iOS, Android, Cross-PlatformAdvertise with Us|Sign Up to the NewsletterMobilePro #204: AI in Figma, AI Coding agents in Xcode, Kotlin’s new release, and more…Hi ,Welcome to the 204th edition of MobilePro.You must have noticed the abbreviation AI twice in the headline. It's something you see everywhere now, isn't it? One could say AI arrived in mobile development with a bang, but I'd wager it's arriving quietly, tool by tool, feature by feature, and suddenly, our workflows are going to look completely different.Let that headline tell you the story: First, Apple is bringing AI coding agents directly into Xcode, and then iOS 26.4 could push Siri toward deeper, more app-aware actions. Even on the research side, Apple-backed models are exploring things like generating sound and speech from silent video. AI is no longer a separate thing but an intrinsic part of the default developer toolkit.This makes the design stage an especially important place to slow down and get things right. Because before AI helps you write code faster or analyze metrics better, it can help you think more clearly about what you’re building. That’s why today’s tutorial focuses on speeding up your flow with AI in Figma. If you think this is about automating design, it isn't really that. We're focused largely on removing the friction that shows up early, stuff like fuzzy personas, hidden assumptions, slow iteration, and messy handoffs. Used well, AI in Figma helps teams reach clarity sooner, so everything that follows—code, testing, and iteration—has a much better foundation.Let’s get started!The Problem with One-Size-Fits-All Mobile App Security and How to Fix ItIs your team struggling to balance security requirements with user experience?Join us onFebruary 24at4 PM CET/10 AM ETfor a webinar discussing how leading financial services teams are shifting to data-driven, risk-based mobile security for more precise responses.Register NowSpeeding up your flow with AI in FigmaAI isn’t here to replace designers, and it definitely isn’t here to “auto-design” products. What it is good at is removing the slow, repetitive, and messy parts of modern mobile workflows, the parts that delay alignment, slow down iteration, and create avoidable confusion between design and development.For mobile teams, speed isn’t just about moving fast. It’s about reaching clarity earlier: clearer user assumptions, clearer flows, clearer states, and fewer surprises during implementation.Used well, AI becomes a workflow accelerator for both designers and mobile developers. Designers explore faster without losing intent. Developers get clearer prototypes, more predictable behavior, and fewer handoff translation errors.The goal isn’t to “design with AI.” The goal is to ship better mobile experiences with fewer bottlenecks.Before Figma: faster exploration without false certaintyBefore anyone opens Figma, most projects begin in ambiguity. You’re collecting inputs, forming hypotheses, and trying to understand what the product should be, all while stakeholders expect early direction.This stage is where AI can help most, as long as it isn’t treated as truth.Personas (as scaffolding, not research)AI can quickly generate persona skeletons from early notes, workshop inputs, or stakeholder assumptions. Tools like FigJam’s AI can cluster messy ideas into themes and draft rough persona profiles based on what’s already on the board.External tools like ChatGPT can go further: refining motivations, expanding behaviors, and generating multiple persona variants to explore.The key is to treat personas here as temporary structure, not “validated users.” They’re placeholders that help teams align early and move forward with intention, without pretending the answers are final.Early assumptions (made visible, not buried)Mobile teams often lose time because assumptions stay implicit. AI can help pull those assumptions into the open:What problem are we really solving?What are we assuming about user behavior?What constraints are we ignoring?What’s unclear in the flow?This kind of exploration creates better design conversations, and better developer questions, earlier in the process.Competitive scanning (faster context, less guesswork)Competitive analysis is time-consuming, and it’s often done poorly because it’s rushed. AI tools can help you scan faster and structure insights more cleanly.Source-based tools like Perplexity are especially useful here because they allow you to explore market patterns and product positioning while staying grounded in references. Instead of spending hours collecting fragmented information, you can quickly identify:How similar apps structure key flows?Which patterns are becoming standard?What gaps exist in feature sets or UX expectations?AI as exploration, not decision. This is the rule that keeps everything healthy:AI is most valuable when it helps you explore, not when it tries to decide.It speeds up thinking, but it doesn’t replace judgment. Your team still owns the product decisions.From idea to interaction with Figma MakeIf AI helps you explore before Figma, Figma Make is where it becomes a serious workflow upgrade.Make is built for fast prototyping through conversation. Instead of building everything manually, you describe what you want, or paste an existing design, and Make generates a working interactive prototype.This is especially useful for mobile teams because the hardest part of mobile UX is often not the visuals, it’s the behavior:navigation patternsstate changesinputs and validationtransitions and flow continuityMake accelerates all of that.Conversational prototypingMake works like a collaborative assistant. You can ask for: core screens for a feature, alternate layouts for a flow, a basic navigation structure, and Interaction behaviors (cards, modals, tabs, etc.).For example:“Create a mobile home screen for a travel planning app with a search bar, destination carousel, and bottom navigation.”“Generate three alternative layouts for a booking flow with date selection and traveler details.”“Build an interactive prototype for exploring points of interest, including card interactions and a map view.”Instead of staring at a blank canvas, you start with something functional.Structure plus logic (not just mockups)The major difference between Make and traditional quick mockups is that it generates more than layout.Make supports interactive behavior, allowing you to preview: transitions, form inputs, navigation patterns, and data-driven states.If you want realism, it can even connect to external data sources like Supabase to simulate an app that responds dynamically rather than remaining purely visual. That matters because mobile teams don’t ship static screens. They ship systems.Early validation for designers and developersThis is where Make becomes a shared tool. Designers get faster iteration and can explore alternatives without rebuilding everything manually.Developers benefit because:the interaction logic becomes clearer earlystate behavior is easier to evaluateedge cases surface soonerthe “what happens when…” questions get answered before implementationInstead of debating a flow in abstract terms, the team can test it in a working prototype.The right way to use Make: iterative, not giant prompts.Make has a token budget per request. If you try to generate an entire app in one prompt, it will break or degrade. The best workflow is:Generate one view or interaction.Refine it.Add the next piece.Build the flow step-by-step.This gives you higher reliability and more creative control, and avoids treating AI as a “magic button.”A bridge to production, not a detourOnce the prototype matches your intention, you can move it into Figma Design and refine: visual language, design system consistency, spacing and layout precision, and final interaction polish.Make also produces inspectable code under the hood, which can help developers understand what’s being proposed and reduce ambiguity.Designing with handoff in mindAI doesn’t stop being useful once you enter “real design.” In fact, this is where it becomes most practical. Mobile teams lose time in handoff because of translation gaps:designers describe behavior in one waydevelopers interpret it differentlyedge cases are missedimplementation diverges from intentAI can reduce this, not by replacing communication, but by making outputs clearer.Inspectable outputsWhen prototypes behave more like real products, handoff becomes less interpretive.Instead of handing off static screens and hoping the interactions are understood, teams can point to a working prototype that shows:what changeswhen it changeswhat the user sees in different statesThat’s especially valuable for mobile, where interaction patterns and state management are everything.Clearer documentationExternal AI tools can help you transform messy design notes into structured documentation. Claude is particularly strong at reading long content like:design system specscomponent behavior definitionsinteraction notesUX flow descriptionsIt can rewrite those notes into clean, consistent documentation that developers can actually use. ChatGPT is also strong here, especially when you need:multiple versions of an explanationsimpler language for stakeholdersa more technical tone for developersclearer state descriptions for componentsFewer translation errors between design and codeEven if AI never touches the final implementation, it still improves the handoff by improving the shared understanding.When developers understand component behavior faster, fewer details get lost, and fewer rounds of clarification are needed. AI doesn’t remove collaboration. It reduces friction in collaboration.Use AI as a multiplier, not a shortcutAI is at its best when it supports the work you already do, exploration, iteration, documentation, and alignment.It’s not a shortcut to good design. It’s a multiplier for good design thinking. If you treat it as a tool for speed with intention, it helps mobile teams:explore faster without pretending to know the answersprototype interactions earlier and more realisticallyalign on behavior before development beginsreduce handoff ambiguity and implementation driftDesign still requires judgment. AI just removes the parts that slow you down for no good reason.The most valuable impact of AI in design isn’t that it produces screens faster. It’s that it helps teams reach shared understanding sooner.When you use AI to explore ideas before Figma, prototype interactions quickly with Figma Make, and support documentation and handoff with clearer language, you reduce the gaps that slow mobile work down. Designers stay focused on judgment and quality. Developers get cleaner intent, fewer surprises, and more predictable implementation.AI is not a shortcut around good design. It’s a multiplier for teams that already care about doing it well, and a practical way to keep speed, clarity, and craft in balance.To learn more about Figma, check out the third edition of Designing and Prototyping Interfaces with Figma by Fabio Staiano.📘 Third edition of the bestselling book, updated with a new project, refreshed interface, and the latest design trends🧩 Build adaptive, production-ready UIs with variables, modes, components, variants, AI, and Auto Layout🔀 Prototype branched flows with conditional interactions and interactive componentsDesigning and Prototyping Interfaces with FigmaBuy now at $39.99This week’s news cornerNow that we’ve covered how AI can reduce friction inside Figma, let’s look at this week's news, where that same idea shows up often.Xcode 26.3 brings AI coding agents directly into iOS development: Apple’s Xcode 26.3 introduces agentic coding support, allowing iOS and macOS developers to use AI coding agents like Claude Agent and OpenAI Codex directly inside Xcode. These agents can explore documentation, adjust project settings, and assist across the build cycle. With Model Context Protocol support, developers also get more flexibility to plug in compatible AI tools into their app development pipeline.Kotlin 2.3.0 released: Kotlin 2.3.0 is out. It introduces unified companion object access across all JavaScript module systems. This will let exported companion objects behave the same way in ES modules, CommonJS, AMD, UMD, and more, which eliminates the previous inconsistencies in how they were accessed from JS/TS code. It also simplifies Kotlin/JS interop and avoids bugs caused by differing access patterns depending on the module system.iOS 26.4 beta could unlock major Siri upgrades for developers: Apple is expected to release the first iOS 26.4 developer beta during the week of February 23. This update could be a key milestone, as Siri is expected to gain deeper app integration features like on-screen awareness, personal context, and the ability to take actions inside apps. If delivered as promised, iOS 26.4 may open new opportunities for building more intelligent, voice-driven iOS experiences.Accelerating your insights with faster, smarter monetization data and recommendations: Google is rolling out enhanced monetization insights and actionable recommendations in the Google Play Console. It will provide developers with a clearer visibility into key business metrics like conversion, churn, ARPPU, and revenue drivers. With these updates, developers can make data-driven decisions faster, prioritize improvements with estimated ROI, and integrate real-time order data via the Orders API that will let you to track performance better and optimize app business outcomes.New Apple-backed AI model can generate sound and speech from silent videos: Apple and partners have developed a unified AI model called VSSFlow. This model can generate both sound effects and speech from silent videos using a single system. This addresses the limitations that existed in separate video-to-audio and speech generation models. Developers can utilize this new tech to enable richer multimedia features, faster prototyping of audio-visual interactions, and new accessibility possibilities by automating synchronized sound and speech creation directly from video content.👋 And that’s a wrap! We hope you enjoyed this edition ofMobilePro. If you have any suggestions and feedback, or would just like to say hi to us, please write to us. Just respond to this email!Cheers,Runcil Rebello,Editor-in-Chief, MobilePro*{box-sizing:border-box}body{margin:0;padding:0}a[x-apple-data-detectors]{color:inherit!important;text-decoration:inherit!important}#MessageViewBody a{color:inherit;text-decoration:none}p{line-height:inherit}.desktop_hide,.desktop_hide table{mso-hide:all;display:none;max-height:0;overflow:hidden}.image_block img+div{display:none}sub,sup{font-size:75%;line-height:0}#converted-body .list_block ol,#converted-body .list_block ul,.body [class~=x_list_block] ol,.body [class~=x_list_block] ul,u+.body .list_block ol,u+.body .list_block ul{padding-left:20px} @media (max-width: 100%;display:block}.mobile_hide{min-height:0;max-height:0;max-width: 100%;overflow:hidden;font-size:0}.desktop_hide,.desktop_hide table{display:table!important;max-height:none!important}}
Read more
  • 0
  • 0
Modal Close icon
Modal Close icon