# Missing PluginOutlet for second-factor.gjs component and for second-factor-add-totp.gjs

**URL:** https://meta.discourse.org/t/missing-pluginoutlet-for-second-factor-gjs-component-and-for-second-factor-add-totp-gjs/385542
**Category:** Development
**Tags:** development
**Created:** [October 14, 2025, 12:41pm UTC](https://meta.discourse.org/t/missing-pluginoutlet-for-second-factor-gjs-component-and-for-second-factor-add-totp-gjs/385542 "2025-10-14T12:41:13Z")
**Posts on this page:** 1
**Showing post:** 6

<div class="post-metadata">

### Author: ![david](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/david/32/157490_2.png) [@david](https://meta.discourse.org/u/david)
#### Post date: [October 16, 2025, 1:53pm UTC](https://meta.discourse.org/t/missing-pluginoutlet-for-second-factor-gjs-component-and-for-second-factor-add-totp-gjs/385542/6 "2025-10-16T13:53:54Z")

</div>

Hi @Yan_Rudenko, the best docs to start with are probably this tutorial:

> [@Theme Developer Tutorial: 1. Introduction](https://meta.discourse.org/t/theme-developer-tutorial-1-introduction/357796?silent=true):
>
> This tutorial will teach you how to create a Discourse Theme or Theme Component from the ground up. While this topic assumes no previous experience working on Discourse themes, it does assume some prior experience using [HTML](https://developer.mozilla.org/en-US/docs/Learn/HTML/Introduction_to_HTML), [CSS](https://developer.mozilla.org/en-US/docs/Learn/CSS) and [JavaScript](https://developer.mozilla.org/en-US/docs/Learn/JavaScript). It’ll also help if you [know your way around GitHub](https://guides.github.com/activities/hello-world/). What are Discourse themes? A theme or theme component is a set of files packaged together designed to either modify Discourse visually or to add new features. Themes In general, themes are not suppo…

As you mentioned, Plugin Outlets are the best way to customize the UI. But these are not available everywhere. Only certain parts of the UI are designed to be customized.

> [@Yan\_Rudenko](#):
>
> All this can be achieved using regular JS manipulations,

Manipulating the DOM using regular JS will cause errors, because our rendering framework will lose control of the elements it rendered to the screen. It’s best to stick to the supported plugin outlets and other Discourse JS APIs (also covered in the tutorial).

---

_[View the full topic](https://meta.discourse.org/t/missing-pluginoutlet-for-second-factor-gjs-component-and-for-second-factor-add-totp-gjs/385542)._
