Skip to content
Nam Anh edited this page Jun 20, 2022 · 13 revisions

Spicetify Marketplace

Customize your Spotify client directly from within Spicetify!

Marketplace allows you to browse, download, and install extensions, themes and CSS snippets with ease. You can also browse custom apps, but will need to do some manual installing to get it working.

Made with Spicetify Creator

Navigate the wiki using the sidebar on the right to get started!

How it works

Though the app is, and will, become more advanced and complex, this serves as a summary to help you understand how Marketplace functions in a nutshell. More details are provided in other sections of the wiki.

  1. componentDidMount triggers newRequest, which triggers loadAmount()
  2. loadAmount calls loadPage in a loop until it has the requested amount of cards or runs out of results
  3. loadPage calls getRepos(page) to get the next page of extensions. It queries the GitHub API for any repos with the "spicetify-extensions" topic. We'll likely add our own tag in the future, like "spicetify-marketplace".
  4. Then it loops through all the results and runs getTaggedRepos(), which fetches a manifest.json file from the repo's root folder. If it finds one, we generate a card based on the info.
  • If the active tab is "Installed", loadPage calls getLocalStorageDataFromKey(LOCALSTORAGE_KEYS.installedSnippets) to get the extensions from the localstorage and generate the cards from there.
  • If the active tab is "Snippets", loadPage calls fetchCssSnippets() and generates cards from the most recent snippets.json on GitHub.

Disclaimer

All creations are made by the community, they are not maintained nor validated by Spicetify. They might contain unwanted code. Be careful of what you install, review the code before use if possible. We hold no responsibility for these extensions or anything installed via this custom app. If you find any malicious extension, please submit an issue so we would exclude it from Marketplace.

Note

This project is a work-in-progress and is not finished, polished, or guaranteed to work. Undesirable behaviors are expected.

Clone this wiki locally