Skip to content

Case study

One forms engine, three enterprise apps

Enablon's inspection, audit and reporting apps all draw their screens from the same native forms engine. I owned that engine on iOS for more than five years, while three products shipped on top of it.

No time for a call? Write to me: every email gets a reply within one business day.

Client
Enablon (Wolters Kluwer)
Role
iOS technical owner
Period
2019 to 2024

The problem

Enterprise customers configure their own forms, so the app cannot know its screens in advance. Every field, rule and dependency arrives from the server, has to work offline on a factory floor, and cannot break the two other apps that share the same engine.

What I did

  1. Server-driven forms

    Screens built at runtime from the server's definition: conditional fields, validation rules, dependencies between fields and auto-filled values.

  2. Offline first

    Checklists completed without a network, stored locally and synced when the device reconnects, because inspections happen where there is no signal.

  3. One engine, three products

    Inspection, Go and Audit consume the same SDK, so a change had to be safe for all three and released on a schedule they shared.

  4. Enterprise plumbing

    OAuth 2.0 with PKCE, OData APIs, Arabic right to left support and a 12-language redesign of the Go app.

Where it stands

  1. Three apps on one engine

    Inspection, Go and Audit shipped on the shared SDK, with releases managed from release candidate to production.

  2. Five years of ownership

    The engine stayed in service across versions, teams and customers, which is the real test of this kind of component.

Questions I get asked

Can you build something similar for us?
Yes, and the first question is how much your forms really vary. A server-driven engine pays off when customers configure their own screens; when they do not, it is complexity you will pay for twice.
How do you keep a shared SDK from breaking its apps?
Versioned releases, a test suite over the rule engine, and one owner who reviews what each app depends on.

Stack

  • Swift
  • UIKit
  • SwiftUI
  • Realm
  • OData
  • OAuth 2.0 PKCE
  • Azure DevOps

This project is under NDA, so client details and internal specifics stay off this page.

Related services

Other case studies

Want something like this built?

Book a 20-minute call and tell me about your app. I will tell you what I would do first.

No time for a call? Write to me: every email gets a reply within one business day.