Bangle.js Code Guidelines

For general information on making apps try this page

This a list of suggestions and things that we'd like apps submitted to the App Loader to do, to make sure everything works together well.



  • Add widgets with Bangle.loadWidgets() then Bangle.drawWidgets() if at all possible.
  • Don't use widgets with any screen modes other than the normal, unbuffered screen mode.
  • If using Widgets:
    • Don't render in the top or bottom 24px of the screen (reserved for Widgets)
    • Avoid clearing the whole screen with g.clear(), but if you do, call Bangle.drawWidgets() right after
  • Give your app an icon (icons from are fine)
  • Where possible, use "allow_emulator":true in metadata.json to allow your app to be previewed online in the emulator.


  • Render inside the box this.x, this.y, this.x + this.width-1, this.y + 23
  • Call g.reset() before rendering to ensure that everything is in a known state
  • Don't call g.clear (which will clear the whole screen)
  • Only call g.flip() if you want your widget's update to wake the screen
  • Be aware that you're running in a constrained environment alongside other widgets and apps - try not to use any more RAM than required.

This page is auto-generated from GitHub. If you see any mistakes or have suggestions, please let us know.