Skip to content
CAI
Software that uses CAICheck a score

scenee/FloatingPanel

66.4

Adequate · 30 September 2026

8.8k

lines of production code

Swift

primary language

2

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

FloatingPanel is an iOS library that provides a customizable floating panel overlay for both UIKit and SwiftUI applications. It allows developers to define panel states, layouts, and behaviors, supporting features like scroll tracking, adaptive layouts, and multi-panel stacking. The system includes comprehensive example apps and unit tests to demonstrate integration patterns across Swift and Objective-C.

How it got here

2018 — iOS 15 migration and v3.2.4 release

13 changes.

The project raised its minimum deployment target to iOS 15.0 and updated all example applications to use the modern UIScene lifecycle and Swift 5. The FloatingPanel framework was restructured to support distribution via Swift Package Manager and CocoaPods, while legacy source files and project configurations were removed.

2020–2021 — Version 3.0 release and sample expansion

9 changes.

The project underwent a major architectural overhaul with the release of FloatingPanel v3, introducing new APIs for layout anchoring, behavior customization, and state management. This period also saw significant expansion of the example suite, adding dedicated Objective-C and SwiftUI applications alongside a restructured sample app to demonstrate the new capabilities.

2024–2026 — SwiftUI integration and tooling

6 changes.

This period focused on introducing native SwiftUI support for FloatingPanel, including a new view modifier, proxy for state management, and automatic scroll tracking. The work was complemented by comprehensive sample applications demonstrating these capabilities and the addition of SwiftFormat linting to the build process.

Features

Add Maps-SwiftUI example project

The Maps-SwiftUI example project has been added to the repository, providing a SwiftUI-based implementation of the Maps application. This new target includes source files for the main app entry point, content views, and UI components such as search bars and floating panels, along with the necessary build configuration to embed the FloatingPanel framework.

Examples/Maps-SwiftUI/Maps-SwiftUI.xcodeproj · high confidence

Add Objective-C sample app with UIScene lifecycle and custom FloatingPanel behavior

A new SamplesObjC example project has been added to demonstrate the FloatingPanel library in Objective-C. The app implements the modern iOS UIScene lifecycle (including SceneDelegate) and showcases a custom FloatingPanel configuration with a custom layout (MyFloatingPanelLayout) defining states like Tip, Half, and a custom LastQuart state, along with custom behavior (MyFloatingPanelBehavior) and appearance settings including multi-color shadows.

Examples/SamplesObjC/SamplesObjC · high confidence

Add Samples app launch screen and main interface storyboards

The Samples application now includes a LaunchScreen storyboard for the app launch experience and a Main storyboard defining the primary user interface. The main interface features a root navigation controller with a table view listing available samples and a Settings view controller that allows users to toggle navigation bar options such as large titles and translucency.

Examples/Samples/Sources/Base.lproj · high confidence

Add Samples app with UIScene lifecycle and custom panel states

The Samples example app has been added, migrating the project to the iOS 13+ UIScene lifecycle (introducing SceneDelegate and updating Info.plist) and setting the minimum deployment target to iOS 11.0. The app demonstrates how to define and use custom FloatingPanel states (such as firstQuart and lastQuart) via custom layouts, alongside various panel positioning and layout configurations.

Examples/Samples/Sources · high confidence

Add Samples example app project

The Samples example application project has been added, providing a complete Xcode workspace with source files, storyboards, and assets to demonstrate the library's capabilities. This includes controllers for various panel layouts, adaptive layouts, and debugging scenarios, along with the necessary build configuration to link and embed the FloatingPanel framework.

Examples/Samples/Samples.xcodeproj · high confidence

Add SamplesObjC example application

A new Objective-C sample application named SamplesObjC has been added to the Examples directory. This project demonstrates the FloatingPanel framework by embedding the FloatingPanel.framework and includes standard iOS app components such as AppDelegate, SceneDelegate, MainViewController, and associated storyboards and assets.

Examples/SamplesObjC/SamplesObjC.xcodeproj · high confidence

Add SwiftFormat linting for Xcode builds

