Skip to main content

Extension Release & Beta Testing

Use this guide when an installed lock extension is ready for testing or public discovery. For a dashboard that only links Chastify accounts, use OAuth Account Linking instead.

An extension has two separate parts: the application registered in Chastify and the iframe/backend you host. Saving or releasing the Chastify application does not deploy your hosted code.

Understand the labels​

Label or settingWhat it means
Unreleased / TestingThe extension is available to its developer and listed beta testers. It is not in the general public selection.
ReleasedThe extension appears in the public extension selection. Subscription and lock permissions still apply.
PreviewDisplays an early-testing badge and a warning in setup. This is separate from release visibility: a released extension can still be marked Preview.
Beta testersThe Chastify accounts allowed to find and add an unreleased extension.
Beta-only accessAn administrative status/control for unreleased testing. Read the current limitation below before using it to restrict access.
FeaturedPlacement in the lock setup interface. This is separate from release and testing status.

Public release, Preview, Featured, and premium settings are managed by Chastify administrators/site owners. Ordinary developers can create and edit their own extensions and manage their tester list; the status cards are not public-release buttons for every developer.

Current Beta-only access limitation

Turning Beta-only access off does not currently remove a listed tester's ability to find or add an unreleased extension. Those checks use the saved Beta testers list. To stop a particular account from adding the unreleased extension, remove that account from the list and save. Existing installations are a separate matter, explained below.

Create a test extension​

  1. Open Developer API → Create extension.
  2. Choose a unique slug and a clear display name. Add a summary that tells testers what the extension changes.
  3. Supply the Main iframe URL and Setup iframe URL. The ordinary developer form requires both; host the runtime and configuration screens before testing.
  4. Configure the scopes, configuration/state schemas, recurring actions, or webhooks your extension needs.
  5. Add testers now, or save the extension and add them later through Edit.
  6. Select Create. An ordinary developer's new extension begins unreleased.

The developer account can find its own unreleased extension without adding itself as a tester. Follow Iframe Quickstart for the launch and bridge flow and Developer API Overview for backend credentials and role restrictions.

Use a separate test application and test lock when changing rewards, punishments, or unlock requirements. A test application avoids changing the registered URLs or settings used by an existing public application.

Add and remove beta testers​

  1. Under Developer API → Applications, choose Edit on your extension.
  2. Find Beta testers and type at least two characters of the tester's Chastify username.
  3. Select the correct account from the search results. Typing a name without selecting a result does not add it.
  4. Repeat for other accounts, then select Save.
  5. Tell each tester which extension to search for and which Chastify account was added.

The selected accounts appear as chips. Select a chip marked Remove tester, then Save, to remove that account from the list.

Adding a tester does not install the extension on their lock, make them a keyholder, or give them your developer credentials. They use their own account and the normal extension setup flow.

What testers do​

  1. Sign in with the account the developer added.
  2. Open the extension selection from a lock or template setup they can configure.
  3. Search for the extension's name or slug. Unreleased entries show Testing; Preview may also appear.
  4. Select Add, complete the setup screen, and save the lock/template configuration.
  5. Open the installed extension from the test lock and try the intended workflow.

For a shared lock, the account performing setup needs the appropriate access. Adding the wearer as a tester does not automatically add their keyholder to the tester list. Add the accounts that need to configure the unreleased extension.

Plan requirements still apply during testing. A visible extension can have its Add button disabled when the required subscription is unavailable. Visibility also does not override the permissions checked when the extension requests a lock or device action.

Useful checks before public release:

  • Open, save, close, and reopen the setup screen; confirm that saved configuration is retained.
  • Try the runtime in both themes and on a narrow screen, including resize and error messages.
  • Check the wearer and keyholder flows separately if both are supported.
  • Test the backend with the current launch token and handle an expired or replaced token.
  • Verify success, failure, and interruption of any requirement or reward without applying the same outcome twice.
  • For file-based setup, check saved files and changed configurations using Extension File Storage.

Public release and administrative controls​

The extension's developer can prepare and test the application, but changing public-release status requires an administrator or site owner. Share the application name/slug and the behavior that has been tested with the person managing its release.

An administrator can open Developer API → Applications → All applications and use the extension's status controls:

  • Turn Released on to make the extension publicly discoverable. This turns Beta-only access off.
  • Turn Preview on when the public or test version should carry an early-testing warning. Preview alone does not release the application.
  • Turn Beta-only access on to switch an application to unreleased testing. At least one saved tester is required, and enabling it turns Released off.
  • Turn Released off to remove general public discovery. The developer and listed testers remain eligible for the unreleased application.

These controls change Chastify's application settings. They do not upload a build, create a separate hosted beta version, or replace testing of your server and iframe.

Update an existing extension​

Choose Edit on your application to update its name, summary, iframe URLs, schemas, tester list, or other supported settings, then Save. Deploy hosted frontend/backend changes through your own hosting workflow.

Existing installed extensions load the application's current runtime URL and settings when Chastify loads their extension information. Their per-lock configuration and state can already contain data created by an older version. Keep changes compatible with that data or provide an explicit migration in your own extension.

A public extension's tester list does not route those users to different code. To test a different URL or incompatible configuration before changing the public application, use a separate test application.

Saving an unreleased application also re-enables its administrative beta flag. Together with the current Beta-only access limitation, this means that flag should not be treated as a reliable pause switch.

Removing access and retiring an extension​

Removing a tester or turning Released off changes eligibility for discovery and adding the extension. It does not automatically remove or disable an extension already installed on a lock. Installed sessions can continue while the app is active, the extension is enabled, and the participant's lock access remains valid.

Coordinate retirement with affected users and account for any active unlock blockers, requirements, stored files, or backend work. Hiding an application is not a substitute for resolving those running sessions.

The app rejects deletion while Released is enabled with cannot_delete_released. Do not use deletion as a routine way to pause testing or roll back a hosted deployment.

Troubleshooting​

ProblemCheck
A tester cannot find the extensionConfirm the selected Chastify account was saved in Beta testers, refresh the extension list, and search by slug.
The extension is missing from the Add list after installationThe picker excludes extensions already added to that configuration. Open the existing entry instead.
Released or Preview cannot be changedThose are administrative controls. Ordinary developer status cards are read-only.
Enabling beta-only access failsAdd and save at least one tester first.
A tester still sees the app with beta-only access offThe current listing/install checks still accept accounts on the tester list. Remove the account and save if it should no longer add the unreleased app.
A removed tester still opens an installed extensionTester removal does not revoke existing installation access. Review the lock's enabled extension and current participant access separately.
extension_not_availableThe account adding an unreleased app is neither its developer nor a listed tester.
premium_requiredThe relevant account/lock needs the extension's required plan. Tester status does not waive it.
Setup or runtime loads but bridge calls failCheck the hosted URLs and origins, then follow Troubleshooting.