diff --git a/src/plugins/start/developer-settings/constants.ts b/src/plugins/start/developer-settings/constants.ts
index 28192f6..6e92bba 100644
--- a/src/plugins/start/developer-settings/constants.ts
+++ b/src/plugins/start/developer-settings/constants.ts
@@ -11,9 +11,11 @@ export const Setting = {
RDTDisconnect: 'RDTDisconnect',
EvalJS: 'EvalJS',
AssetBrowser: 'AssetBrowser',
+ TestErrorBoundary: 'TestErrorBoundary',
} as const
export const RouteNames = {
[Setting.RevengeDeveloper]: 'Revenge Developer',
[Setting.AssetBrowser]: 'Asset Browser',
+ [Setting.TestErrorBoundary]: 'Test ErrorBoundary',
} as const
diff --git a/src/plugins/start/developer-settings/definitions/TestErrorBoundarySetting.tsx b/src/plugins/start/developer-settings/definitions/TestErrorBoundarySetting.tsx
new file mode 100644
index 0000000..846b348
--- /dev/null
+++ b/src/plugins/start/developer-settings/definitions/TestErrorBoundarySetting.tsx
@@ -0,0 +1,20 @@
+import TableRowAssetIcon from '@revenge-mod/components/TableRowAssetIcon'
+import { RouteNames, Setting } from '../constants'
+import type { SettingsItem } from '@revenge-mod/discord/modules/settings'
+
+const TestErrorBoundarySetting: SettingsItem = {
+ parent: Setting.RevengeDeveloper,
+ type: 'route',
+ variant: 'danger',
+ IconComponent: () => (
+
+ ),
+ title: () => 'Test ErrorBoundary',
+ screen: {
+ route: RouteNames[Setting.TestErrorBoundary],
+ getComponent: () =>
+ require('../screens/TestErrorBoundarySettingScreen').default,
+ },
+}
+
+export default TestErrorBoundarySetting
diff --git a/src/plugins/start/developer-settings/screens/RevengeDeveloperSettingScreen.tsx b/src/plugins/start/developer-settings/screens/RevengeDeveloperSettingScreen.tsx
index 49e3abc..d9dfef6 100644
--- a/src/plugins/start/developer-settings/screens/RevengeDeveloperSettingScreen.tsx
+++ b/src/plugins/start/developer-settings/screens/RevengeDeveloperSettingScreen.tsx
@@ -34,7 +34,11 @@ export default function RevengeDeveloperSettingScreen() {
},
{
label: 'Tools',
- settings: [Setting.EvalJS, Setting.AssetBrowser],
+ settings: [
+ Setting.EvalJS,
+ Setting.AssetBrowser,
+ Setting.TestErrorBoundary,
+ ],
},
]}
/>
diff --git a/src/plugins/start/developer-settings/screens/TestErrorBoundarySettingScreen.tsx b/src/plugins/start/developer-settings/screens/TestErrorBoundarySettingScreen.tsx
new file mode 100644
index 0000000..72c5024
--- /dev/null
+++ b/src/plugins/start/developer-settings/screens/TestErrorBoundarySettingScreen.tsx
@@ -0,0 +1,12 @@
+import { useEffect } from 'react'
+
+export default function TestErrorBoundarySettingScreen() {
+ let x = 0
+
+ useEffect(() => {
+ x++
+ })
+
+ // @ts-expect-error: Intentional
+ return x < 2 ? : null
+}
diff --git a/src/plugins/start/developer-settings/utils.ts b/src/plugins/start/developer-settings/utils.ts
index 7a953a8..66964cf 100644
--- a/src/plugins/start/developer-settings/utils.ts
+++ b/src/plugins/start/developer-settings/utils.ts
@@ -11,6 +11,7 @@ import RDTConnectSetting from './definitions/RDTConnectSetting'
import RDTDisconnectSetting from './definitions/RDTDisconnectSetting'
import RDTVersionSetting from './definitions/RDTVersionSetting'
import RevengeDeveloperSetting from './definitions/RevengeDeveloperSetting'
+import TestErrorBoundarySetting from './definitions/TestErrorBoundarySetting'
export function register() {
api.cleanup(
@@ -22,6 +23,7 @@ export function register() {
[Setting.RDTDisconnect]: RDTDisconnectSetting,
[Setting.EvalJS]: EvalJSSetting,
[Setting.AssetBrowser]: AssetBrowserSetting,
+ [Setting.TestErrorBoundary]: TestErrorBoundarySetting,
}),
addSettingsItemToSection('REVENGE', Setting.RevengeDeveloper),
)