# Bring Back Direct CSS Editing in Perspective – Keep Dev Workflows Fast & Transparent

**URL:** <https://forum.inductiveautomation.com/t/bring-back-direct-css-editing-in-perspective-keep-dev-workflows-fast-transparent/109627>\
**Category:** Ignition 8.3 Early Access\
**Tags:** perspective\
**Created:** [August 12, 2025, 5:36am UTC](https://forum.inductiveautomation.com/t/bring-back-direct-css-editing-in-perspective-keep-dev-workflows-fast-transparent/109627 "2025-08-12T05:36:15Z")\
**Posts on this page:** 17\
**Page:** 1

<div class="post-metadata">

**Author:** ![nader.chinichian](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/nader.chinichian/32/9261_2.png) [@nader.chinichian](https://forum.inductiveautomation.com/u/nader.chinichian)\
**Post date:** [August 12, 2025, 5:36am UTC](https://forum.inductiveautomation.com/t/bring-back-direct-css-editing-in-perspective-keep-dev-workflows-fast-transparent/109627/1 "2025-08-12T05:36:15Z")

</div>

Hi,

In Ignition 8.3, the only way to modify Perspective theme CSS is through the API endpoint:  
`/data/api/v1/resources/find/com.inductiveautomation.perspective/themes`.

While this works, it’s not very efficient for real-world development.

Imagine having a well-structured CSS setup with 50+ interrelated CSS files. With the API, there’s no easy way for a human to see the complete structure in real time, understand the relationships, or navigate quickly.

Before, we could use good code editors like VS Code to build and organize our CSS logic, benefiting from syntax highlighting, search, linting, and extensions. Now, we’re forced into an API workflow that lacks these productivity tools.

Version control is another challenge — we used to easily track and manage CSS changes in GitHub. With the API, that workflow is not totally possible.

Another drawback is that the underlying CSS structure is now hidden from developers. If we want to understand how Perspective’s styles are built, we’re forced to use Chrome’s inspector to hunt down classes and relationships. In the old method, we could simply open all the CSS files in VS Code, explore them in a comfortable environment, and even pass them to AI tools for quick analysis or documentation.

There’s also a backup concern — restoring an 8.1 project backup in 8.3 doesn’t restore the CSS files, which makes migration and recovery more difficult.

It would be great to bring back the older method (alongside the new API) so developers can choose the approach that best fits their workflow — keeping productivity, transparency, and flexibility high.

---

<div class="post-metadata">

**Author:** ![Samuel\_Sueur](https://avatars.discourse-cdn.com/v4/letter/s/e36b37/32.png) [@Samuel\_Sueur](https://forum.inductiveautomation.com/u/Samuel_Sueur)\
**Post date:** [August 12, 2025, 6:58am UTC](https://forum.inductiveautomation.com/t/bring-back-direct-css-editing-in-perspective-keep-dev-workflows-fast-transparent/109627/2 "2025-08-12T06:58:50Z")

</div>

I haven’t had time to fiddle with the beta yet, but this is really sad and concerning news.

I can think of multiple projects on our end that use custom CSS themes extensively.

Not being able to get those themes when migrating to 8.3 is a huge bummer….

Today is a sad day !

---

<div class="post-metadata">

**Author:** ![andrew.budaiev](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/andrew.budaiev/32/72921_2.png) [@andrew.budaiev](https://forum.inductiveautomation.com/u/andrew.budaiev)\
**Post date:** [August 12, 2025, 9:36am UTC](https://forum.inductiveautomation.com/t/bring-back-direct-css-editing-in-perspective-keep-dev-workflows-fast-transparent/109627/3 "2025-08-12T09:36:27Z")

</div>

The theme files should migrate here. [[IGN-13768] Perspective Custom Theming Not Working After 8.3 Migration - #2 by Kevin.Herron](https://forum.inductiveautomation.com/t/ign-13768-perspective-custom-theming-not-working-after-8-3-migration/109114/2)

Incomplete migration has a ticket number, so it should be fixed.

---

<div class="post-metadata">

**Author:** ![e.sagnelonge](https://avatars.discourse-cdn.com/v4/letter/e/7cd45c/32.png) [@e.sagnelonge](https://forum.inductiveautomation.com/u/e.sagnelonge)\
**Post date:** [August 12, 2025, 2:13pm UTC](https://forum.inductiveautomation.com/t/bring-back-direct-css-editing-in-perspective-keep-dev-workflows-fast-transparent/109627/4 "2025-08-12T14:13:23Z")

</div>

Alternatively, it might be interesting if someone developed a **Perspective Themes Manager/Editor** module, allowing themes to be edited directly within the Designer.

---

<div class="post-metadata">

**Author:** ![Samuel\_Sueur](https://avatars.discourse-cdn.com/v4/letter/s/e36b37/32.png) [@Samuel\_Sueur](https://forum.inductiveautomation.com/u/Samuel_Sueur)\
**Post date:** [August 12, 2025, 2:25pm UTC](https://forum.inductiveautomation.com/t/bring-back-direct-css-editing-in-perspective-keep-dev-workflows-fast-transparent/109627/5 "2025-08-12T14:25:38Z")

</div>

Just to make sure I understand this correctly, does this mean that we will still be able to edit the theme files via VS Code or a similar IDE ? The files were merely moved to a new location ?

Thanks

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [August 12, 2025, 2:51pm UTC](https://forum.inductiveautomation.com/t/bring-back-direct-css-editing-in-perspective-keep-dev-workflows-fast-transparent/109627/6 "2025-08-12T14:51:16Z")

</div>

You can no longer edit the system-supplied theme files. (But you shouldn’t in v8.1 either, as they are replaced on upgrades.) User-supplied theme files will now be full resource files.

---

<div class="post-metadata">

**Author:** ![paul-griffith](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/paul-griffith/32/37249_2.png) [@paul-griffith](https://forum.inductiveautomation.com/u/paul-griffith)\
**Post date:** [August 12, 2025, 4:18pm UTC](https://forum.inductiveautomation.com/t/bring-back-direct-css-editing-in-perspective-keep-dev-workflows-fast-transparent/109627/7 "2025-08-12T16:18:04Z")

</div>

This is an unnecessarily alarmist post.

As described [here](https://forum.inductiveautomation.com/t/custom-icon-library-in-8-3/109259/2), you absolutely can create Perspective's extra resources (fonts, themes, icons) now by directly editing files on disk. The location is different and two extra files are necessary - that's the only change. For themes, take the same instructions I gave for icons, but in your `config.json` have a single entry `"entrypoint": "someFile.css"` that points to the 'primary' file. For fonts, create an empty JSON object in the `config.json`.

The overall structure of the theme/icon/etc files has not changed - you can [extract them](https://forum.inductiveautomation.com/t/how-to-easily-copy-a-built-in-theme/109586/5) from the module easily with an archive explorer if you want to open them in an external code editor.

As mentioned by others, that restoring an 8.1 _gateway_ backup doesn't properly restore all theme resources is a known issue that we're going to fix.

---

<div class="post-metadata">

**Author:** ![nader.chinichian](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/nader.chinichian/32/9261_2.png) [@nader.chinichian](https://forum.inductiveautomation.com/u/nader.chinichian)\
**Post date:** [August 13, 2025, 6:21am UTC](https://forum.inductiveautomation.com/t/bring-back-direct-css-editing-in-perspective-keep-dev-workflows-fast-transparent/109627/8 "2025-08-13T06:21:08Z")

</div>

So, as you mention each time I make a simple changes in theme/fonts/icons folder I need to do reset? The manipulating theme and icons is something that going to change during development rapidly, and this is not make scene each time we have a simple change I need to reset the gateway!

Imagine We already have icons lib called `BMS` setup and client ask to add a some new icons into it which is fairly simple process and he want to see them in the project so he may want to change them till he happy with the result. So each time I need to reset gateway and wait for 5 min till server up and then wait another 2 min to open Designer!

1. 

> Restart the gateway (or POST the `/data/api/v1/scan/config` endpoint) to pick up the changed resource.

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [August 13, 2025, 12:01pm UTC](https://forum.inductiveautomation.com/t/bring-back-direct-css-editing-in-perspective-keep-dev-workflows-fast-transparent/109627/9 "2025-08-13T12:01:26Z")

</div>

> [@nader.chinichian](#):
>
> I need to reset the gateway!

There are **two** options in your quoted instruction. Use the other option if restarting is not desired.

---

<div class="post-metadata">

**Author:** ![ggross](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/ggross/32/12668_2.png) [@ggross](https://forum.inductiveautomation.com/u/ggross)\
**Post date:** [August 13, 2025, 3:33pm UTC](https://forum.inductiveautomation.com/t/bring-back-direct-css-editing-in-perspective-keep-dev-workflows-fast-transparent/109627/10 "2025-08-13T15:33:27Z")

</div>

![Scan Config](https://us1.discourse-cdn.com/inductiveautomation/original/3X/3/8/3810da65f210fa0c28ee213e77ab913f9922d40f.png)

We also include a button in the UI that will make the POST call to the `/data/api/v1/scan/config` endpoint if you don’t want to make the API call yourself.

---

<div class="post-metadata">

**Author:** ![nader.chinichian](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/nader.chinichian/32/9261_2.png) [@nader.chinichian](https://forum.inductiveautomation.com/u/nader.chinichian)\
**Post date:** [August 14, 2025, 6:50am UTC](https://forum.inductiveautomation.com/t/bring-back-direct-css-editing-in-perspective-keep-dev-workflows-fast-transparent/109627/11 "2025-08-14T06:50:40Z")

</div>

Ok, in the following folder for my theme:

`D:\Ignition 8.3.0 b2\data\config\resources\core\com.inductiveautomation.perspective\themes\my-light`

And inside the my-light folder:

 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/3/b/3be340052342e6ef6d62e931a08003a5ee25c0e7.png)

[config.json](https://forum.inductiveautomation.com/uploads/short-url/tvgS8czRg4oDTzh0AsYqXbdptEO.json) (32 Bytes)

[resource.json](https://forum.inductiveautomation.com/uploads/short-url/1Alu5ObJjswItP57TsTRjsFg1MX.json) (191 Bytes)

After restarting the gateway, I have` my-light` in `session.props.theme`dropbox but the my CSS variables doesn’t work. What did I wrong here?

 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/8/8/885d060f22355aa395b34339645a4e07e67c2238.png)

---

<div class="post-metadata">

**Author:** ![paul-griffith](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/paul-griffith/32/37249_2.png) [@paul-griffith](https://forum.inductiveautomation.com/u/paul-griffith)\
**Post date:** [August 14, 2025, 3:28pm UTC](https://forum.inductiveautomation.com/t/bring-back-direct-css-editing-in-perspective-keep-dev-workflows-fast-transparent/109627/12 "2025-08-14T15:28:12Z")

</div>

Add `variables.css` to the `resource.json`'s manifest of files.

---

<div class="post-metadata">

**Author:** ![nader.chinichian](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/nader.chinichian/32/9261_2.png) [@nader.chinichian](https://forum.inductiveautomation.com/u/nader.chinichian)\
**Post date:** [August 14, 2025, 4:51pm UTC](https://forum.inductiveautomation.com/t/bring-back-direct-css-editing-in-perspective-keep-dev-workflows-fast-transparent/109627/13 "2025-08-14T16:51:37Z")

</div>

Ok, I wonder when I only add `index.css` into to the resource file and inside index.css we have `@import "./variables.css"; ` it should automatically access to it without adding to the resources. Am I right? The index.css is entry point to whole other nested CSS files. In practice, we have +50 CSS file, now imagine it will be nightmare for me to add all of these dependency into the resource file.

Imagine I add all of my css file inside another folder called my-light and I just reference variables.css from index.css as following image. This doesn’t work.

 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/2/a/2a59d6ef6cc54366dc41f23af95984b4688be464.png)

---

<div class="post-metadata">

**Author:** ![nader.chinichian](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/nader.chinichian/32/9261_2.png) [@nader.chinichian](https://forum.inductiveautomation.com/u/nader.chinichian)\
**Post date:** [August 14, 2025, 5:14pm UTC](https://forum.inductiveautomation.com/t/bring-back-direct-css-editing-in-perspective-keep-dev-workflows-fast-transparent/109627/14 "2025-08-14T17:14:03Z")

</div>

I have another question as well.

As now the default theme are not expose in the file system, if I want to add some CSS files to the light theme, what should I do?(forget API)

Should I create a folder called light and put light.css file in it and then append my import CSS files to it like 8.1 and finally create config and resource file in the same folder? If yes how light dependencies will solve? (app, common, palette, fonts,…)

In most cases we use Perspective out-of-box theme with just some additional CSS to it.

---

<div class="post-metadata">

**Author:** ![najsel89](https://avatars.discourse-cdn.com/v4/letter/n/ba8739/32.png) [@najsel89](https://forum.inductiveautomation.com/u/najsel89)\
**Post date:** [August 27, 2025, 1:41pm UTC](https://forum.inductiveautomation.com/t/bring-back-direct-css-editing-in-perspective-keep-dev-workflows-fast-transparent/109627/15 "2025-08-27T13:41:05Z")

</div>

Hi everyone,

I'm working with **Ignition 8.3.0** and trying to import a custom font (`MyCustomFont`) into Perspective using the **REST API** and manual file placement. Despite following all the steps, the font does **not appear in the Designer dropdown** , and the font file is **not listed in the `data` array** when I query the font config.

#### 🔧 What I've Done So Far:

- Placed the font file (`MyCustomFont.woff2`) in: C:\Program Files\Inductive Automation\Ignition\data\config\resources\core\com.inductiveautomation.perspective\fonts\MyCustomFont

- Created `config.json`:

- Created `resource.json`:

- Ran `POST /data/api/v1/scan/config` and restarted the gateway.

- Verified via `GET /config/perspective/fonts` that the font is listed, **enabled** , and has a valid signature—but the `data` array only includes `config.json` and `backupConfig.json`, not the `.woff2` file.

- Tried copying a known working `.woff` file from Roboto into the folder and renaming it—still not registered.

- Tried creating the font via the API (`PUT config-perspective-fonts/Create Fonts`) with a valid `config` object—still results in an empty `config.json` on disk.

#### ❓ What I’m Trying to Achieve:

I want the font to appear in the Perspective Designer dropdown and be usable in style classes. I suspect Ignition isn’t registering the font file correctly, but I’m not sure why.

* * *

Has anyone successfully registered a custom font in Ignition 8.3.0 using the API and file system? Is there a new requirement or change in how fonts are scanned or loaded?

Any help or insight would be greatly appreciated!

Thanks in advance 🙏

---

<div class="post-metadata">

**Author:** ![paul-griffith](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/paul-griffith/32/37249_2.png) [@paul-griffith](https://forum.inductiveautomation.com/u/paul-griffith)\
**Post date:** [August 27, 2025, 3:59pm UTC](https://forum.inductiveautomation.com/t/bring-back-direct-css-editing-in-perspective-keep-dev-workflows-fast-transparent/109627/16 "2025-08-27T15:59:22Z")

</div>

That's not a valid resource.json file. Compare with an existing sample file, or follow the examples I've linked above more closely.

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [August 28, 2025, 12:56pm UTC](https://forum.inductiveautomation.com/t/bring-back-direct-css-editing-in-perspective-keep-dev-workflows-fast-transparent/109627/17 "2025-08-28T12:56:20Z")

</div>

A post was split to a new topic: [Custom Fonts in 8.3 Beta](https://forum.inductiveautomation.com/t/custom-fonts-in-8-3-beta/110239)
