# AppProps

Initialization props for apps.

Extends: AppProps
Used as props by: App

- Source: [`core/lib/app.ts`](https://github.com/aws/aws-cdk/blob/v2.275.0/packages/aws-cdk-lib/core/lib/app.ts#L39)
- Type last changed: v2.275.0 · 26 Oct 2026

## Example

```ts
import { BucketEncryption } from 'aws-cdk-lib/aws-s3';

const app = new App({
  defaultStackSynthesizer: AppStagingSynthesizer.defaultResources({
    appId: 'my-app-id',
    stagingBucketEncryption: BucketEncryption.S3_MANAGED,
    deploymentIdentities: DeploymentIdentities.specifyRoles({
      cloudFormationExecutionRole: BootstrapRole.fromRoleArn('arn:aws:iam::123456789012:role/Execute'),
      deploymentRole: BootstrapRole.fromRoleArn('arn:aws:iam::123456789012:role/Deploy'),
      lookupRole: BootstrapRole.fromRoleArn('arn:aws:iam::123456789012:role/Lookup'),
    }),
  }),
});
```

## Properties

- `analyticsReporting`: boolean — Include runtime versioning information in the Stacks of this app.

  **Default:** Value of 'aws:cdk:version-reporting' context key

- `autoSynth`: boolean — Automatically call `synth()` before the program exits.

  **Default:** true if running via CDK CLI (`CDK_OUTDIR` is set), `false` otherwise

  If you set this, you don't have to call `synth()` explicitly. Note that
  this feature is only available for certain programming languages, and
  calling `synth()` is still recommended.

- `builtinCloudFormationValidation`: boolean = true — Whether to enable built-in CloudFormation template validation.

  CDK ships with a CloudFormation template validation plugin that
  is enabled by default (see `CloudFormationValidationPlugin`).

  To disable the built-in validation, you can do one of these things:

  - Set this property to `false`.
  - Run `cdk synth --no-validation`.
  - Set `CDK_VALIDATION=false` in your environment.
  - Register a custom configured instance of `CloudFormationValidationPlugin`
    on the `app` object.

- `confirmValidationPluginsDoNotMutate`: boolean = false — Confirm that validation plugins treat the assembly directory as read-only.

  Validation plugins should only read files in the `cdk.out` directory, and not modify or
  delete any.

  If this is set to `true`, the CDK will calculate a hash of all files in the
  assembly directory before running validation plugins and verify that the
  hashes match afterwards, to ensure no files got deleted or modified. You
  only need to set this if you do not trust your validation plugins to have
  been implemented correctly.

- `context`: { [key: string]: any } — Additional context values for the application.

  **Default:** no additional context

  Context set by the CLI or the `context` key in `cdk.json` has precedence.

  Context can be read from any construct using `node.getContext(key)`.

- `defaultStackSynthesizer`: [IReusableStackSynthesizer](/cdk/api/v2/docs/aws-cdk-lib.IReusableStackSynthesizer.html) — The stack synthesizer to use by default for all Stacks in the App.

  **Default:** A `DefaultStackSynthesizer` with default settings

  The Stack Synthesizer controls aspects of synthesis and deployment,
  like how assets are referenced and what IAM roles to use. For more
  information, see the README of the main CDK package.

- `outdir`: string — The output directory into which to emit synthesized artifacts.

  **Default:** If this value is _not_ set, considers the environment variable `CDK_OUTDIR`. If `CDK_OUTDIR` is not defined, uses a temp directory.

  You should never need to set this value. By default, the value you pass to
  the CLI's `--output` flag will be used, and if you change it to a different
  directory the CLI will fail to pick up the generated Cloud Assembly.

  This property is intended for internal and testing use.

- `performanceReporting`: boolean — Produce a performance counter report if supported by the CLI.

  **Default:** Value of 'aws:cdk:performance-reporting' context key

  The performance report will be produced if the total synthesis time
  exceeds 10 seconds/stack, unless this property is used to switch the
  report off altogether (set to `false`).

- `policyValidationBeta1`: [IPolicyValidationPluginBeta1](/cdk/api/v2/docs/aws-cdk-lib.IPolicyValidationPluginBeta1.html)[] — Use `Validations.of(app).addPlugins()` instead.

  **Default:** no validation plugins

- `postCliContext`: { [key: string]: any } — Additional context values for the application.

  **Default:** no additional context

  Context provided here has precedence over context set by:

  - The CLI via --context
  - The `context` key in `cdk.json`
  - The `AppProps.context` property

  This property is recommended over the `AppProps.context` property since you
  can make final decision over which context value to take in your app.

  Context can be read from any construct using `node.getContext(key)`.

  ```ts
  // context from the CLI and from `cdk.json` are stored in the
  // CDK_CONTEXT env variable
  const cliContext = JSON.parse(process.env.CDK_CONTEXT!);

  // determine whether to take the context passed in the CLI or not
  const determineValue = process.env.PROD ? cliContext.SOMEKEY : 'my-prod-value';
  new App({
    postCliContext: {
      SOMEKEY: determineValue,
    },
  });
  ```

- `propertyInjectors`: [IPropertyInjector](/cdk/api/v2/docs/aws-cdk-lib.IPropertyInjector.html)[] — A list of IPropertyInjector attached to this App.

  **Default:** no PropertyInjectors

- `stackTraces`: boolean — Include construct creation stack trace in the `aws:cdk:trace` metadata key of all constructs.

  **Default:** true stack traces are included unless `aws:cdk:disable-stack-trace` is set in the context.

- `treeMetadata`: boolean = true — Include construct tree metadata as part of the Cloud Assembly.
