{"revision":"c10276e953456835cdbb1f3a60d58ae1980be353","document":{"id":1941,"path":"application-development/configuration-model.md","title":null,"bundle":null,"doc_type":null,"release":null,"body":"---\ntitle: Configuration model\ndescription: Lux makes a component's behavior configurable at three levels: code, admin policy, and individual preference without three separate systems to learn. You add one decorator, @config, to a class field to opt a property into all of it.\nlocale: en-US\ncanonical_url: https://www.servicenow.com/docs/r/australia/application-development/configuration-model.html\nrelease: australia\ntopic_type: concept\nlast_updated: \"2026-10-03\"\nreading_time_minutes: 2\nkeywords: [Configuration model, Three players, Default value, Promotion and upgrade safety, What this chapter covers]\nbreadcrumb: [Configure experiences, Lux Development, Building pro-code applications, Developing your application, Building applications]\n---\n\n# Configuration model\n\nLux makes a component's behavior configurable at three levels: code, admin policy, and individual preference without three separate systems to learn. You add one decorator, `@config`, to a class field to opt a property into all of it.\n\nConfiguration is stored as metadata override layers rather than as a code fork, so an admin's changes reapply cleanly across upgrades.\n\n## Three players\n\nEvery configurable value passes through the same three parties:\n\n-   **Declare: developer**\n\n    Tags which properties are configurable, sets the code-level default, and defines the choices, types, and labels that drive the generated config UI. Nothing is editable until it is declared.\n\n-   **Configure: customer admin**\n\n    Configures shipped pages and widgets directly on the live page, in non-production, then promotes the change through an update set.\n\n-   **Personalize: end user**\n\n    Adjusts their own view within admin-defined bounds.\n\n\nAs the developer you only need to read `this.propertyName` in your component. The framework resolves the value that getter returns.\n\nConfiguration is not a replacement for UI Builder, a tool for building widgets or pages, or a standalone no-code builder. This is a pro-code workflow: a developer writes the declaration, and an admin configures what the developer declared.\n\n## Default value\n\nA `@config` property resolves to its developer default, the value assigned in your code.\n\n## Promotion and upgrade safety\n\n`sys_aix_configuration` extends `sys_metadata`, so admin configuration participates in update sets exactly like a business rule or a UI policy; no special export or import path.\n\n**Related topics**  \n\n\n[Configurable properties for Lux experiences](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/australia/application-development/configurable-properties.md)\n\n[Inline configuration](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/australia/application-development/inline-configuration.md)\n\n[admin-experience]\n\n[Regions and the wrapper contract](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/australia/application-development/regions-and-the-wrapper-contract.md)\n\n[Theming model](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/australia/application-development/theming-model.md)\n\n"}}