Swiftpack.co - Package - alexaubry/BulletinBoard


CI Status CI Status Version License Platform Documentation Contact: @_alexaubry

BulletinBoard is an iOS library that generates and manages contextual cards displayed at the bottom of the screen. It is especially well suited for quick user interactions such as onboarding screens or configuration.

It has an interface similar to the cards displayed by iOS for AirPods, Apple TV/HomePod configuration and NFC tag scanning. It supports both the iPhone, iPhone X and the iPad.

It has built-in support for accessibility features such as VoiceOver and Switch Control.

Here are some screenshots showing what you can build with BulletinBoard:

Demo Screenshots


  • Xcode 11 and later
  • iOS 9 and later
  • Swift 5.1 and later (also works with Objective-C).


A demo project is included in the BulletinBoard workspace. It demonstrates how to:

  • integrate the library (setup, data flow)
  • create standard page cards
  • create custom page subclasses to add features
  • create custom cards from scratch

Two demo targets are available:

  • BB-Swift (demo written in Swift)
  • BB-ObjC (demo written in Objective-C)

Build and run the scheme for your favorite language to open the demo app.

Here's a video showing it in action:

Watch Demo on YouTube


BulletinBoard is available via CocoaPods and Carthage.


To install BulletinBoard using CocoaPods, add this line to your Podfile:

pod 'BulletinBoard'


To install BulletinBoard using Carthage, add this line to your Cartfile:

github "alexaubry/BulletinBoard"


  • The full library documentation is available here.
  • To learn how to start using BulletinBoard, check out our Getting Started guide.


Thank you for your interest in the project! Contributions are welcome and appreciated.

Make sure to read these guides before getting started:


Written by Alexis Aubry. You can find me on Twitter.


BulletinBoard is available under the MIT license. See the LICENSE file for more info.


Stars: 4740


Used By

Total: 0


v4.1.1 - 2020-05-14 22:44:58


  • Do not use external resources for close button


  • Fix for iPad split view bug #173

v4.1.0 - 2019-10-04 09:41:24

New Features

  • iOS 13 Dark Mode support #170
  • Add mechanism to pop to item #165


  • Remove testing dependencies from the Cartfile #166

🔖 v4.0.0 - 2019-07-21 15:10:46

🔖 v3.0.0 - 2018-12-17 13:24:08

⚠ You will need Xcode 10 to use BulletinBoard 3.0.

New Features

  • Add isShowingBulletin property (thanks @kennyDang)
  • Add willDisplay method to BLTNItem (thanks @kizitonwose)
  • Add option to show the bulletin above the whole application (thanks @alexeichhorn)


  • Upgrade to Swift 4.2 (thanks @a2)
  • Fix frozen dismissal after initial interaction (thanks @a2)

🔖 2.0.2 - 2018-09-17 13:30:57

  • Fix setters and retain semantics
  • Add workaround to allow static library usage
  • Fix Swift version in Podspec for compatibility with Xcode 10

Note: Carthage binaries won't be supplied anymore, for security and convenience reasons; as we can't provide reliable support for past and upcoming versions of Xcode in that file.

🔖 2.0.1 - 2018-05-28 18:07:09

This release fixes a crash for CocoaPods users caused by a missing resource file in the Podspec.

🔖 2.0.0 - 2018-05-28 08:52:53

This is the second major release of the BulletinBoard framework! Thanks to every contributor for their bug reports, feature requests and help implementing the new features.

đŸ“Ļ Updating


In your Podfile, change the line where your declare BulletinBoard as a dependency:

pod "BulletinBoard", "~> 2.0"

And run pod update.


In your Cartfile, change the line where your declare BulletinBoard as a dependency:

github "alexaubry/BulletinBoard" ~> 2.0

And run carthage update.

⚠ī¸ Breaking Changes

This version contains major source breaking changes. If you need help, please refer to the migration guide, or open an issue.

📝 Release Notes

