---
id: plugin-distribution
title: Plugin Distribution
---

import FbPluginReleases from './fb/desktop-plugin-releases.mdx'

<OssOnly>

## Publishing to npm

Flipper plugins are essentially standard npm packages, which means you can publish them by executing `yarn publish` or `npm publish` in the plugin directory.

The only requirements are:

1. `package.json` and code must follow the [Flipper plugin specification](desktop-plugin-structure.mdx#plugin-definition)
2. Code must be bundled using "flipper-pkg" before packing or publishing. This can be done by executing `flipper-pkg bundle` on `prepack` step:

    ```json
    {
      ...
      "devDependencies": {
        ...
        "flipper-pkg": "latest"
      },
      "scripts": {
        ...
        "prepack": "flipper-pkg bundle"
      }
    }
    ```

</OssOnly>

<FbInternalOnly>

## Publishing plugins

<FbPluginReleases />

</FbInternalOnly>

## Packaging to File

To package a plugin as a tarball, you can use the same command as for packaging any other npm package (using `yarn pack` or `npm pack`).

`flipper-pkg` also provides a convenient command `pack` that does the following:

1. Installs the plugin dependencies.
2. Bundles the plugin.
3. Creates the tarball and saves it at the specified location.

Example

To package a plugin located at `~/flipper-plugins/my-plugin` to `~/Desktop`, execute the following command:

```sh
flipper-pkg pack ~/flipper-plugins/my-plugin -o ~/Desktop
```

## Installation from File

It's possible to install plugins into Flipper from tarballs. This is useful in cases when you need to try a plugin version that is not published to npm, or if you want to distribute plugin privately.  Take the following steps:

1. Launch Flipper.
2. Click the 'Manage Plugins' button in the bottom-left corner.
3. Select the 'Install Plugins' tab in the opened sheet.
4. Specify the path to the plugin package (or just drag and drop it) and click 'Install'.
