Happy 2026!

Mid-afternoon. Your iOS app’s onboarding is losing users at a critical stage. The team debates a redesign. Engineering says it’s “technically fine.” Metrics tell a different story.

You have two options:

1️⃣ Throw money at a UI redesign and hope for the best (weeks, expensive, uncertain)

2️⃣ Identify what’s actually blocking users (uncomfortable, but definitive)

Experience shows that identifying the real blockers first almost always saves weeks of work. After 25+ years building software, 15+ focused on Apple platforms, and dozens of apps in production, I’ve seen these blockers before — that’s what makes these sessions fast and effective, helping your team move quickly.

The pattern I see repeatedly

  • AR pipelines draining battery in minutes
  • Real-time video streams failing on mobile networks
  • Core ML models perfect in Python but breaking on device
  • Complex iOS/SwiftUI architectures slowing feature delivery
The insight: it’s rarely about the code. You’re stuck because the wrong question is being asked.

Real example: The onboarding challenge

The team kept asking: “How do we make the UI better?”

Wrong question.

Right question: “What’s stopping users from completing the flow?”

The blocker: Requesting camera + location permissions on screen one — before users understood the value.

The fix: Move permissions to contextual moments.

Result: Users completed onboarding more smoothly and reliably, without UI changes.

The 3 types of “stuck” I see most

1. Architecture Freeze

“We need to add features, but the code is a mess.”

What doesn’t work: Rewriting everything.

What works: Strategic refactoring. Modernize the single module blocking progress, then move to the next bottleneck.

2. Performance Black Hole

“The app works, but it’s slow. We’ve optimized everything.”

What doesn’t work: More optimization.

What works: Change the question. Don’t ask “How do we make this faster?” Ask “Why does the user need to wait?”

Example: BLE (Bluetooth Low Energy) handshake moved to background → perceived performance went from “unusable” to “instant.” Timing never changed.

3. Integration Nightmare

“This third-party SDK is breaking everything.”

What doesn’t work: Fighting the SDK.

What works: Isolation. Wrap it, abstract it, make it architecturally irrelevant.

Example: Video SDK isolated in a modular layer. Swap providers mid-project? Two days instead of two months.

How the diagnostic sessions work

As I mentioned in my post this morning, I’m opening a limited number of private diagnostic sessions this month for teams and developers.

These sessions are designed to give your team clarity, actionable insights, and a concrete plan:

Before the session: • You provide app/code access (NDA-protected) • I review architecture, flows, blockers • Identify the real problem

During the session: • Discuss findings • Map blockers • Define a clear, actionable plan your team can implement immediately

After: • You implement the plan (or your team executes) with confidence • Optional follow-up if needed

What you get:

✅ Clarity on the actual blockers

✅ Decision framework tailored to your app

✅ Execution roadmap with priorities

What you DON’T get:

❌ Hours of implementation

❌ Long-term staffing

❌ Generic consulting fluff

Limited slots — January 2026

Only a few sessions available this month — to ensure focus and high value.

Format: Remote — scheduled at a time that works for your team

DM me with:

  1. Brief description of your blocker
  2. Team size
First-come, first-served. Once slots fill, next availability is February.

P.S. — That onboarding fix became the template for every permission request in that app. Asking the right question at the right moment can save weeks of redesign work. That’s exactly what these sessions deliver.

👋 Author

Bruno Valente Pimentel — Senior iOS Architect & Consultant 25+ years building at the intersection of code, creativity, and communication.

☕ Enjoying Swift in Practice? It's free and reader-supported. If an edition saved you some debugging time, you can buy me a coffee: https://buymeacoffee.com/swiftinpractice

Originally published as a Swift in Practice edition on LinkedIn. Comments and discussion happen there.