← All projects
Full-time@ Toucan

Mobile Safari Extension Port

Dec 2019 – Mar 2023

Solo port of Toucan's browser extension to mobile Safari — sparse docs, heavy tinkering, one of the first extensions on Apple's marketplace.

Overview

Toucan wanted a mobile Safari extension — the company's first attempt. I was tasked solo with porting the desktop browser extension to mobile Safari. Apple’s extension model had very little documentation at the time. When the obvious path failed, I relied on tinkering and educated guesses from prior extension experience until it worked. It shipped as one of the first mobile extensions on the App Store extension marketplace.

My Role

Title
Senior Software Engineer I → II (early engineer)
Context
Solo owner of the mobile Safari port; separate from the main browser extension team flow in year one.
Scope
End-to-end port from desktop extension to mobile Safari with no playbook.

The Problem

Toucan had no mobile Safari presence and almost no internal knowledge of how to get there — Apple's extension APIs and docs were thin, and this was the company's first try.

What I Built

  • Chrome-to-Safari mobile port

    Problem
    The desktop extension couldn't run on mobile Safari without a ground-up port, and documentation didn't explain how.
    Fix
    Solo port of extension logic and behavior to mobile Safari — experimenting when docs ran out and guessing from extension experience when builds failed.
    Result
    A working mobile Safari extension where none existed before.
  • First marketplace ship

    Problem
    Mobile extension distribution was new territory for both Toucan and the App Store ecosystem.
    Fix
    Pushed the port through Apple's extension submission path until it was accepted.
    Result
    Shipped among the first mobile extensions on the App Store extension marketplace — early proof that Toucan could live outside desktop browsers.

Tech Stack

Safari Web ExtensionsiOSJavaScriptTypeScript

Outcome / Impact

I got Toucan's first mobile Safari extension live with no template to follow — solo, under-documented APIs, and iterative debugging. Do not claim to be the absolute first extension on the store; it was one of the early mobile extensions on the marketplace when that surface was new.