Skip to main content

Layout question like Spotify or Tunein

  • July 28, 2026
  • 7 replies
  • 88 views

Hello, new to the forums. Pardons if necessary. I hope this question finds the right mind :)
I’m attempting to setup a root page in an app under development and I’d like to use Grid (or Grids?).

I’ve managed to setup a list for the root page. It’s plain and simple.

But I’ve tried setting up a root to mimic how Spotify and Tunein show their items.

If possible, my guess is the data structured in soap to serve the root page is not correct. 

Can I be pointed in the right direction? Maybe even an example or two? Or some expl

anations how one might accomplish this? 

Thanks in advance! Enjoying a speaker I got and the work for an app. 
 

7 replies

controlav
Forum|alt.badge.img+24
  • Lead Maestro
  • July 28, 2026

There are two ways, there is the json way (used by some services), and the SMAPI way (used by everyone). SMAPI is documented, json is not. json is preferred, but Desktop doesn’t support it and SMAPI is always a safe fallback.

How global root is displayed is all up to you.


  • Author
  • Contributor I
  • July 30, 2026

Cool. Smapi is what would be ideal. Any chance a snippet can be provided? Initial thoughts are having multiple grids. 


Airgetlam
  • July 30, 2026

I’ve not looked recently, but have you checked the Sonos partners page?


  • Author
  • Contributor I
  • July 30, 2026

Pardons. On my phone. I do have access to developers and indeed have a service I'm debugging and working on. Cool stuff is being able to deploy with the ICS (refresh and send) and using ngrok to point my local to the Sonos sandbox. 

I used a list for the root, but when switching to grid, all the sibling pages went into one grid. Which makes sense because thoughts are to use multiple grid objects or structure the soap differently. 

There any read material on how others manage to do this or documentation on setting this up? Going to sleep now but will be happy to read anything that moves this in the right direction. 

Thanks for the prompt responses! 


controlav
Forum|alt.badge.img+24
  • Lead Maestro
  • July 30, 2026

The display modes are described here: https://docs.sonos.com/docs/customize-display

The SMAPI docs are a shadow of their former selves, the original much more useful version can be found here: http://web.archive.org/web/20230203200632/https://developer.sonos.com/build/content-service-add-features/customize-display/

You can see my code that reads the json here: https://github.com/search?q=repo%3Aamp64%2Fopenphonos+GetRootItemsByJsonAsync&type=code


  • Author
  • Contributor I
  • August 11, 2026

Hey. I’ve got some additional time to dig through this. Some questions came up. I did look at the github but these details came up as questions. 

 

Context: anonymous-auth SMAPI content service, DEVELOPMENT/sandbox integration, tested over ngrok.

1. My deployed service config has api-endpoints containing only radio and soap — there's no presentation-map entry, and string-resources is inline rather than a URL. I serve a presentation map at /anon/sm/presentationMap.xml (publicly reachable, 200), but nothing appears to point Sonos at it, and a RootNodeDisplayType I added there had no effect. Is the presentation map simply never fetched unless it's declared — via the manifest, or some field I've missed?

2. Can a sandbox / DEVELOPMENT integration set a manifest URL (I understand it goes in "String Resource XML File") and enable the "support manifest file" capability? Or is the JSON root only available to fully onboarded services?

3. In the root JSON, each entry in views[] has a title and its own items[] with imageUrls. Does the Sonos app render a view as a titled horizontal row with those items as the tiles — or as a single tile whose items supply composite (2×2) artwork? openphonos does the latter, but Spotify's Sonos root visibly does both, so I can't tell which the payload actually drives.

Happy to share what I work out — the JSON root seems to be undocumented and openphonos was the only real reference I could find.


controlav
Forum|alt.badge.img+24
  • Lead Maestro
  • August 11, 2026

I only understand SMAPI as a client so not sure I can help with most of your Qs.

It has been many years since I “created” a music service (which I did to aid reverse engineering the app), and that used customSD. Never this new stuff with web forms and junk to set up a service, so not sure how that maps to the underlying SMAPI data which hasn’t changed (except the json).

It might be easier to initially test your service on an S1 system: no Sonos cloud nonsense and you can use customSD to run everything locally for development.

I chose to display those items in a 4x4 grid as my UX skills at the time were insufficient to do a horizontally panning list as a part of a vertical scrollviewer (which was UWP). In openphonos I use Avalonia, and while my UX skills have progressed somewhat, I did not attempt the horizontal-inside-vertical mode when I ported the code over, but I could try again if I felt brave. (Which I seldom do in the UX space).