Teardown

Plugins

Extend your app with native capabilities.

Plugins add native capabilities to your app without manual native code changes. Configure plugins in teardown.config.ts and they're applied during prebuild.

Using Plugins

List Available Plugins

teardown plugins list

Get Plugin Info

teardown plugins info camera

Shows:

  • Plugin name and description
  • Supported platforms
  • Configuration options
  • Usage examples

Configuration

Add plugins to your teardown.config.ts:

import { defineConfig } from "@teardown/cli";

export default defineConfig({
  // ...
  plugins: [
    // Simple string format
    "camera",
    "location",
    
    // With configuration
    ["camera", {
      cameraPermission: "We need camera access to scan documents",
    }],
    
    ["location", {
      locationPermission: "We need your location for navigation",
      backgroundLocation: true,
    }],
  ],
});

Available Plugins

Camera

Camera access for photos and videos.

plugins: [
  ["camera", {
    cameraPermission: "Take photos for your profile",
    microphonePermission: "Record video with audio",
  }],
]
OptionTypeDescription
cameraPermissionstringiOS camera permission message
microphonePermissionstringiOS microphone permission message

Location

Location services and GPS access.

plugins: [
  ["location", {
    locationPermission: "Find nearby restaurants",
    backgroundLocation: false,
  }],
]
OptionTypeDescription
locationPermissionstringPermission message
backgroundLocationbooleanEnable background location

Push Notifications

Push notification support.

plugins: [
  ["push-notifications", {
    enableBadge: true,
    enableSound: true,
  }],
]
OptionTypeDescription
enableBadgebooleanShow badge on app icon
enableSoundbooleanPlay notification sounds

Biometrics

Face ID / Touch ID authentication.

plugins: [
  ["biometrics", {
    faceIDPermission: "Authenticate securely with Face ID",
  }],
]
OptionTypeDescription
faceIDPermissionstringiOS Face ID permission message

Deep Linking

URL scheme and universal link handling.

plugins: [
  ["deep-linking", {
    scheme: "myapp",
    associatedDomains: ["applinks:myapp.com"],
  }],
]
OptionTypeDescription
schemestringCustom URL scheme
associatedDomainsstring[]iOS associated domains

Firebase

Firebase SDK integration.

plugins: [
  ["firebase", {
    googleServicesFile: "./GoogleService-Info.plist",
    googleServicesJsonFile: "./google-services.json",
  }],
]
OptionTypeDescription
googleServicesFilestringPath to iOS config file
googleServicesJsonFilestringPath to Android config file

Contacts

Access to device contacts.

plugins: [
  ["contacts", {
    contactsPermission: "Invite friends to the app",
  }],
]

Calendar

Calendar access.

plugins: [
  ["calendar", {
    calendarPermission: "Schedule events in your calendar",
  }],
]

Photo Library

Photo library access.

plugins: [
  ["photo-library", {
    photoLibraryPermission: "Select photos to upload",
    savePhotosPermission: "Save photos to your library",
  }],
]

Bluetooth

Bluetooth connectivity.

plugins: [
  ["bluetooth", {
    bluetoothPermission: "Connect to Bluetooth devices",
  }],
]

Sign in with Apple

Apple authentication.

plugins: [
  "sign-in-with-apple",
]

No configuration options required.

Plugin Processing

During teardown prebuild, plugins:

  1. Add dependencies - Native libraries are added to Podfile/build.gradle
  2. Configure permissions - Permission strings added to Info.plist/AndroidManifest
  3. Modify native files - Necessary code changes applied
  4. Generate code - Any required boilerplate generated

Plugin Order

Plugins are processed in order. Some plugins may depend on others:

plugins: [
  // Firebase should come before push notifications if using FCM
  "firebase",
  "push-notifications",
  
  // Independent plugins can be in any order
  "camera",
  "location",
]

Troubleshooting

Unknown Plugin

Unknown plugin: xyz

Check available plugins:

teardown plugins list

Plugin Conflicts

If two plugins conflict:

  1. Check plugin documentation for compatibility
  2. Try reordering plugins
  3. Run teardown prebuild --clean to start fresh

Permissions Not Working

After adding a permission plugin:

teardown prebuild --clean
teardown run ios

iOS may cache permissions - delete the app and reinstall.