diff --git a/experiments/field_trials.py b/experiments/field_trials.py
index d162144..053f12b 100755
--- a/experiments/field_trials.py
+++ b/experiments/field_trials.py
@@ -811,9 +811,6 @@
     FieldTrial('WebRTC-VP8IosMaxNumberOfThread',
                'webrtc:10005',
                date(2024, 4, 1)),
-    FieldTrial('WebRTC-VP8VariableFramerateScreenshare',
-               'webrtc:10310',
-               date(2024, 4, 1)),
     FieldTrial('WebRTC-VP9-GetEncoderInfoOverride',
                '',
                date(2024, 4, 1)),
@@ -902,7 +899,7 @@
 ])  # yapf: disable
 
 POLICY_EXEMPT_FIELD_TRIALS_DIGEST: str = \
-    '4b765e142d10eccf80ec58cc9e994463c092cca0'
+    '785cfbd78860c15c840e509f4859e2b20bf8f250'
 
 REGISTERED_FIELD_TRIALS: FrozenSet[FieldTrial] = ACTIVE_FIELD_TRIALS.union(
     POLICY_EXEMPT_FIELD_TRIALS)
@@ -1012,7 +1009,7 @@
         invalid.append(
             'POLICY_EXEMPT_FIELD_TRIALS has been modified. Please note that '
             'you must not add any new entries there. If you removed an entry '
-            'you should also update POLICY_EXEMPT_FIELD_TRIALS_DIGEST. The'
+            'you should also update POLICY_EXEMPT_FIELD_TRIALS_DIGEST. The '
             f'new digest is "{sha1.hexdigest()}".')
 
     for trial in field_trials:
diff --git a/modules/video_coding/codecs/vp8/libvpx_vp8_encoder.cc b/modules/video_coding/codecs/vp8/libvpx_vp8_encoder.cc
index 4593ecc..e9cf5d8 100644
--- a/modules/video_coding/codecs/vp8/libvpx_vp8_encoder.cc
+++ b/modules/video_coding/codecs/vp8/libvpx_vp8_encoder.cc
@@ -56,6 +56,11 @@
 constexpr char kVP8IosMaxNumberOfThreadFieldTrialParameter[] = "max_thread";
 #endif
 
+namespace variable_framerate_screenshare {
+static constexpr double kMinFps = 5.0;
+static constexpr int kUndershootPct = 30;
+}  // namespace variable_framerate_screenshare
+
 constexpr char kVp8ForcePartitionResilience[] =
     "WebRTC-VP8-ForcePartitionResilience";
 
@@ -310,10 +315,7 @@
       key_frame_request_(kMaxSimulcastStreams, false),
       last_encoder_output_time_(kMaxSimulcastStreams,
                                 Timestamp::MinusInfinity()),
-      variable_framerate_experiment_(ParseVariableFramerateConfig(
-          env_.field_trials(),
-          "WebRTC-VP8VariableFramerateScreenshare")),
-      framerate_controller_(variable_framerate_experiment_.framerate_limit),
+      framerate_controller_(variable_framerate_screenshare::kMinFps),
       max_frame_drop_interval_(ParseFrameDropInterval(env_.field_trials())),
       android_specific_threading_settings_(env_.field_trials().IsEnabled(
           "WebRTC-LibvpxVp8Encoder-AndroidSpecificThreadingSettings")) {
@@ -933,9 +935,7 @@
     return 0;
   return static_cast<size_t>(
       bitrate_bps / (8 * fps) *
-          (100 -
-           variable_framerate_experiment_.steady_state_undershoot_percentage) /
-          100 +
+          (100 - variable_framerate_screenshare::kUndershootPct) / 100 +
       0.5);
 }
 
@@ -1013,8 +1013,7 @@
 
   if (frame.update_rect().IsEmpty() && num_steady_state_frames_ >= 3 &&
       !key_frame_requested) {
-    if (variable_framerate_experiment_.enabled &&
-        framerate_controller_.DropFrame(frame.rtp_timestamp() /
+    if (framerate_controller_.DropFrame(frame.rtp_timestamp() /
                                         kRtpTicksPerMs) &&
         frame_drop_overrides_.empty()) {
       return WEBRTC_VIDEO_CODEC_OK;
@@ -1265,7 +1264,7 @@
                                                    &codec_specific);
         const size_t steady_state_size = SteadyStateSize(
             stream_idx, codec_specific.codecSpecific.VP8.temporalIdx);
-        if (qp_128 > variable_framerate_experiment_.steady_state_qp ||
+        if (qp_128 > kVp8SteadyStateQpThreshold ||
             encoded_images_[encoder_idx].size() > steady_state_size) {
           num_steady_state_frames_ = 0;
         } else {
@@ -1488,24 +1487,4 @@
   return prepared_buffers;
 }
 
-// static
-LibvpxVp8Encoder::VariableFramerateExperiment
-LibvpxVp8Encoder::ParseVariableFramerateConfig(
-    const FieldTrialsView& field_trials,
-    absl::string_view group_name) {
-  FieldTrialFlag disabled = FieldTrialFlag("Disabled");
-  FieldTrialParameter<double> framerate_limit("min_fps", 5.0);
-  FieldTrialParameter<int> qp("min_qp", 15);
-  FieldTrialParameter<int> undershoot_percentage("undershoot", 30);
-  ParseFieldTrial({&disabled, &framerate_limit, &qp, &undershoot_percentage},
-                  field_trials.Lookup(group_name));
-  VariableFramerateExperiment config;
-  config.enabled = !disabled.Get();
-  config.framerate_limit = framerate_limit.Get();
-  config.steady_state_qp = qp.Get();
-  config.steady_state_undershoot_percentage = undershoot_percentage.Get();
-
-  return config;
-}
-
 }  // namespace webrtc
diff --git a/modules/video_coding/codecs/vp8/libvpx_vp8_encoder.h b/modules/video_coding/codecs/vp8/libvpx_vp8_encoder.h
index ed2a86a..1800741 100644
--- a/modules/video_coding/codecs/vp8/libvpx_vp8_encoder.h
+++ b/modules/video_coding/codecs/vp8/libvpx_vp8_encoder.h
@@ -138,20 +138,6 @@
   std::vector<vpx_rational_t> downsampling_factors_;
   std::vector<Timestamp> last_encoder_output_time_;
 
-  // Variable frame-rate screencast related fields and methods.
-  const struct VariableFramerateExperiment {
-    bool enabled = false;
-    // Framerate is limited to this value in steady state.
-    float framerate_limit = 5.0;
-    // This qp or below is considered a steady state.
-    int steady_state_qp = kVp8SteadyStateQpThreshold;
-    // Frames of at least this percentage below ideal for configured bitrate are
-    // considered in a steady state.
-    int steady_state_undershoot_percentage = 30;
-  } variable_framerate_experiment_;
-  static VariableFramerateExperiment ParseVariableFramerateConfig(
-      const FieldTrialsView& field_trials,
-      absl::string_view group_name);
   FramerateControllerDeprecated framerate_controller_;
   int num_steady_state_frames_ = 0;
 
