# AUR0714

### **Status: Removed**

This error code has been removed. The `primary` property on bindable definitions no longer exists.

### Previous Error Message

Template compilation error: primary already exists on element/attribute "{{0}}"

### Migration

In previous versions of Aurelia 2, you could mark a bindable property as `primary: true` to indicate which property should receive values when using shorthand syntax. This has been replaced with the `defaultProperty` option on the custom attribute definition.

**Old API (no longer supported):**

```typescript
import { bindable, customAttribute } from 'aurelia';

@customAttribute('my-attr')
export class MyAttribute {
  @bindable({ primary: true }) value: string;
  @bindable other: string;
}
```

**New API:**

```typescript
import { bindable, customAttribute } from 'aurelia';

@customAttribute({ name: 'my-attr', defaultProperty: 'value' })
export class MyAttribute {
  @bindable value: string;
  @bindable other: string;
}
```

The `defaultProperty` option specifies which property receives the value when the attribute is used with shorthand syntax. If not specified, it defaults to `'value'`.

See the [Custom Attributes documentation](https://github.com/aurelia/aurelia/blob/master/templates/custom-attributes.md#default-property) for more details.
