-
Notifications
You must be signed in to change notification settings - Fork 598
🔌 Plugin: Input Synchronization #8306
Description
🔖 Summary
Input Synchronization Plugin automatically keeps your Backstage template inputs aligned by seamlessly sharing and updating values across custom input fields.
🌐 Project website (if applicable)
No response
✌️ Context
Backstage does not automatically resolve form data using only the template’s YAML definition. Instead,
any data transformation or value resolution must be explicitly declared within each custom field extension.
In our initial approach, the fromFormField solution required manually updating and defining the schema for every UI options field that needed support for passing values from user inputs.
This made the solution difficult to scale and maintain.
Previously, passing values between custom input fields required field-specific logic like fromFormField or fromFormFieldArgs, which varied per component. For example:
## Old way
## AzureResourcePicker is a custom field extension
keyVaultName:
title: Key Vault Name
type: string
description: IRG Key vault containing Second Day Azure Purpose Credentials (subscription Key, client ID, Client secret).
ui:field: AzureResourcePicker
ui:options:
optionValue:
jsonata: name
query:
format: |
resources
| where type == "microsoft.keyvault/vaults"
| where tags['AzDOConsumerACEPurposeCode'] == "%s"
| project name
fromFormFieldArgs: ["itProduct"]The Input Sync Plugin introduces a straightforward and consistent syntax ${{ fieldName }} that allows templates to reference and reuse values from other form fields.
This removes the need for custom logic inside each field extension and makes cross‑field value propagation intuitive.
## AzureResourcePicker is a custom field extension
keyVaultName:
title: Key Vault Name
type: string
description: IRG Key vault containing Second Day Azure Purpose Credentials (subscription Key, client ID, Client secret).
ui:field: AzureResourcePicker
ui:options:
optionValue:
jsonata: name
query: |
resources
| where type == "microsoft.keyvault/vaults"
| where tags['AzDOConsumerACEPurposeCode'] == "${{ itProduct }}"
| project name👀 Have you spent some time to check if this plugin request has been raised before?
- I checked and didn't find similar issue
✍️ Are you willing to maintain the plugin?
- I understand the responsibilities as a Plugin Maintainer Governance & will maintain the plugin
🏢 Have you read the Code of Conduct?
- I have read the Code of Conduct
Are you willing to submit PR?
Yes I am willing to submit a PR!