Pebble SDK 2.0 Beta3 Release Notice

  • Pebble SDK 2.0 is currently in BETA and intended for developers only.
  • SDK 2.0 will be released later this year as an over-the-air update to all Pebble users.
  • Applications written for Pebble 1.x are not compatible with SDK 2.0
  • If a 2.0 version of an application exists, the Pebble mobile applications will automatically install it when when a user upgrades her/his Pebble. Please contact us at to make sure your application is part of this program.

What has changed since BETA2


  • The Android app fixes a large number of JS-related bugs.
  • The Android app fixes a bug where all messages sent to android would be automatically acknowledged. Your application should acknowledge app messages.
  • Some new user features in the firmware: Notification settings (with Do Not Disturb), better Alarms
  • Lots of small UI and stability fixes in Pebble.

As always, please send feedbacks to

Known problems and bugs:


  • added a Notification menu in the Settings to disable Notifications and configure a DoNotDisturb time frame
  • much better Alarm app with a nicer UI, snooze support, disabled alarms support
  • fix bugs where incoming calls could cause the vibration to stay on continuously
  • fix a rare condition where the accelerometer would crash if an interrupt comes too late or the accelerometer sent 0 samples
  • fix accelerometer behaviour when only 1 sample is requested: only send one sample (instead of 2)
  • fix a bug where an iOS device could disconnect just 1-2 seconds after connecting
  • automatically reconnect when user leaves Airplane Mode
  • show (in settings) that vibrations are disabled when Pebble is plugged
  • improved the set date/time UI to use the new DateTime UI (as in Alarms)
  • adjust the framebuffer offset for modal window transitions
  • reduced BLE connection interval
  • log more information when an application crashes
  • do not crash if an app_message section is re-opened - display warning instead
  • fix a bug which caused firmware updates to fail under some conditions (mostly android)
  • appsync will only update a dictionary if it has enough memory to do so (instead of finding out half-way that it does not have enough memory)
  • always return to the launcher after an app crash (to avoid a crash loop on a watchface)
  • *_destroy() will accept NULL pointers without errors
  • always go back to the top of the menu when launching the menu from a watchface (to make “blind” navigation easier)
  • fix a bug where an actionbar button would still be “pressed”
  • show Bluetooth Name on getting started screen
  • automatically delete old apps that are not compatible with this firmware version
  • accelerate scrolling on the menu
  • use modal window icon in the status bar as long as the modal window is displayed
  • Export dict_size so external developers don’t have to do pointer math :)
  • fix a bug where scrolling in a long list of notifications could cause the display to “bounce”
  • fix a bug where lots of app logging messages could overflow the system task queue and kill app message
  • API documentation completely reviewed and updated
  • missed call modal views will timeout after 180s
  • force quit app when the back button is held for 2 seconds
  • menu_cell_basic_draw() now automatically center the text in the cell. If you do not want a subtitle, pass NULL (otherwise, space will be reserved for the subtitle).
  • fixed some bluetooth settings to avoid duplicated messages (could cause screenshot to go over 100%, duplicated log entries, firmware upgrade to fail, etc)
  • peek()ing the accelerometer is not allowed anymore when you have also subscribed to receive updates
  • fix a bug where the accelerometer would get stuck after a few hours

iOS App

  • fix a bug where datalogging could dump messages to another phone on your local network
  • fix a bug where datalogging would get into a deadlock
  • fix a bug where the developer connection would appear active but would be closed

Android App

  • fix a number of cases where a JS app would not be launched
  • fix bug where clicking the configure icon would not open the configuration view of an app
  • fix a bug which caused every AppMessage sent to Android to be acknowledged by the system
  • Select the Google Play Music App as the default music player
  • fix support email to use the Pebble bluetooth name instead of the last four digits of the serial
  • if there is an error when uploading an app, do not dismiss the update screen right away
  • do not dump large logs if stats json is not found
  • check for firmware update when foregrounded
  • fix bug where a canceled app install would be reported as completed
  • fix bug where an install would fail silently because the resources could not be loaded
  • display specific error message when a user tries to install a 2.0 app on a 1.x Pebble
  • fix a bug where the android app would display error message “Could not update” while looking for updates in the background

PebbleKit iOS

  • allow one iOS application to exchange messages with several Pebble apps (with different UUIDs)
  • fix a crash trying to parse invalid firmware version
  • add CocoaPods support (see pebblekit-ios readme for more info)
  • enabled “all warnings” and fixed errors

PebbleKit Android

No changes.

SDK Tools

  • added support to upload any bundle (including firmware)
  • added test to detect missing tools
  • better implementation of the –debug flag
  • fix bug where tools would fail when installed in a folder with a space in it
  • fix bug where tools would fail on project with a space in the name
  • some 1.x to 2.x conversion bugs fixed
  • automatically re-enable applog when the watch reconnects


  • fix crashing bugs in 91Dub