The BuildTools package now includes a SwiftFormat build tool plugin that runs \swift format lint\ during Xcode builds. The plugin targets specific directories (Sources/SwiftUI, BuildTools, and Examples/SwiftUI) using a \.swift-format\ configuration file, and includes a helper to handle file paths with non-ASCII characters. This linting is only active for Swift 6.0+ toolchains; earlier versions skip the command.

BuildTools · high confidence

Add SwiftUI sample app demonstrating FloatingPanel integration

A new SwiftUI example project (SamplesSwiftUI) has been added to showcase the FloatingPanel library. The sample includes a main view with controls to switch layouts and states, a multi-panel view demonstrating stacked panels, and views for scroll tracking and background effects. It requires iOS 15+ and Xcode 16+, and embeds the FloatingPanel framework.

Examples/SamplesSwiftUI · high confidence

Add SwiftUI-based Maps example app

The Maps-SwiftUI example now includes a complete SwiftUI application demonstrating the FloatingPanel library. This example features a map view with an integrated floating panel containing a search interface and results list, showcasing how to embed SwiftUI views within UIKit-based table cells and manage panel states and appearances in a modern SwiftUI app structure.

Examples/Maps-SwiftUI/Maps · high confidence

Add adaptive layout examples for collection and table views

The sample app now includes three new view controllers in the AdaptiveLayout section that demonstrate how to integrate FloatingPanel with UICollectionView and UITableView. CollectionViewControllerForAdaptiveLayout supports both flow and compositional layouts, while TableViewControllerForAdaptiveLayout shows adaptive panel behavior with a standard table view. ImageViewController provides an example of managing panel anchors with header and footer views. These samples illustrate how to configure layout guides and anchors for different content types.

Examples/Samples/Sources/ContentViewControllers/AdaptiveLayout · high confidence

Add debug sample view controllers for FloatingPanel testing

The Samples app now includes a suite of debug view controllers (DebugListCollectionViewController, DebugTableViewController, DebugTextViewController, etc.) to demonstrate and test FloatingPanel integration. These examples showcase key features such as scroll tracking, following scroll bouncing, nested panels with WKWebView, tab bar integration, and layout adjustments, providing users with practical reference implementations for common use cases.

Examples/Samples/Sources/ContentViewControllers · high confidence

Introduce SwiftUI integration for FloatingPanel

Adds a new SwiftUI integration layer for FloatingPanel, providing a \floatingPanel\ view modifier that overlays a floating panel on any SwiftUI view. This includes a \FloatingPanelProxy\ for programmatic control (e.g., moving the panel), environment-based configuration for layout, behavior, surface appearance, and state bindings, and automatic scroll view tracking to coordinate panel and scroll movements. The implementation uses a coordinator pattern to bridge SwiftUI and UIKit, ensuring proper view hierarchy management and state synchronization.

Sources/SwiftUI · high confidence

Removals

FloatingPanel framework removed from Framework/Sources

The entire FloatingPanel source code, including the core FloatingPanelController, layout adapters, behavior protocols, surface and backdrop views, and supporting utilities, has been deleted from the Framework/Sources directory. This removes the floating panel presentation capability from this location.

Framework/Sources · high confidence

Removal of FloatingPanel Xcode project file

The Xcode project configuration file (project.pbxproj) for the FloatingPanel framework has been deleted from the repository. This change removes the build settings, target definitions, and file references that previously defined how the FloatingPanel framework and its associated tests were compiled and packaged.

Framework/FloatingPanel.xcodeproj · high confidence

Behavioural changes

Added shared build scheme for Maps-SwiftUI

A shared Xcode build scheme for the Maps-SwiftUI example project has been added to the repository. This ensures that the build, test, launch, profile, analyze, and archive configurations are version-controlled and consistent for all developers working on the project, eliminating reliance on local, uncommitted scheme settings.

Examples/Maps-SwiftUI/Maps-SwiftUI.xcodeproj/xcshareddata · high confidence

Introduce FloatingPanel v3 with new layout, behavior, and state APIs

