diff --git a/apps/admin-x-settings/src/components/settings/advanced/labs/AlphaFeatures.tsx b/apps/admin-x-settings/src/components/settings/advanced/labs/AlphaFeatures.tsx
index 9226aa0a7e..f23705753d 100644
--- a/apps/admin-x-settings/src/components/settings/advanced/labs/AlphaFeatures.tsx
+++ b/apps/admin-x-settings/src/components/settings/advanced/labs/AlphaFeatures.tsx
@@ -15,10 +15,6 @@ const features = [{
title: 'Webmentions',
description: 'Allows viewing received mentions on the dashboard.',
flag: 'webmentions'
-},{
- title: 'Websockets',
- description: <>Test out Websockets functionality at /ghost/#/websockets.>,
- flag: 'websockets'
},{
title: 'Stripe Automatic Tax (private beta)',
description: 'Use Stripe Automatic Tax at Stripe Checkout. Needs to be enabled in Stripe',
diff --git a/ghost/admin/app/components/websockets.hbs b/ghost/admin/app/components/websockets.hbs
deleted file mode 100644
index ff7065798d..0000000000
--- a/ghost/admin/app/components/websockets.hbs
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
Counter
-
Current counter value: {{this.counter}}
-
This counter will reset when Ghost reboots.
-
-
-
\ No newline at end of file
diff --git a/ghost/admin/app/components/websockets.js b/ghost/admin/app/components/websockets.js
deleted file mode 100644
index 5dc9a025fe..0000000000
--- a/ghost/admin/app/components/websockets.js
+++ /dev/null
@@ -1,31 +0,0 @@
-import Component from '@glimmer/component';
-import {action} from '@ember/object';
-import {inject as service} from '@ember/service';
-import {tracked} from '@glimmer/tracking';
-
-export default class Websockets extends Component {
- @service('socket-io') socketIOService;
-
- constructor(...args) {
- super(...args);
- // initialize connection
-
- // TODO: ensure this works with subdirectories
- let origin = window.location.origin; // this gives us host:port
- let socket = this.socketIOService.socketFor(origin);
- // add listener
- socket.on('addCount', (value) => {
- this.counter = value;
- });
- }
-
- // button counter
- @tracked counter = 0;
-
- // handle button/event
- @action handleClick() {
- let socket = this.socketIOService.socketFor(origin);
- this.counter = 1 + this.counter;
- socket.emit('addCount', this.counter);
- }
-}
diff --git a/ghost/admin/app/controllers/websockets.js b/ghost/admin/app/controllers/websockets.js
deleted file mode 100644
index 148a720962..0000000000
--- a/ghost/admin/app/controllers/websockets.js
+++ /dev/null
@@ -1,13 +0,0 @@
-import Controller from '@ember/controller';
-/* eslint-disable ghost/ember/alias-model-in-controller */
-import classic from 'ember-classic-decorator';
-import {inject as service} from '@ember/service';
-
-@classic
-export default class WebsocketsController extends Controller {
- @service feature;
-
- init() {
- super.init(...arguments);
- }
-}
\ No newline at end of file
diff --git a/ghost/admin/app/router.js b/ghost/admin/app/router.js
index 07ba4f1da8..758f09ebb6 100644
--- a/ghost/admin/app/router.js
+++ b/ghost/admin/app/router.js
@@ -60,9 +60,6 @@ Router.map(function () {
this.route('activitypub-x', {path: '/*sub'});
});
- // testing websockets
- this.route('websockets');
-
this.route('explore', function () {
// actual Ember route, not rendered in iframe
this.route('connect');
diff --git a/ghost/admin/app/routes/websockets.js b/ghost/admin/app/routes/websockets.js
deleted file mode 100644
index a01ad7a824..0000000000
--- a/ghost/admin/app/routes/websockets.js
+++ /dev/null
@@ -1,18 +0,0 @@
-import AuthenticatedRoute from './authenticated';
-import {inject as service} from '@ember/service';
-
-// need this to be authenticated
-export default class WebsocketRoute extends AuthenticatedRoute {
- @service session;
- @service router;
-
- beforeModel() {
- super.beforeModel(...arguments);
-
- const user = this.session.user;
-
- if (!user.isAdmin) {
- return this.router.transitionTo('settings-x.settings-x', `staff/${user.slug}`);
- }
- }
-}
diff --git a/ghost/admin/app/services/feature.js b/ghost/admin/app/services/feature.js
index b0a2312e5f..d6c1f790d0 100644
--- a/ghost/admin/app/services/feature.js
+++ b/ghost/admin/app/services/feature.js
@@ -63,7 +63,6 @@ export default class FeatureService extends Service {
@feature('lexicalMultiplayer') lexicalMultiplayer;
@feature('audienceFeedback') audienceFeedback;
@feature('webmentions') webmentions;
- @feature('websockets') websockets;
@feature('stripeAutomaticTax') stripeAutomaticTax;
@feature('emailCustomization') emailCustomization;
@feature('i18n') i18n;
diff --git a/ghost/admin/app/templates/websockets.hbs b/ghost/admin/app/templates/websockets.hbs
deleted file mode 100644
index 28189cc583..0000000000
--- a/ghost/admin/app/templates/websockets.hbs
+++ /dev/null
@@ -1,29 +0,0 @@
-
-
-
-
- Testing Websockets
-
-
-
- {{#if (feature 'websockets')}}
-
-
{{svg-jar "idea"}}This is a testing ground for new or experimental features. They
- may change, break or inexplicably disappear at any time.
-
-
Secrets
-
-
-
-
-
-
-
- {{else}}
-
-
{{svg-jar "warning-stroke"}}This is a testing ground for new or experimental features. You need developer experiments
- enabled to see the content here.
-