SFSymbolsPicker

1.0.7

A SwiftUI view for selecting SF symbols in your app
alessiorubicini/SFSymbolsPickerForSwiftUI

What's New

1.0.7

2025-05-13T16:31:47Z

Enhancements

  • Updated minimum requirements to iOS 17.0 and macOS 14 (Sonoma)
  • Improved Search Functionality: Added a fuzzy matching algorithm for symbol search and implemented debounce logic.
  • Improved Symbol Loader: Added asynchronous symbol loading

UI Enhancements:

  • Redesigned layout using NavigationStack for better navigation
  • Improved user feedback for empty search results with a placeholder view
  • Integrated infinite scrolling to load more symbols seamlessly
  • Added visual feedback when symbols are selected.
  • Enhanced grid layout

Fixes

  • Fixed issues with resetting pagination and clearing symbols during state transitions
  • Improved error handling in SymbolLoader
Package Logo

SF Symbols Picker for SwiftUI

SFSymbolsPicker is a simple and powerful SwiftUI picker that let you pick Apple's SF Symbols inside your iOS and macOS apps with an easy binding!

Features

  • Custom Close Button: Specify a custom close button for the picker.
  • macOS Support: Compatible with macOS 11.0 and above.
  • Optimized Performance: Improved symbol loading performance for a smoother experience.
  • Enhanced Search Bar: Upgraded search bar for better usability.
  • Bug Fixes: Resolved visibility issues for the SymbolPicker view.
  • Auto Dismiss: Automatically dismiss the picker when a symbol is selected.
  • Customizable UI: Set a custom title for the view and a label for the search bar.
  • Toolbar Icon: Added a toolbar icon to manually dismiss the picker.
  • Dynamic Symbol Loading: Symbols are loaded at runtime directly from the system, ensuring access to the latest symbols as soon as devices are updated. Special thanks to mackoj for contributing to the dynamic symbol loading implementation.

Preview

SF Symbols Picker

Usage

Here's a short usage example. You can find the full code in UsageExample.swift.

@State private var icon = "star.fill"
@State private var isPresented = false
    
var body: some View {
    NavigationView {
        VStack {
            Button("Select a symbol") {
                isPresented.toggle()
            }

            Image(systemName: icon).font(.title3)

                .sheet(isPresented: $isPresented, content: {
                    SymbolsPicker(selection: $icon, title: "Pick a symbol", autoDismiss: true)
                }).padding()

        }
        .navigationTitle("SF Symbols Picker")
    }
}

With custom button:

...

    .sheet(isPresented: $isPresented, content: {
        SymbolsPicker(selection: $icon, title: "Pick a symbol", autoDismiss: true) {
            // Your custom view...
            // For example:
            Text("Close!")
        }
    }).padding()
...

Installation

Required:

  • iOS 15.0 or above
  • macOS 12.0 or above
  • Xcode 13.0 or above

In Xcode go to File -> Add Package Dependencies... and paste in the repo's url: https://github.com/alessiorubicini/SFSymbolsPicker. Then choose the main branch or the version you desire.

License

Copyright 2024 (©) Alessio Rubicini.

The license for this repository is MIT License.

Please see the LICENSE file for full reference

Description

  • Swift Tools 5.9.0
View More Packages from this Author

Dependencies

  • None
Last updated: Mon Jun 30 2025 15:25:08 GMT-0900 (Hawaii-Aleutian Daylight Time)