The library has been updated to version 3.0.0, introducing a redesigned architecture for panel customization. Users can now fine-tune panel motion and interaction through the new \FloatingPanelBehavior\ protocol and \FloatingPanelDefaultBehavior\ class, which expose properties like \springDecelerationRate\, \removalInteractionVelocityThreshold\, and methods for momentum projection and rubber-banding. Layouts are now defined via a new anchoring system featuring \FloatingPanelLayoutAnchor\, \FloatingPanelIntrinsicLayoutAnchor\, and the new \FloatingPanelAdaptiveLayoutAnchor\ (which supports content size bounding), replacing the previous layout definition style. The panel's display states are now represented by the new \FloatingPanelState\ class, allowing for custom state definitions and ordering, and the \BackdropView\ has been refactored to expose its dismissal tap gesture recognizer for easier customization.

Sources · high confidence

Maps example UI updated for modern iOS devices and styling

The Maps example storyboard has been updated to support newer iPhone dimensions (e.g., iPhone 14 Pro) and modern iOS styling. The visual effect views now use the 'prominent' blur style instead of 'light' or 'extraLight', and the search results table view now displays scroll indicators. Additionally, the storyboard includes a new Detail View Controller scene and updates the search view controller's class and storyboard identifiers.

Examples/Maps/Maps/Base.lproj · high confidence

Migrate Maps example to UIScene lifecycle and modern FloatingPanel API

The Maps example app has been updated to use the iOS 13+ UIScene lifecycle, introducing a SceneDelegate and configuring the Info.plist for scene-based window management. The FloatingPanel integration has been modernized to replace the deprecated \show(\_:sender:)\ method with \set(contentViewController:)\, and the UI appearance now utilizes the \SurfaceAppearance\ API (including \cornerCurve\) instead of direct \surfaceView\ property manipulation. Additionally, the example now supports multiple floating panels (search and detail) with distinct layouts for phone and iPad, and enables content scrolling in non-expanded states.

Examples/Maps/Maps, Examples/Stocks/Stocks · high confidence

Minimum deployment target raised to iOS 15.0

The library now requires iOS 15.0 or later, updating the Xcode project, Swift Package manifest, and CocoaPods spec to reflect this change. Availability checks for iOS 14 and earlier have been removed from the library, tests, and example apps, meaning \SurfaceAppearance.cornerCurve\ and the SwiftUI APIs no longer carry availability attributes.

(repo-wide) · high confidence

Project structure reorganization and Xcode 13 upgrade

The FloatingPanel project has been reorganized, moving the scheme and project files to a new root-level FloatingPanel.xcodeproj location. The project has been upgraded to Xcode 13 (object version 60, LastUpgradeVersion 1300), and the test scheme now explicitly builds the FloatingPanel.framework before running tests. Additionally, IDE template macros for file headers have been added.

FloatingPanel.xcodeproj · high confidence

Refactored sample app with new use-case architecture

The sample application has been restructured to use a centralized \UseCase\ enum and \UseCaseController\ to manage and display various FloatingPanel integration patterns. This change introduces new demonstration scenarios, including scroll tracking for TableViews, TextViews, and CollectionViews, as well as new panel presentation modes such as Page Views, Removable Panels, and Panels shown over the main window. Existing examples have been updated to reflect these new capabilities, providing a clearer and more organized way to explore the library's features.

Examples/Samples/Sources/UseCases · high confidence

Stocks example app updated for iOS 15 and Swift 5 with UIScene lifecycle

The Stocks example project has been upgraded to require iOS 15 as the minimum deployment target and Swift 5.0, replacing the previous iOS 11/12 and Swift 4.2 settings. The app now uses the modern UIScene lifecycle, evidenced by the addition of SceneDelegate.swift and the removal of the legacy window-based setup. Additionally, the bundle identifier was changed to example.Stocks, the development team was cleared, and the project now explicitly links libswiftCoreGraphics.tbd to support the updated Swift runtime requirements.

Examples/Maps/Maps.xcodeproj, Examples/Stocks/Stocks.xcodeproj · high confidence

Update Stocks example storyboard to use MainViewController and modern Auto Layout

The Stocks example app's main interface now uses MainViewController instead of the generic ViewController. The layout has been updated to use Auto Layout constraints for the title stack view and safe area guides, and the view dimensions have been adjusted to 600x600 points.

Examples/Stocks/Stocks/Base.lproj · high confidence

Workspace reorganized to include new sample projects

