<!--
{
  "availability" : [
    "iOS: 17.0.0 -",
    "iPadOS: 17.0.0 -",
    "macCatalyst: -",
    "macOS: 14.0.0 -",
    "tvOS: 17.0.0 -",
    "visionOS: 1.0.0 -",
    "watchOS: 10.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "Symbols",
  "identifier" : "/documentation/Symbols/PulseSymbolEffect",
  "metadataVersion" : "0.1.0",
  "role" : "Structure",
  "symbol" : {
    "kind" : "Structure",
    "modules" : [
      "Symbols"
    ],
    "preciseIdentifier" : "s:7Symbols17PulseSymbolEffectV"
  },
  "title" : "PulseSymbolEffect"
}
-->

# PulseSymbolEffect

A type that fades the opacity of some or all layers in a symbol-based image.

```
struct PulseSymbolEffect
```

## Overview

A pulse animation applies an opacity ramp to the layers in a symbol. You can choose to animate only layers marked as “always-pulses” or all layers simultaneously. Participating layers reduce their opacity to a minimum value before returning to fully opaque.

> Important:
> Because SwiftUI is a state-driven framework, you pass a `value` parameter when adding discrete effects, like bounce. You trigger the animation by changing the `value` parameter. Because AppKit and UIKit are event-driven frameworks, discrete effects animate automatically when added to an image view.

```swift
// Add an effect in SwiftUI.
@State private var value1 = 0
@State private var value2 = 0
var body: some View {
    HStack {
        Image(systemName: "person.text.rectangle")
            // Pulse only layers marked as "always-pulse."
            .symbolEffect(.pulse, value: value1)
            .onTapGesture {
                value1 += 1
            }
        Image(systemName: "person.text.rectangle")
            // Pulse all layers three times simultaneously.
            .symbolEffect(.pulse.wholeSymbol, options: .repeat(3), value: value2)
            .onTapGesture {
                value2 += 1
            }
    }
}
```

```swift
// Add an effect in AppKit and UIKit.
// Pulse only layers marked as "always-pulse."
imageView1.addSymbolEffect(.pulse.byLayer, options: .nonRepeating)
    
// Pulse all layers three times simultaneously.
imageView2.addSymbolEffect(.pulse.wholeSymbol, options: .repeat(3))
```

## Topics

### Accessing symbol effects

### Determining effect scope

[`var byLayer: PulseSymbolEffect`](/documentation/Symbols/PulseSymbolEffect/byLayer)

An effect requesting an animation that pulses only the layers marked to always pulse.

[`var wholeSymbol: PulseSymbolEffect`](/documentation/Symbols/PulseSymbolEffect/wholeSymbol)

An effect requesting an animation that pulses all layers simultaneously.

### Accessing the configuration

[`var configuration: SymbolEffectConfiguration`](/documentation/Symbols/PulseSymbolEffect/configuration)

The configuration for the effect.

## Relationships

### Conforms To

[`Hashable`](/documentation/Swift/Hashable)

[`Equatable`](/documentation/Swift/Equatable)

[`SymbolEffect`](/documentation/Symbols/SymbolEffect)

[`Escapable`](/documentation/Swift/Escapable)

[`SendableMetatype`](/documentation/Swift/SendableMetatype)

[`Copyable`](/documentation/Swift/Copyable)

[`Sendable`](/documentation/Swift/Sendable)

[`IndefiniteSymbolEffect`](/documentation/Symbols/IndefiniteSymbolEffect)

[`DiscreteSymbolEffect`](/documentation/Symbols/DiscreteSymbolEffect)

---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)