Skip to main content
The Mira Flow app login screen on a tablet.

Mira Flow

Creating a companion to a handsfree app, enabling a unified platform for workflows

  • React Native
  • Swift
  • Typescript
  • MobX

The problem

Mira’s headset workflows worked well for handsfree tasks, but clients also had workflows that were too input heavy for a headset alone. They needed a companion surface that could handle observation, forms, photos, and review while still belonging to the same workflow platform. A tablet app gave the company a way to support more use cases, keep more client work inside the product, and open a new revenue path.

A headset operator doing a workflow handsfree.
The Mira Flow team login screen with list of teams to choose on a tablet.
The Mira Flow collections screen a file and folder directory for workflows.

Architecture

The stack needed to move quickly without splitting the team too far from its existing strengths. We chose React Native so web engineers could contribute and the Unity team could expose native modules where the app needed platform specific support. The harder architectural work was moving workflow and compliance logic from C# into TypeScript while respecting the differences between headset and tablet use. The final stack paired a Node.js API with a React Native client and Swift modules for queueing and uploading heavier workflow data.

Development

I started by rebuilding the workflow logic in TypeScript from an undocumented C# implementation. Once that foundation was working, I built the main app UI: authentication for individual and team login, tab navigation for workflows, recents, and history, and a directory style workflow browser that needed to feel fast on tablet. I then integrated the app with the API, including route updates so mobile activity could be tracked correctly in the database and analytics. For workflows with images, we moved uploads into a Swift queue so heavy file work did not block the JavaScript thread.

The Mira Flow reference photo screen with a photo of a utility to be inspected.
The Mira Flow step screen with a yes/no input for the user to select.
The Mira Flow step screen with a number input for the user to enter a number.
The Mira Flow step screen with a select input for the user to choose from a list of options.

Learnings

Mira Flow was a big step forward in responsibility and my first real move into mobile development. React Native made the transition approachable, but the development rhythm and platform details were different enough to stretch me. The workflow engine also taught me how much clarity matters when translating complex conditional logic across platforms. One lesson that stuck was to avoid optimizing too early: it is usually better to get the full flow working clearly, then optimize the parts that are actually under pressure.

The Mira Flow recent screen showing a list of workflows that have been recently done.
The Mira Flow history screen showing a list of flows that have been completed.