The FloatingPanel workspace has been restructured to streamline project references. The previous 'Framework' group pointing to an external path has been replaced with a direct reference to the local FloatingPanel.xcodeproj. Additionally, the Examples group now includes two new sample projects: SamplesObjC and SamplesSwiftUI, alongside the existing Maps, Maps-SwiftUI, Stocks, and Samples projects.

FloatingPanel.xcworkspace · high confidence

Test coverage

Added unit tests for FloatingPanelCoordinatorProxy state handling; Initial unit test suite for FloatingPanel; Removed empty ViewTests.swift file.

Dependencies

Initial release of FloatingPanel v3.2.4 with Swift Package Manager and CocoaPods support

This entry introduces the FloatingPanel library (version 3.2.4) as a distributable package. It adds Swift Package Manager support via a new Package.swift manifest and CocoaPods support via a FloatingPanel.podspec. The library requires iOS 15.0 or later and is built with Swift 5.0. A build-tools package is also included to provide a swift-format plugin for linting.

(dependencies) · high confidence

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

Score

  • CAI 67 → 66 (-1.1)
  • Rubric changed (rubric-2026.09.11 → rubric-2026.09.18) — scores are not directly comparable.

Lenses

  • Code Health 86 → 89 (+3.5)
  • Architecture 92 → 96 (+4.7)
  • Maturity 55 → 55 (+0.0)
  • Readiness 64 → 59 (-4.4)
  • Security 100 → 100 (+0.0)

Resolved (2)

  • Duplicated block (7 lines × 2) (Examples/Samples/Sources/UseCases/UseCaseController.swift)
  • Skipped test: test_warningRetainCycle (Tests/ControllerTests.swift)

New (15)

  • Coverage not measured — Swift suite
  • Dependency hygiene PARTLY measured — SwiftPM pinning read, dependency currency NOT established
  • Duplicate functionality with different access paths. FloatingPanelProxy exposes a move method that delegates to FloatingPanelController.move. This creates redundancy where the same operation can be performed via the controller directly or via the proxy wrapper.
  • Duplicated block (11 lines × 2) (Examples/SamplesSwiftUI/SamplesSwiftUI/Views/ContentView.swift)
  • Duplicated block (16 lines × 2) (Examples/Samples/Sources/ContentViewControllers/AdaptiveLayout/CollectionViewControllerForAdaptiveLayout.swift)
  • Duplicated block (18 lines × 3) (Examples/Maps/Maps/AppDelegate.swift)
  • Duplicated block (34 lines × 3) (Examples/Maps/Maps/SceneDelegate.swift)
  • Duplicated block (7 lines × 2) (Examples/Maps/Maps/MainViewController.swift)
  • LayoutAdapter.surfaceLocation (cognitive 31) (Sources/Layout.swift)
  • LayoutAdapter.surfaceLocation (cyclomatic 16) (Sources/Layout.swift)
  • Low cohesion: MainViewController (LCOM4 6) (Examples/Maps/Maps/MainViewController.swift)
  • Low cohesion: MyPanelCoordinator (LCOM4 4) (Examples/SamplesSwiftUI/SamplesSwiftUI/UseCases/MainView.swift)
  • Low cohesion: SceneDelegate (LCOM4 6) (Examples/Maps/Maps/SceneDelegate.swift)
  • Low cohesion: SceneDelegate (LCOM4 6) (Examples/Samples/Sources/SceneDelegate.swift)
  • Low cohesion: SceneDelegate (LCOM4 6) (Examples/Stocks/Stocks/SceneDelegate.swift)

Changes since last survey

  • 5 commits — 5 feature/other, 0 fixes

By area

  • (repo) — 1 commit
  • (root) — 1 commit
  • .github/workflows — 1 commit
  • Examples/SamplesObjC — 1 commit
  • Sources/SwiftUI — 1 commit

Notable commits

  • change: Adopt the iOS 15 minimum deployment target across the codebase
  • change: Increase min supported iOS version to 15.0
  • change: Merge pull request #689 from teslasleep/feature/xcode27-update
  • change: Migrate example apps to the UIScene lifecycle. (#690)
  • change: ci: support Xcode 27 builds

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

scenee/FloatingPanel was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 30 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit de51f81e938d0a04a073582c69f13eaae10dc7cb — the exact code this score is about.
  • Scored under rubric-2026.09.18 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-cb25ca4feafa.