diff --git a/quic/core/quic_packet_creator.cc b/quic/core/quic_packet_creator.cc
index ee2dc02..f2e9789 100644
--- a/quic/core/quic_packet_creator.cc
+++ b/quic/core/quic_packet_creator.cc
@@ -94,11 +94,16 @@
       flusher_attached_(false),
       fully_pad_crypto_handshake_packets_(true),
       combine_generator_and_creator_(
-          GetQuicReloadableFlag(quic_combine_generator_and_creator)) {
+          GetQuicReloadableFlag(quic_combine_generator_and_creator)),
+      populate_nonretransmittable_frames_(
+          GetQuicReloadableFlag(quic_populate_nonretransmittable_frames)) {
   SetMaxPacketLength(kDefaultMaxPacketSize);
   if (combine_generator_and_creator_) {
     QUIC_RELOADABLE_FLAG_COUNT(quic_combine_generator_and_creator);
   }
+  if (populate_nonretransmittable_frames_) {
+    QUIC_RELOADABLE_FLAG_COUNT(quic_populate_nonretransmittable_frames);
+  }
 }
 
 QuicPacketCreator::~QuicPacketCreator() {
@@ -445,6 +450,7 @@
   packet_.encrypted_buffer = nullptr;
   packet_.encrypted_length = 0;
   DCHECK(packet_.retransmittable_frames.empty());
+  DCHECK(packet_.nonretransmittable_frames.empty());
   packet_.largest_acked.Clear();
   needs_full_padding_ = false;
 }
@@ -1399,6 +1405,10 @@
       packet_.has_crypto_handshake = IS_HANDSHAKE;
     }
   } else {
+    if (populate_nonretransmittable_frames_ &&
+        !QuicUtils::IsRetransmittableFrame(frame.type)) {
+      packet_.nonretransmittable_frames.push_back(frame);
+    }
     queued_frames_.push_back(frame);
   }
 
diff --git a/quic/core/quic_packet_creator.h b/quic/core/quic_packet_creator.h
index 9b4b665..50bd7f8 100644
--- a/quic/core/quic_packet_creator.h
+++ b/quic/core/quic_packet_creator.h
@@ -582,6 +582,9 @@
 
   // Latched value of quic_combine_generator_and_creator.
   const bool combine_generator_and_creator_;
+
+  // Latched value of quic_populate_nonretransmittable_frames.
+  const bool populate_nonretransmittable_frames_;
 };
 
 }  // namespace quic
diff --git a/quic/core/quic_packet_creator_test.cc b/quic/core/quic_packet_creator_test.cc
index b9779cc..2d0d5b3 100644
--- a/quic/core/quic_packet_creator_test.cc
+++ b/quic/core/quic_packet_creator_test.cc
@@ -2426,6 +2426,27 @@
   ProcessPacket(serialized_packet_);
 }
 
+TEST_P(QuicPacketCreatorTest, SaveNonRetransmittableFrames) {
+  if (!GetQuicReloadableFlag(quic_populate_nonretransmittable_frames)) {
+    return;
+  }
+  QuicAckFrame ack_frame(InitAckFrame(1));
+  frames_.push_back(QuicFrame(&ack_frame));
+  frames_.push_back(QuicFrame(QuicPaddingFrame(-1)));
+  SerializedPacket serialized = SerializeAllFrames(frames_);
+  ASSERT_EQ(2u, serialized.nonretransmittable_frames.size());
+  EXPECT_EQ(ACK_FRAME, serialized.nonretransmittable_frames[0].type);
+  EXPECT_EQ(PADDING_FRAME, serialized.nonretransmittable_frames[1].type);
+  frames_.clear();
+
+  // Serialize another packet with the same frames.
+  SerializedPacket packet = QuicPacketCreatorPeer::SerializeAllFrames(
+      &creator_, serialized.nonretransmittable_frames, buffer_,
+      kMaxOutgoingPacketSize);
+  // Verify the packet length of both packets are equal.
+  EXPECT_EQ(serialized.encrypted_length, packet.encrypted_length);
+}
+
 }  // namespace
 }  // namespace test
 }  // namespace quic
diff --git a/quic/core/quic_packets.cc b/quic/core/quic_packets.cc
index dfe80cf..216a37b 100644
--- a/quic/core/quic_packets.cc
+++ b/quic/core/quic_packets.cc
@@ -477,6 +477,7 @@
       original_packet_number(other.original_packet_number),
       largest_acked(other.largest_acked) {
   retransmittable_frames.swap(other.retransmittable_frames);
+  nonretransmittable_frames.swap(other.nonretransmittable_frames);
 }
 
 SerializedPacket::~SerializedPacket() {}
@@ -485,6 +486,14 @@
   if (!serialized_packet->retransmittable_frames.empty()) {
     DeleteFrames(&serialized_packet->retransmittable_frames);
   }
+  for (auto& frame : serialized_packet->nonretransmittable_frames) {
+    if (frame.type == ACK_FRAME) {
+      // Ack frame is owned by received_packet_manager.
+      continue;
+    }
+    DeleteFrame(&frame);
+  }
+  serialized_packet->nonretransmittable_frames.clear();
   serialized_packet->encrypted_buffer = nullptr;
   serialized_packet->encrypted_length = 0;
   serialized_packet->largest_acked.Clear();
diff --git a/quic/core/quic_packets.h b/quic/core/quic_packets.h
index 82647c6..fcb2e56 100644
--- a/quic/core/quic_packets.h
+++ b/quic/core/quic_packets.h
@@ -370,6 +370,7 @@
   const char* encrypted_buffer;
   QuicPacketLength encrypted_length;
   QuicFrames retransmittable_frames;
+  QuicFrames nonretransmittable_frames;
   IsHandshake has_crypto_handshake;
   // -1: full padding to the end of a max-sized packet
   //  0: no padding
