pebble
  • Tutorials
  • Get the SDK
  • Guides
  • Documentation
  • Examples
  • Community
  • Blog
  • More
Privacy
Cookies
Publish

SDK

  • Installation
  • CloudPebble
  • Changelog
    • 4.33
    • 4.17
    • 4.9.169
    • 4.9.148
    • 4.9.127
    • 4.3
    • 4.2.2
    • 4.2.1
    • 4.2
    • 4.2-beta5
    • 4.2-beta4
    • 4.1.4
    • 4.1.2
    • 4.1.1
    • 4.1
    • 4.0.1
    • 4.0
    • 4.0-rc20
    • 4.0-beta17
    • 4.0-dp3
    • 3.14
    • 4.0-dp2
    • 4.0-dp1
    • 3.13.1
    • 3.13
    • 3.12
    • 3.11.1
    • 3.11
    • 3.10.1
    • 3.10
    • 3.10-beta6
    • 3.10-beta2
    • 3.10-beta1
    • 3.9.2
    • 3.9.1
    • 3.9
    • 3.9-beta8
    • 3.9-beta7
    • 3.9-beta5
    • 3.8.2
    • 3.8.1
    • 3.8
    • 3.8-beta12
    • 3.8-beta10
    • 3.8-beta8
    • 3.7
    • 3.6.2
    • 3.6
    • 3.6-dp8
    • 3.6-dp7
    • 3.6-dp6
    • 3.6-dp5
    • 3.6-dp2
    • 3.4
    • 3.3
    • 3.2.1
    • 3.2
    • 3.1
    • 3.0
    • 3.0-beta12
    • 3.0-beta11
    • 3.0-beta10
    • 3.0-dp9
    • 3.0-dp8
    • 3.0-dp7
    • 3.0-dp6
    • 3.0-dp5
    • 3.0-dp4
    • 3.0-dp3
    • 3.0-dp2
    • 3.0-dp1
    • 2.9
    • 2.8.1
    • 2.8
    • 2.7
    • 2.6.1
    • 2.6
    • 2.5
    • 2.4.1
    • 2.4
    • 2.3
    • 2.2
    • 2.1.1
    • 2.1
    • 2.0.2
    • 2.0.1
    • 2.0.0
    • 2.0-BETA7
    • 2.0-BETA6
    • 2.0-BETA5
    • 2.0-BETA4
    • 2.0-BETA3
    • 2.0-BETA2
    • 2.0-BETA1
    • 2.0-BETA0
    • 2.0-DP3
    • 2.0-DP2

Pebble SDK 4.33 - Changelog

Release Date: August 12 2026

This release rolls up everything that shipped in firmware 4.18 through 4.33. The headline features are touch support for apps, heart rate variability sampling, and a major Alloy (Moddable) update.

Changes to Firmware

  • Touch navigation is now enabled by default on watches with a touchscreen. Taps and swipes are translated into button events for menus, scroll views, action bars and action menus.
  • Shake and tap events caused by the watch's own vibration are now filtered out, so accel_tap_service_subscribe() subscribers no longer receive spurious events during notifications.
  • Daily health metrics no longer saturate at 16-bit values, so step counts and calories above 65,535 are reported correctly by health_service_sum_today().
  • Fixed the Back+Up button combination in left-handed mode.

Changes to SDK

  • Added a touch gesture Recognizer API for apps: tap_recognizer_create(), pan_recognizer_create() and swipe_recognizer_create() create recognizers that report started/updated/completed/cancelled events to a callback, with helpers to query the tap point (tap_recognizer_get_tap_point()), pan deltas and velocity (pan_recognizer_get_total_delta(), pan_recognizer_get_delta_since_start(), pan_recognizer_get_delta_since_prev(), pan_recognizer_get_velocity()) and swipe direction and velocity (swipe_recognizer_get_direction(), swipe_recognizer_get_velocity()). Recognizers are attached to a window with window_attach_recognizer(), and recognizer_set_simultaneous_with() / recognizer_set_fail_after() control how multiple recognizers interact.
  • Added app_touch_navigation_enable() so apps can opt in to system touch navigation (existing apps are opted out by default), and window_set_touch_bridge_disabled() to keep the system from bridging touches to button events on a window that handles its own touch input.
  • TouchEvent gained a non_navigational flag, set on touches that arrive while no interaction session is active.
  • Added heart rate variability APIs: the HealthEventHRVUpdate event, health_service_peek_hrv_ppi_ms() to read the latest peak-to-peak interval, and health_service_set_hrv_sample_period() to request HRV sampling. HRV and heart rate sample periods are independent requests that share the app's sensor subscription.
  • Added alarm_service_peek_next() to query the next scheduled system alarm, e.g. for an alarm indicator on a watchface.
  • The maximum app binary size on Emery and Gabbro is now 128 KiB (up from 64 KiB). The loaded image and RAM footprint are still limited to 64 KiB each; the extra room is available for relocation data.
  • ACTION_BAR_WIDTH on Gabbro changed from 34 to 40 pixels. Apps that derive layout from this constant will adapt automatically when rebuilt.
  • ScrollLayer (and by extension MenuLayer) carries internal touch navigation state; sizeof(ScrollLayer) grows when recompiling apps that embed one by value.
  • The app loader now accepts binaries produced by newer ARM toolchains (unaligned relocation tables and targets) and rejects malformed binaries cleanly instead of corrupting memory.
  • The firmware C library backing the SDK's standard library functions (snprintf, strftime, etc.) is now picolibc.

Changes to Alloy

  • Updated Moddable (Alloy) to SDK 8.3.1, bringing the XS engine to 17.8 with Explicit Resource Management: using declarations, Symbol.dispose, DisposableStack and SuppressedError are now available. Every closable Alloy class (buttons, sensors, messages, files, network clients and more) aliases Symbol.dispose to its close() method, so they can be managed with using.
  • Added the pebble/health module, a JavaScript interface to the Health service: read current metrics (Health.metric.get()), query sums and averages over time ranges (Health.metric.query()), check availability and permissions (Health.metric.accessible()), register metric threshold alerts (Health.metric.Alert), inspect activities (Health.activity.get() / iterate()), control the heart rate sample period (Health.heartRate.samplePeriod) and read minute-by-minute history (Health.history.byMinute()).
  • Added a "health" event on the watch global, delivering "significant", "movement", "sleep", "metric", "heart rate" and "heart rate variability" updates.
  • pebble/button now supports click recognizers: configure single (with an optional repeat interval), long (with an optional delay), multi (with click count and timeout options) or raw handling per button, and the onPush callback now also reports which recognizer fired, the click count and whether it is a repeat. Existing code using the previous press/release behavior continues to work unchanged (raw is the default).
  • trace() output now goes to the app log when the xsbug debugger is not connected, so it shows up in pebble logs.
  • Fixed a crash when timers or app messages fired while an app was exiting.
  • Compatibility note: apps built with this SDK use XS 17.8 byte code and require firmware 4.32 or later. Apps built with older SDKs (4.17 or lower) continue to install and run on new firmware without a rebuild.

Changes to Emulator

  • The emulator now supports injecting health metrics (steps, distance, calories, active time, sleep).

Overview

  • Changes to Firmware
  • Changes to SDK
  • Changes to Alloy
  • Changes to Emulator