MJ

Mobile development

Mobile app development for iOS and Android

Mobile app development with Flutter for iOS and Android, plus the backend behind it: offline-first, tested, automated releases and real-device performance.

Mobile apps are where I started as a software engineer in 2018, and they are still at the core of what I build: apps for iOS and Android, built with Flutter, with the backend and cloud behind them.

What I build

  • Cross-platform apps for iOS and Android from one Flutter codebase.
  • The backend around the app: APIs in TypeScript and Node.js, authentication, data and notifications on Firebase, Google Cloud or AWS.
  • Companion apps for connected devices.

How I approach mobile development

Start from the user's real context. One thumb on the bus, bad network, a notification at the wrong time. Designing for that context is most of good mobile UX.

Offline and bad networks by default. Cache what matters, queue what can wait, never lose user input because a request timed out.

A boring, clear architecture. Separate UI, state, domain and data layers, consistently applied, so new developers know where things go.

Test the critical paths. Many fast unit tests, focused widget tests, a few integration tests for sign-in and the main flows.

Automate releases. CI/CD from the first week, staged rollouts, crash reporting and analytics in production.

Measure performance on real devices. Startup time, frame rendering, memory and app size, on mid-range phones, not just the newest one.

Experience

  • Consultant building mobile products end to end for clients, from first prototype to the app stores.
  • Senior Flutter engineering in a product team, from UX to releases.
  • Founder of Settio, an AI-powered platform for newcomers in Sweden.

My checklist for long-lived apps is in Building mobile apps that last, and my FlutterCon Europe talk covers memory management in Flutter.

Talks on this topic

Projects

Writing