# Dependencies for Palmier Pro: Swift Package Manager and Third-Party Libraries

> Discover Palmier Pro dependencies: Swift Package Manager tools like DSWaveformImage, Sparkle, Sentry, Clerk, Convex, and swift-transformers power its audio visualization, updates, crash reporting, auth, and AI.

- Repository: [Palmier/palmier-pro](https://github.com/palmier-io/palmier-pro)
- Tags: dependency-list
- Published: 2026-06-23

---

**Palmier Pro relies on nine Swift Package Manager dependencies including DSWaveformImage for audio visualization, Sparkle for auto-updates, Sentry for crash reporting, Clerk and Convex for authentication and cloud sync, and swift-transformers for on-device AI transcription.**

Palmier Pro is a Swift 6.2 macOS 26 exclusive video editing application that manages its third-party integrations through the Swift Package Manager (SPM). The complete list of dependencies for Palmier Pro is declared in the repository’s [`Package.swift`](https://github.com/palmier-io/palmier-pro/blob/main/Package.swift) file, which defines the external libraries required for audio processing, cloud synchronization, authentication, and AI-powered features.

## Core Dependency Categories

### Audio Visualization and UI Animation

Palmier Pro uses **DSWaveformImage** (`https://github.com/dmrschmidt/DSWaveformImage`) to generate high-resolution waveform images for audio tracks in the timeline view. According to the source code in [`Sources/PalmierPro/MediaPanel/MediaTab/AssetThumbnailView.swift`](https://github.com/palmier-io/palmier-pro/blob/main/Sources/PalmierPro/MediaPanel/MediaTab/AssetThumbnailView.swift), this library renders audio visualizations by processing `AVAsset` objects into drawable waveforms. For vector-based animations such as loading spinners and transitions, the app integrates **Lottie** (`https://github.com/airbnb/lottie-ios`), which renders After Effects animations efficiently within SwiftUI components defined in [`Sources/PalmierPro/UI/GeneratingOverlay.swift`](https://github.com/palmier-io/palmier-pro/blob/main/Sources/PalmierPro/UI/GeneratingOverlay.swift).

### Authentication and Backend Services

The application leverages three interconnected Clerk and Convex packages for user management and cloud functionality. **ClerkConvex** (`https://github.com/clerk/clerk-convex-swift`) and **ClerkKit** (`https://github.com/clerk/clerk-ios`) handle OAuth-style authentication flows and session management, while **ConvexMobile** (`https://github.com/get-convex/convex-swift`) serves as the client SDK for Convex’s backend services. These dependencies enable real-time data queries, mutations, and cloud project storage, as implemented in [`Sources/PalmierPro/Project/VideoProject.swift`](https://github.com/palmier-io/palmier-pro/blob/main/Sources/PalmierPro/Project/VideoProject.swift).

### AI Processing and Data Modeling

For on-device intelligence, Palmier Pro incorporates **swift-sdk (MCP)** (`https://github.com/modelcontextprotocol/swift-sdk.git`)—the Model Context Protocol library that powers project serialization and remote synchronization. The **Tokenizers** package from swift-transformers (`https://github.com/huggingface/swift-transformers`) provides tokenization utilities that drive the AI-powered transcription and visual search capabilities in [`Sources/PalmierPro/Search/VisualIndexer.swift`](https://github.com/palmier-io/palmier-pro/blob/main/Sources/PalmierPro/Search/VisualIndexer.swift).

### App Infrastructure and Monitoring

**Sparkle** (`https://github.com/sparkle-project/Sparkle`) provides the automatic update mechanism, checking for new releases in the background without disrupting user workflows. The **Sentry** SDK (`https://github.com/getsentry/sentry-cocoa`) captures runtime errors and performance data, feeding crash reports back to developers for monitoring. These are initialized in [`Sources/PalmierPro/App/Updater.swift`](https://github.com/palmier-io/palmier-pro/blob/main/Sources/PalmierPro/App/Updater.swift) and [`Sources/PalmierPro/App/AppDelegate.swift`](https://github.com/palmier-io/palmier-pro/blob/main/Sources/PalmierPro/App/AppDelegate.swift) respectively, with the application entry point located in [`Sources/PalmierPro/App/main.swift`](https://github.com/palmier-io/palmier-pro/blob/main/Sources/PalmierPro/App/main.swift).

## Implementation Examples

The following code snippets demonstrate how Palmier Pro consumes these dependencies in production code.

### Rendering Audio Waveforms

The app generates audio visualizations for the timeline using DSWaveformImage:

```swift
import DSWaveformImage

func waveformImage(for audioURL: URL) async throws -> NSImage {
    let asset = try AVAsset(url: audioURL)
    let waveform = try await WaveformImageRenderer.render(
        asset: asset,
        size: CGSize(width: 800, height: 80),
        waveColor: .systemBlue,
        backgroundColor: .clear
    )
    return waveform
}

```

*This function is used in [`MediaPanel/MediaTab/AssetThumbnailView.swift`](https://github.com/palmier-io/palmier-pro/blob/main/MediaPanel/MediaTab/AssetThumbnailView.swift) to display audio track previews.*

### Configuring Crash Reporting

Sentry is initialized at launch to capture uncaught exceptions and UI-thread hangs:

```swift
import Sentry

func configureSentry() {
    SentrySDK.start { options in
        options.dsn = "https://examplePublicKey@o0.ingest.sentry.io/0"
        options.enableAutoSessionTracking = true
        options.debug = true // Enable debug logging during development
    }
}

```

*Called early in [`App/AppDelegate.swift`](https://github.com/palmier-io/palmier-pro/blob/main/App/AppDelegate.swift) to initialise error monitoring.*

### Implementing Automatic Updates

Sparkle’s `SUUpdater` checks for new releases silently in the background:

```swift
import Sparkle

class Updater: NSObject, SUUpdaterDelegate {
    private let updater = SUUpdater()
    
    override init() {
        super.init()
        updater.delegate = self
        updater.checkForUpdatesInBackground()
    }
}

```

*Instantiated in [`App/Updater.swift`](https://github.com/palmier-io/palmier-pro/blob/main/App/Updater.swift) to perform silent update checks.*

### Loading Lottie Animations

Vector animations are rendered within SwiftUI views using the Lottie library:

```swift
import Lottie

struct LoadingView: View {
    var body: some View {
        LottieView(name: "loading-spinner", loopMode: .loop)
            .frame(width: 64, height: 64)
    }
}

```

*`LottieView` is a thin SwiftUI wrapper defined in [`UI/GeneratingOverlay.swift`](https://github.com/palmier-io/palmier-pro/blob/main/UI/GeneratingOverlay.swift).*

## Dependency Architecture and Design

Palmier Pro’s dependency architecture follows a **modular design** pattern where each third-party library is encapsulated behind its public Swift module (e.g., `DSWaveformImage`, `MCP`). By using SPM rather than CocoaPods or Carthage, the application avoids binary incompatibilities and benefits from deterministic builds across development environments.

The integration points are centralized in specific files:
- [`Package.swift`](https://github.com/palmier-io/palmier-pro/blob/main/Package.swift) declares all external packages and version constraints
- [`Sources/PalmierPro/App/AppDelegate.swift`](https://github.com/palmier-io/palmier-pro/blob/main/Sources/PalmierPro/App/AppDelegate.swift) initializes Sentry, Convex, and other services on launch
- [`Sources/PalmierPro/Search/VisualIndexer.swift`](https://github.com/palmier-io/palmier-pro/blob/main/Sources/PalmierPro/Search/VisualIndexer.swift) uses tokenizers for the visual search indexer
- [`Sources/PalmierPro/UI/AppTheme.swift`](https://github.com/palmier-io/palmier-pro/blob/main/Sources/PalmierPro/UI/AppTheme.swift) centralizes design-system constants

This architecture allows Palmier Pro to remain a lightweight, native macOS binary while delivering modern cloud sync, AI transcription, and real-time collaboration features.

## Summary

- Palmier Pro declares nine Swift Package Manager dependencies in [`Package.swift`](https://github.com/palmier-io/palmier-pro/blob/main/Package.swift) to handle audio visualization, authentication, AI processing, and app infrastructure.
- **DSWaveformImage** generates audio waveforms for the timeline view, while **Lottie** renders vector animations for the UI.
- Authentication and cloud synchronization rely on **ClerkConvex**, **ClerkKit**, and **ConvexMobile** for secure user sessions and real-time backend operations.
- **Sparkle** and **Sentry** provide automatic updates and crash reporting, initialized in [`Updater.swift`](https://github.com/palmier-io/palmier-pro/blob/main/Updater.swift) and [`AppDelegate.swift`](https://github.com/palmier-io/palmier-pro/blob/main/AppDelegate.swift) respectively.
- AI features use **swift-transformers** (Tokenizers) and the **MCP** SDK for on-device transcription and data modeling according to the palmier-io/palmier-pro source code.

## Frequently Asked Questions

### What package manager does Palmier Pro use for dependencies?

Palmier Pro uses the Swift Package Manager (SPM) exclusively to fetch and link third-party libraries. All dependencies are declared in the [`Package.swift`](https://github.com/palmier-io/palmier-pro/blob/main/Package.swift) file with specific version constraints, ensuring deterministic builds across development and production environments.

### How does Palmier Pro handle automatic updates?

The application integrates **Sparkle** to check for new releases in the background. The `SUUpdater` class is instantiated in [`Sources/PalmierPro/App/Updater.swift`](https://github.com/palmier-io/palmier-pro/blob/main/Sources/PalmierPro/App/Updater.swift), allowing users to install updates without manually downloading new binaries or interrupting their editing workflow.

### Which dependencies power the AI transcription features?

On-device AI transcription and visual search rely on the **Tokenizers** package from swift-transformers and the **swift-sdk (MCP)** for Model Context Protocol operations. These are utilized in [`Sources/PalmierPro/Search/VisualIndexer.swift`](https://github.com/palmier-io/palmier-pro/blob/main/Sources/PalmierPro/Search/VisualIndexer.swift) to process and index transcription text locally without sending audio data to external servers.

### How is user authentication implemented in Palmier Pro?

Authentication flows through **ClerkConvex** and **ClerkKit**, which manage OAuth-style login and session tokens, while **ConvexMobile** handles the backend communication with Convex’s cloud services. This combination secures user data and enables cloud project synchronization across devices.