# Theme-Component v Plugin: What's the difference

**URL:** https://meta.discourse.org/t/theme-component-v-plugin-whats-the-difference/153951
**Category:** Development
**Created:** [June 5, 2020, 2:56pm UTC](https://meta.discourse.org/t/theme-component-v-plugin-whats-the-difference/153951 "2020-06-05T14:56:51Z")
**Posts on this page:** 1
**Showing post:** 2

<div class="post-metadata">

### Author: ![EricGT](https://avatars.discourse-cdn.com/v4/letter/e/f1d935/32.png) [@EricGT](https://meta.discourse.org/u/EricGT)
#### Post date: [June 5, 2020, 3:19pm UTC](https://meta.discourse.org/t/theme-component-v-plugin-whats-the-difference/153951/2 "2020-06-05T15:19:48Z")

</div>

I am not a beginner with Discourse but also am no expert.

1. Theme-component uses HTM,CSS,JavaScript to enhance a base theme.  
I note base theme because it is typically called theme and sometimes people don’t note the difference and you have to infer it. A theme and/or theme component can be installed by an admin without taking the site down and if you are a Discourse customer, you can also add these. ([list](https://meta.discourse.org/c/theme)) Also see: [Beginner’s guide to using Discourse Themes](https://meta.discourse.org/t/beginners-guide-to-using-discourse-themes/91966)

2. A plugin uses Ruby and can do just about anything possible. If you are a customer of Discourse you have limited sets of plugins that are allowed to be activated, however if you are self-hosting then you can add all you want, but be warned that I see lots of post where custom plugins break the site during an upgrade. These also do not require a restart when activated; I suspect a restart might be required when first installing. Others can elaborate as the only experience I have with plugins is to activate them from the admin menus. ([list](https://www.discourse.org/plugins)) Also see: [Beginner’s Guide to Creating Discourse Plugins - Part 1](https://meta.discourse.org/t/beginners-guide-to-creating-discourse-plugins-part-1/30515)

3. I have not developed a Plugin so my guess is that you are refering to [Discourse API Ruby Gem](https://meta.discourse.org/t/using-the-discourse-api-ruby-gem/17587). See: [Use the Discourse API ruby gem](https://meta.discourse.org/t/using-the-discourse-api-ruby-gem/17587)

4. There is also the [API](https://docs.discourse.org/) which are webhooks and typically used with [curl](https://en.wikipedia.org/wiki/CURL) or another programming language. This is nice because it frees you from using Ruby.

5. While I have not dabbled in this either, you could program at the PostgreSQL database level but I would not recommend it unless you are very skilled and very confident in your abilities.

HTH

* * *

**EDIT**

Bonus round if you want to go all-in as a Discourse developer

See: [How to start building stuff for Discourse if you’re newbie (like myself)](https://meta.discourse.org/t/how-to-start-building-stuff-for-discourse-if-youre-newbie-like-myself/45954)

---

_[View the full topic](https://meta.discourse.org/t/theme-component-v-plugin-whats-the-difference/153951)._