New Features

  • Make page items more open to customization: if you create custom pages, you no longer need to recreate the standard components yourself
  • Customize fonts and more colors
  • Customize status bar colors
  • Customize bulletin background color
  • Customize corner radius
  • Customize padding between screen and bulletin
  • Hide the activity indicator without changing the current item
  • Annotate library to support Objective-C apps
  • Handle keyboard frame updates (support for text fields)
  • Support for tinting images with template rendering mode
  • Allow customization of the background view
  • Add text field as a standard control
  • Show activity indicator immediately after item is presented
  • Callback for configuration and presentation from BulletinItem

User-Facing Changes

  • On iPad, the bulletin will be presented at the center of the screen and can only be dismissed by a tap (no swipe)
  • The item will not be dismissed on swipe unless the user lifts their finger from the screen
  • Use screen corner radius on iPhone X

Bug fixes

  • Fix dismiss tap background gesture being called for touches inside the content view
  • Fix width contraint not being respected for regular layouts
  • Fix iTunes Connect rejection bug due to LLVM code coverage
  • Fix action button not being hidden when changing the item
  • Fix dismissal handler not being called
  • Fix controls inside the card not receiving touchesEnded events
  • Fix cropped bulletin when presenting above split view controller
  • Correctly reset non-dismissable cards position when swipe ends
  • Fix Auto Layout conflicts during transitions
  • Fix crash when reusing bulletin manager


  • Split BulletinInterfaceFactory in two more open classes: BLTNAppearance for appearance customization, andBLTNInterfaceBuilde for interface components creation
  • CreateBLTNActionItem as a root bulletin item for items with buttons. Handles button creation and tap events. Views above and below buttons are customizable
  • Add example of a collection view bulletin item
  • Remove HighlightButton from public API
  • Various gardening operations to make comments and code more clear

🔖 v1.3.0 - 2017-10-18 11:01:36

⚠ī¸ Source-breaking changes

- You can no longer pass a completion block on dismissal

To execute some code when the item is dismissed, set the dismissalHandler property when creating the item.


manager.dismissBulletin(animated: true) {
    print("Bulletin dismissed")


let item: BulletinItem = ...

item.dismissalHandler = { item in
    print("Bulletin dismissed")

manager.dismissBulletin(animated: true) // calls the dismissalHandler

✨ New Features

  • Customize the background blur

🐛 Fixes

  • Better iPhone X support
  • Auto Layout improvements

đŸ“Ļ Updating

  • If you are using CocoaPods : pod update
  • If you are using Carthage : carthage update

ℹī¸ Info

  • SHA-256 checksum : 95e3057f8d39731da134c5dac05f8aaece0c253f8967c28b4b3a495a993a733a

🔖 v1.2.0 - 2017-10-06 12:12:00

✨ New Features

  • Dismiss the bulletin by swiping down

🐛 Fixes

  • Support Swift 3.2

đŸ“Ļ Updating

  • If you are using CocoaPods : pod update
  • If you are using Carthage : carthage update

ℹī¸ Info

  • SHA-256 checksum : 57b2b614daae9161a63c784ea4025777ec82d994ed4483440a3cbc37c11c8148

🔖 v1.1.0 - 2017-10-05 13:36:57

✨ New Features

  • Add Accessibility technologies support (VoiceOver, Switch Control) - thanks @lennet!
  • Add an optional activity indicator before transitions

🐛 Fixes

  • Improve memory management and fix retain cycles/leaks

đŸ“Ļ Updating

  • If you are using CocoaPods : pod update
  • If you are using Carthage : carthage update

ℹī¸ Info

  • SHA-256 checksum : 2149ce8f0580ead3650bcdbea96bb176eddffec6b880e5613bdebbe245b40193

🔖 v1.0.0 - 2017-10-01 18:05:10

This is the initial release of BulletinBoard.

SHA-256 checksum of Carthage archive: 50d0d4127e395b384c6bad357b81e181861ff51f1277e2a9c3cc8cb568c5f39c