diff --git a/quiche/quic/core/quic_buffered_packet_store.cc b/quiche/quic/core/quic_buffered_packet_store.cc
index fae7ad1..553d835 100644
--- a/quiche/quic/core/quic_buffered_packet_store.cc
+++ b/quiche/quic/core/quic_buffered_packet_store.cc
@@ -180,39 +180,36 @@
   if (it != undecryptable_packets_.end()) {
     packets_to_deliver = std::move(it->second);
     undecryptable_packets_.erase(connection_id);
-    if (GetQuicReloadableFlag(quic_deliver_initial_packets_first)) {
-      QUIC_RELOADABLE_FLAG_COUNT(quic_deliver_initial_packets_first);
-      std::list<BufferedPacket> initial_packets;
-      std::list<BufferedPacket> other_packets;
-      for (auto& packet : packets_to_deliver.buffered_packets) {
-        QuicLongHeaderType long_packet_type = INVALID_PACKET_TYPE;
-        PacketHeaderFormat unused_format;
-        bool unused_version_flag;
-        bool unused_use_length_prefix;
-        QuicVersionLabel unused_version_label;
-        ParsedQuicVersion unused_parsed_version = UnsupportedQuicVersion();
-        QuicConnectionId unused_destination_connection_id;
-        QuicConnectionId unused_source_connection_id;
-        absl::optional<absl::string_view> unused_retry_token;
-        std::string unused_detailed_error;
+    std::list<BufferedPacket> initial_packets;
+    std::list<BufferedPacket> other_packets;
+    for (auto& packet : packets_to_deliver.buffered_packets) {
+      QuicLongHeaderType long_packet_type = INVALID_PACKET_TYPE;
+      PacketHeaderFormat unused_format;
+      bool unused_version_flag;
+      bool unused_use_length_prefix;
+      QuicVersionLabel unused_version_label;
+      ParsedQuicVersion unused_parsed_version = UnsupportedQuicVersion();
+      QuicConnectionId unused_destination_connection_id;
+      QuicConnectionId unused_source_connection_id;
+      absl::optional<absl::string_view> unused_retry_token;
+      std::string unused_detailed_error;
 
-        QuicErrorCode error_code = QuicFramer::ParsePublicHeaderDispatcher(
-            *packet.packet, kQuicDefaultConnectionIdLength, &unused_format,
-            &long_packet_type, &unused_version_flag, &unused_use_length_prefix,
-            &unused_version_label, &unused_parsed_version,
-            &unused_destination_connection_id, &unused_source_connection_id,
-            &unused_retry_token, &unused_detailed_error);
+      QuicErrorCode error_code = QuicFramer::ParsePublicHeaderDispatcher(
+          *packet.packet, kQuicDefaultConnectionIdLength, &unused_format,
+          &long_packet_type, &unused_version_flag, &unused_use_length_prefix,
+          &unused_version_label, &unused_parsed_version,
+          &unused_destination_connection_id, &unused_source_connection_id,
+          &unused_retry_token, &unused_detailed_error);
 
-        if (error_code == QUIC_NO_ERROR && long_packet_type == INITIAL) {
-          initial_packets.push_back(std::move(packet));
-        } else {
-          other_packets.push_back(std::move(packet));
-        }
+      if (error_code == QUIC_NO_ERROR && long_packet_type == INITIAL) {
+        initial_packets.push_back(std::move(packet));
+      } else {
+        other_packets.push_back(std::move(packet));
       }
+    }
 
       initial_packets.splice(initial_packets.end(), other_packets);
       packets_to_deliver.buffered_packets = std::move(initial_packets);
-    }
   }
   return packets_to_deliver;
 }
diff --git a/quiche/quic/core/quic_buffered_packet_store_test.cc b/quiche/quic/core/quic_buffered_packet_store_test.cc
index 4944db7..3b32300 100644
--- a/quiche/quic/core/quic_buffered_packet_store_test.cc
+++ b/quiche/quic/core/quic_buffered_packet_store_test.cc
@@ -13,7 +13,6 @@
 #include "quiche/quic/core/quic_error_codes.h"
 #include "quiche/quic/core/quic_types.h"
 #include "quiche/quic/core/quic_versions.h"
-#include "quiche/quic/platform/api/quic_flags.h"
 #include "quiche/quic/platform/api/quic_test.h"
 #include "quiche/quic/test_tools/first_flight.h"
 #include "quiche/quic/test_tools/mock_clock.h"
@@ -589,13 +588,11 @@
         &unused_retry_token, &unused_detailed_error);
     EXPECT_THAT(error_code, IsQuicNoError());
 
-    if (GetQuicReloadableFlag(quic_deliver_initial_packets_first)) {
-      // INITIAL packets should not follow a non-INITIAL packet.
-      EXPECT_THAT(long_packet_type,
-                  Conditional(previous_packet_type == INITIAL,
-                              A<QuicLongHeaderType>(), Ne(INITIAL)));
-      previous_packet_type = long_packet_type;
-    }
+    // INITIAL packets should not follow a non-INITIAL packet.
+    EXPECT_THAT(long_packet_type,
+                Conditional(previous_packet_type == INITIAL,
+                            A<QuicLongHeaderType>(), Ne(INITIAL)));
+    previous_packet_type = long_packet_type;
   }
 }
 }  // namespace
diff --git a/quiche/quic/core/quic_flags_list.h b/quiche/quic/core/quic_flags_list.h
index d423535..60b709b 100644
--- a/quiche/quic/core/quic_flags_list.h
+++ b/quiche/quic/core/quic_flags_list.h
@@ -45,8 +45,6 @@
 QUIC_FLAG(quic_reloadable_flag_quic_consider_original_connection_id_as_active_pre_handshake, true)
 // If true, default-enable 5RTO blachole detection.
 QUIC_FLAG(quic_reloadable_flag_quic_default_enable_5rto_blackhole_detection2, true)
-// If true, deliver INITIAL packets before other types of packets in QuicBufferedPacketStore.
-QUIC_FLAG(quic_reloadable_flag_quic_deliver_initial_packets_first, true)
 // If true, disable QUIC version Q043.
 QUIC_FLAG(quic_reloadable_flag_quic_disable_version_q043, false)
 // If true, disable QUIC version Q046.
