Docs

Build the plugin from source

This is not how you install Apple. It is the development and debugging path, for people changing the plugin's code. If you want to use Apple, go toInstall Apple Studio — the Creator Store is the only supported install path, and a hand-built plugin is unsupported, unsigned and updated by nobody but you.

Build apps/apple-plugin and nothing else. There is a second Studio plugin in the repository, apps/plugin. It is the legacy source of an older, retired Creator Store listing, it executes Luau it receives over the wire, and it must not be loaded into a Studio you care about. Its own README says so in its first line.

Build it

The plugin this product ships lives in apps/apple-plugin. Build it with the repository's own script, which needs Node, python3,luau-analyze andRojo — version7.7.0, the version this repository pins.

Terminal
node apps/apple-plugin/scripts/build.mjs…RESULT: the shipped bytes carry the capabilities this source claimsLocal preview built, inspected and verified against its own source; not installed or published.

It parses every source, refuses a require of a module that is not bundled, runs Rojo, and then reads the built artifact back — scanning it for credentials and developer paths, and checking that the capabilities the source claims are actually in the bytes. That last step exists because the legacy build once shipped with a version string and a feature set its own source disagreed with, and every test passed because every test read the.luau. The result isapps/apple-plugin/release/apple-studio.rbxm.

Load it as a local plugin

Drop the .rbxm into Studio's local plugins folder and restart Studio:

Windows

%LOCALAPPDATA%\Roblox\Plugins

macOS

~/Documents/Roblox/Plugins

Studio's Plugins tab has a Plugins Folder button that opens the same directory, which is the reliable way to find it if the path above does not exist yet. Remove a local build by deleting the file and restarting Studio.

Do not run both at once. A local build and a Creator Store install are two separate plugins as far as Studio is concerned. Running both gives you two Apple buttons, two panels and two pollers fighting over the same place. Disable or remove one.

Iterating on the code

For live editing, Roblox's own workflow beats rebuilding: enablePlugin Debugging Enabled in Studio's settings, useSave as Local Plugin from the Plugins menu, and work from the copy inside PluginDebugService. Right-click it forSave and Reload Plugin to apply changes without restarting Studio.

One behavioural difference worth knowing while debugging: our plugin source notes that a locally-installed plugin does not go through Studio's per-plugin HTTP permission prompt, while a Creator Store install does. That is an observation about our own builds, not a documented Roblox guarantee — so test the permission path against a real store install before trusting it, and never assume users get the frictionless version you do.

Publishing an update

Releases are cut by hand, from Studio: Plugins menu →Publish as Plugin → Overwrite an existing asset, selecting the existing Apple asset so the id stays stable. There is no automated path: Roblox's Open Cloud asset API does not support the Plugin asset type at all, and its update endpoint can only replace content for models. Budget a human in Studio for every version.

Users do not receive that update automatically — see Updating. Assume a long tail of installs running old builds, permanently, and keep the server tolerant of them.