Writing

Giving back, one bridge at a time

Mar 2, 20252 min readOpen SourceReact Native

Every app I have ever shipped stands on code I got for free. Navigation, state, animations, the bridge itself — somebody wrote that, documented it, answered the issues, and asked for nothing. I've been taking from that pot for years. This week I finally put something back: react-native-app-shortcuts, my first open-source package.

The itch

It started the way these things usually do: I needed home-screen shortcuts — the quick actions that pop up when you long-press an app icon — and the existing options were either stale or solved only half the problem. iOS calls them UIApplicationShortcutItem, Android calls them App Shortcuts, and they are just different enough to be annoying. I had written that bridge before for a client app. Writing it a second time for another app was the signal: this should be a package.

So now it's one interface for both platforms:

pnpm add @mbdayo/react-native-app-shortcuts
import AppShortcuts from "@mbdayo/react-native-app-shortcuts";

await AppShortcuts.setShortcuts([
  {
    type: "compose",
    title: "New message",
    iconName: "compose_icon",
  },
]);

AppShortcuts.addListener((shortcut) => {
  // route the user wherever the shortcut points
});

There's also isSupported() for older devices, getInitialShortcut() for cold starts, and full support for the New Architecture — Fabric and TurboModules — because a package published in 2025 shouldn't make you choose between convenience and the future.

What shipping a package teaches you

Building for strangers is a different sport from building for users. An app hides its internals; a library is its internals. Every method name is a promise, every default is an opinion someone will inherit, and the README does the job your onboarding flow used to do. I rewrote the API surface three times before publishing, and it's still the part I expect to regret first.

Open source is the only place in software where the code review never ends. That's the deal — and honestly, it's the appeal.

The commitment

This is the first package under the @mbdayo scope, not the last. The plan is simple: every time I solve a native-bridge problem twice, it becomes a package. Giving back shouldn't be a someday thing — the ecosystem that built my career runs on people deciding it's a now thing.

If you try it and something's off, open an issue. The code review never ends, remember.