Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

native-fn

pjy0509675MIT1.0.26TypeScript support: included

app, app loader, app launcher, app-loader, app-launcher, appearance, engine, messenger, os, theme, theme color, theme-color

readme

Native.App API Reference

Overview

Native.App provides a unified interface for opening native applications across different platforms with cross-platform compatibility.


Interface

App

Main interface for native app operations.

interface App {
  open: (options: AppOpenOptions, target?: WindowProxy) => Promise<AppOpenState>;
  messenger: Messenger;
}

Methods

Native.App.open()

Opens a native application with platform-specific configurations.

Syntax

Native.App.open(options: AppOpenOptions, target?: WindowProxy): Promise<AppOpenState>

Parameters

Parameter Type Required Description
options AppOpenOptions Platform-specific app configuration
target WindowProxy Target window (default: current window)

Platform Options

Each platform requires different configuration parameters:

Android
{
  [Native.Constant.OS.Android]: {
    scheme: string;      // App URL scheme
    packageName: string; // Android package name
  }
}
iOS
{
  [Native.Constant.OS.iOS]: {
    scheme: string;      // App URL scheme
    packageName: string; // Bundle ID
    trackId?: string;    // App Store track ID (optional)
  }
}
Windows
{
  [Native.Constant.OS.Windows]: {
    scheme: string;    // App URL scheme
    productId: string; // Microsoft Store product ID
  }
}
macOS
{
  [Native.Constant.OS.MacOS]: {
    scheme: string;      // App URL scheme
    packageName: string; // Bundle ID
    trackId?: string;    // App Store track ID (optional)
  }
}

Examples

Basic Usage

Open Microsoft Excel across all platforms:

// Create a new tab for the app to open in
const newTab: WindowProxy = window.open("about:blank");

// Configure Excel for all platforms
const excelConfig = {
  [Native.Constant.OS.Android]: {
    scheme: "excel://",
    packageName: "com.microsoft.office.excel",
  },
  [Native.Constant.OS.iOS]: {
    scheme: "excel://",
    packageName: "com.microsoft.Office.Excel",
    // trackId: "586683407", // Uncomment if needed
  },
  [Native.Constant.OS.Windows]: {
    scheme: "excel://",
    productId: "cfq7ttc0k5bf",
  },
  [Native.Constant.OS.MacOS]: {
    scheme: "excel://",
    packageName: "com.microsoft.Excel",
    // trackId: "462058435", // Uncomment if needed
  }
};

// Open Excel
try {
  const result = await Native.App.open(excelConfig, newTab);
  console.log('Excel opened successfully:', result);
} catch (error) {
  console.error('Failed to open Excel:', error);
}

Single Platform Example

Open an app on a specific platform:

// Android only
const androidConfig = {
  [Native.Constant.OS.Android]: {
    scheme: "myapp://",
    packageName: "com.example.myapp",
  }
};

await Native.App.open(androidConfig);

Return Value

Returns Promise<AppOpenState> with information about the app opening state.


Error Handling

The method may reject with errors in the following cases:

  • App is not installed on the device
  • Invalid configuration parameters
  • Platform not supported
  • Network connectivity issues
try {
  await Native.App.open(config);
} catch (error) {
  if (error.code === 'APP_NOT_FOUND') {
    // Handle app not installed
  } else if (error.code === 'INVALID_CONFIG') {
    // Handle configuration error
  }
}

Best Practices

✅ Do

  • Always provide configurations for all target platforms
  • Use window.open("about:blank") for better user experience
  • Handle errors gracefully with try-catch blocks
  • Test on all target platforms

❌ Don't

  • Hardcode platform detection in your application logic
  • Ignore error handling
  • Use deprecated package names or schemes

Platform-Specific Notes

Android

  • Package names follow reverse domain notation
  • Ensure the app supports the specified URL scheme

iOS

  • Bundle IDs are case-sensitive
  • Track IDs are optional but recommended for App Store linking

Windows

  • Product IDs can be found in the Microsoft Store URL
  • Some apps may require additional permissions

macOS

  • Bundle IDs should match the app's Info.plist
  • Track IDs link to Mac App Store entries