diff --git a/.github/renovate.json5 b/.github/renovate.json5
index 895dbfbad23cb28d53199385cd29b3ec379ea1fe..a7998ddfdc954aa70eff9bfc18053022a1df90dc 100644
--- a/.github/renovate.json5
+++ b/.github/renovate.json5
@@ -50,7 +50,6 @@
       matchManagers: ['bundler'],
       matchPackageNames: [
         'rack', // Needs to be synced with Rails version
-        'sprockets', // Requires manual upgrade https://github.com/rails/sprockets/blob/master/UPGRADING.md#guide-to-upgrading-from-sprockets-3x-to-4x
         'strong_migrations', // Requires manual upgrade
         'sidekiq', // Requires manual upgrade
         'sidekiq-unique-jobs', // Requires manual upgrades and sync with Sidekiq version
diff --git a/Gemfile b/Gemfile
index e3fb39e1694d62b7042db9f311f6f19d3d01e036..cfcbcc0d3c4f378748d61d4ecbd37f28b35fa9d1 100644
--- a/Gemfile
+++ b/Gemfile
@@ -5,7 +5,7 @@ ruby '>= 3.0.0'
 
 gem 'puma', '~> 6.3'
 gem 'rails', '~> 7.1.1'
-gem 'sprockets', '~> 3.7.2'
+gem 'propshaft'
 gem 'thor', '~> 1.2'
 gem 'rack', '~> 2.2.7'
 
@@ -89,7 +89,6 @@ gem 'sidekiq-unique-jobs', '~> 7.1'
 gem 'sidekiq-bulk', '~> 0.2.0'
 gem 'simple-navigation', '~> 4.4'
 gem 'simple_form', '~> 5.2'
-gem 'sprockets-rails', '~> 3.4', require: 'sprockets/railtie'
 gem 'stoplight', '~> 3.0.1'
 gem 'strong_migrations', '1.6.4'
 gem 'tty-prompt', '~> 0.23', require: false
diff --git a/Gemfile.lock b/Gemfile.lock
index 4a409a0ad6149104dc1b49b23c7f173de70f6e33..738562116f401f480a2fb4473eaba403f0b10e3c 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -534,6 +534,11 @@ GEM
       net-smtp
       premailer (~> 1.7, >= 1.7.9)
     private_address_check (0.5.0)
+    propshaft (0.8.0)
+      actionpack (>= 7.0.0)
+      activesupport (>= 7.0.0)
+      rack
+      railties (>= 7.0.0)
     psych (5.1.1.1)
       stringio
     public_suffix (5.0.4)
@@ -736,13 +741,6 @@ GEM
     simplecov-lcov (0.8.0)
     simplecov_json_formatter (0.1.4)
     smart_properties (1.17.0)
-    sprockets (3.7.2)
-      concurrent-ruby (~> 1.0)
-      rack (> 1, < 3)
-    sprockets-rails (3.4.2)
-      actionpack (>= 5.2)
-      activesupport (>= 5.2)
-      sprockets (>= 3.0.0)
     stackprof (0.2.25)
     statsd-ruby (1.5.0)
     stoplight (3.0.2)
@@ -911,6 +909,7 @@ DEPENDENCIES
   posix-spawn
   premailer-rails
   private_address_check (~> 0.5)
+  propshaft
   public_suffix (~> 5.0)
   puma (~> 6.3)
   pundit (~> 2.3)
@@ -949,8 +948,6 @@ DEPENDENCIES
   simple_form (~> 5.2)
   simplecov (~> 0.22)
   simplecov-lcov (~> 0.8)
-  sprockets (~> 3.7.2)
-  sprockets-rails (~> 3.4)
   stackprof
   stoplight (~> 3.0.1)
   strong_migrations (= 1.6.4)
diff --git a/config/application.rb b/config/application.rb
index 99ee4ffd76a06a2b3007ff18675b004b36da674d..b6426516eee17ef728337413544bcb9c3fc34a26 100644
--- a/config/application.rb
+++ b/config/application.rb
@@ -14,7 +14,6 @@ require 'active_job/railtie'
 # require 'action_mailbox/engine'
 # require 'action_text/engine'
 # require 'rails/test_unit/railtie'
-require 'sprockets/railtie'
 
 # Used to be implicitly required in action_mailbox/engine
 require 'mail'
diff --git a/config/environments/development.rb b/config/environments/development.rb
index e601fc014c47150432f4c9ded822cf1f70626dd9..3c13ada380a19c51c6028683b9eaf6ae05b5ac33 100644
--- a/config/environments/development.rb
+++ b/config/environments/development.rb
@@ -71,17 +71,6 @@ Rails.application.configure do
   # Highlight code that enqueued background job in logs.
   config.active_job.verbose_enqueue_logs = true
 
-  # Debug mode disables concatenation and preprocessing of assets.
-  config.assets.debug = true
-
-  # Suppress logger output for asset requests.
-  config.assets.quiet = true
-
-  # Adds additional error checking when serving assets at runtime.
-  # Checks for improperly declared sprockets dependencies.
-  # Raises helpful error messages.
-  config.assets.raise_runtime_errors = true
-
   # Raises error for missing translations.
   # config.i18n.raise_on_missing_translations = true
 
diff --git a/config/initializers/assets.rb b/config/initializers/assets.rb
deleted file mode 100644
index e1fd5f8cedb3b80eb9a3a5a0ff557900ee161636..0000000000000000000000000000000000000000
--- a/config/initializers/assets.rb
+++ /dev/null
@@ -1,16 +0,0 @@
-# frozen_string_literal: true
-
-# Be sure to restart your server when you modify this file.
-
-# Version of your assets, change this if you want to expire all your assets.
-Rails.application.config.assets.version = '1.0'
-
-# Add additional assets to the asset load path.
-# Rails.application.config.assets.paths << Emoji.images_path
-
-# Precompile additional assets.
-# application.js, application.css, and all non-JS/CSS in the app/assets
-# folder are already added.
-# Rails.application.config.assets.precompile += %w( admin.js admin.css )
-
-Rails.application.config.assets.initialize_on_precompile = true