2019-07-28 08:27 — By Erik van Eykelen

A Basic Tesla Touchscreen Messaging App

Tesla touchscreen

There has been talk about Tesla releasing an SDK to enable the development of apps for their in-car touchscreen in the past but nothing has been released thus far.

If Tesla would take the approach described below then it’d be fairly easy to support at least the simplest of apps: a messaging app.


  • A single ribbon across the full width of the touchscreen display can be used to show text (just text, no images)
  • The ribbon alternates between the text and the datestamp e.g. “Hello world” and “Sent 21 minutes ago”
  • If the text doesn’t fit inside the ribbon it slowly scrolls to show the complete string
  • The ribbon may contain up to 3 buttons e.g. “Yes”, “No”, and “Dismiss”, or just “Read” to tell the sender you’ve seen the message and may, or may not, act on it.
  • Tesla would have to provide an API to which third parties can send requests to show or update ribbons. The user would have to authenticate once between this 3rd party service and Tesla’s oAuth endpoint.


The API accepts the following ribbon payload:

  <ribbon id="{uuid}" text="11 new users signed up in the last 12 hours" wait="15">
      <button href="https://...">Dismiss</button>
  <ribbon id="{uuid}" text="Free Plan: 6, Startup Plan: 3, Team Plan: 2" wait="15"/>
  <ribbon id="{uuid}" text="Can you pick up a package at UPS?" wait="15">
      <button href="https://...">Yes</button>
      <button href="https://...">No</button>
      <button href="https://...">Dismiss</button>
  <ribbon id="{uuid}" deleted/>

About the structure:

  • A single request can contain multiple ribbons
  • Each ribbon has a unique ID enabling the software to distinguish between new and updated ribbons
  • The wait attribute defines how long the ribbon should be displayed before cycling to the next ribbon (in seconds)
  • If no button is defined for a ribbon the UI should probably provide a default way to dismiss a ribbon e.g. by showing a close [x] button
  • The sender can delete a ribbon by sending an updated payload with the delete attribute set

One might argue this introduces an extra distraction for the driver. While perhaps true, the following steps can be taken to prevent too much distraction:

  • A maximum number of, say, 10 messages per hour are displayed by the touchscreen
  • The minimum value for wait could be set to e.g. 15 seconds
  • The number of buttons can be limited to 3
  • The text can be no longer than e.g. 240 characters (a tweet)

I, for one, would definitely write some code to make use of this feature. If you can’t code then e.g. IFTTT or Zapier could be used to send data to the ribbon in your car.

Check out my product Operand, a collaborative tool for due diligences, audits, and assessments.