Custom development environments with stages/parameters

I would like to see the ability to define account development profiles defining custom “stages” for apps, and settings for the stages.

  • A profile contains a set of user defined stages (Live, testing, development, etc.) with settings for those stages (described below).
  • Profiles of stages defined at the account level. Multiple profiles allowed.
  • In an app, select the development profile to use.
  • Within an app, allow “duplicate a profile, and edit” to allow a derivative profile to be created quickly for an app.

These features should be definable (and optional) within a profile:

  • Base URL field for each defined stage, this becomes the base URL for all features in an app.
  • Authentication URL for each stage, this becomes the authentication URL if enabled in all app features.
  • Install/app lifecycle webhook URL for each stage.
  • OAuth callback URL for each stage.
  • Sharing setting per stage.

With the app itself:

  • Selection of the development profile to apply. Or leave the app using the default provided profile (matching current stages and behaviors).
  • In the webhook configuration, provide a grayed field for each defined stage in the profile, with a checkbox to override that stage.
  • Track installs per version, allowing us to install/uninstall a test or draft version to be visible to non-collaborators without going live (so internal non-devs can test without affecting customers)
  • Per version sharing URLs so beta versions may be shared with specific end customers (such as those requesting a feature or who are experiencing a bug to get confirmation of resolution)

Within the app features (using Integrations as an example).

  • Base URL field for the stage in each feature.
  • Authentication URL for the stage in each feature.
  • Other URLs depending on feature type.
  • Provide an override checkbox for each stage IF its defined at the profile level within each feature for each URL/setting.
  • For view apps, the URLs will be custom per stage - though a “base URL” would be useful so only the path needs to be defined if many apps are served by the same infrastructure.

These enhancements allow us to

  • manage our development cycles
  • set up an app to use existing environments (apps that are too big are hard for users to understand the functionality and then navigate)
  • eliminate the need to change URLs multiple times in a version (lots of footguns here)
  • allows us to share an app version with a customer experiencing a bug or requested a new feature before release
  • allow non-collaborators on an app to test the app within the dev account
  • test install webhooks without going live, (bug fixes, or installing into a development or test environment).

Hi @codyfrisch,

Thanks for sharing this feedback!

I think this would be a great addition to our framework. To make sure I understand this request, would this be something like a more robust versioning manager? Maybe these features could be made as improvements to our app version feature.

I know this has been a popular ask from our developers, so I’m wondering if you have the same thing in mind :slight_smile:

Thanks again for the great ideas always!

It goes along with the version manager, right now versions can either be Live or Draft “stages”. This would allow the definition of custom stages (beside Live & Draft). It also ties properties like URLS, sharing, etc. to the different stages. That way we can have a testing and production environment, and not have to go into the app and change URLs during testing, then make sure to change them all back before going live.

It just gets really tiresome and you risk shooting yourself in the foot changing things.

I’d like the profiles to exist outside of individual apps to allow reuse. Our apps run in the same environments, so being able to have one set of stages with settings that all our apps shares makes it very easy to migrate things and change every app at once.

Hello @codyfrisch,

Thank you for the request and the explanation!

I have shared this with our team so it can be considered :slightly_smiling_face: