diff --git a/quiche/quic/core/quic_framer.cc b/quiche/quic/core/quic_framer.cc
index 23a65d0..f06f205 100644
--- a/quiche/quic/core/quic_framer.cc
+++ b/quiche/quic/core/quic_framer.cc
@@ -411,7 +411,6 @@
     : visitor_(nullptr),
       error_(QUIC_NO_ERROR),
       last_serialized_server_connection_id_(EmptyQuicConnectionId()),
-      last_serialized_client_connection_id_(EmptyQuicConnectionId()),
       version_(ParsedQuicVersion::Unsupported()),
       supported_versions_(supported_versions),
       decrypter_level_(ENCRYPTION_INITIAL),
@@ -2285,10 +2284,6 @@
   }
 
   last_serialized_server_connection_id_ = server_connection_id;
-  if (version_.SupportsClientConnectionIds()) {
-    last_serialized_client_connection_id_ =
-        GetClientConnectionIdAsSender(header, perspective_);
-  }
 
   // TODO(b/141924462) Remove this QUIC_BUG once we do support sending RETRY.
   QUIC_BUG_IF(quic_bug_12975_7,
diff --git a/quiche/quic/core/quic_framer.h b/quiche/quic/core/quic_framer.h
index 8a93615..b93667e 100644
--- a/quiche/quic/core/quic_framer.h
+++ b/quiche/quic/core/quic_framer.h
@@ -1102,8 +1102,6 @@
   QuicPacketNumber largest_decrypted_packet_numbers_[NUM_PACKET_NUMBER_SPACES];
   // Last server connection ID seen on the wire.
   QuicConnectionId last_serialized_server_connection_id_;
-  // Last client connection ID seen on the wire.
-  QuicConnectionId last_serialized_client_connection_id_;
   // Version of the protocol being used.
   ParsedQuicVersion version_;
   // This vector contains QUIC versions which we currently support.
diff --git a/quiche/quic/core/quic_framer_test.cc b/quiche/quic/core/quic_framer_test.cc
index af6f0a3..56f0fbc 100644
--- a/quiche/quic/core/quic_framer_test.cc
+++ b/quiche/quic/core/quic_framer_test.cc
@@ -1541,8 +1541,6 @@
     return;
   }
   SetDecrypterLevel(ENCRYPTION_FORWARD_SECURE);
-  QuicFramerPeer::SetLastSerializedClientConnectionId(&framer_,
-                                                      TestConnectionId(0x33));
   QuicFramerPeer::SetPerspective(&framer_, Perspective::IS_SERVER);
   // clang-format off
   unsigned char packet[] = {
diff --git a/quiche/quic/test_tools/fuzzing/quic_framer_process_data_packet_fuzzer.cc b/quiche/quic/test_tools/fuzzing/quic_framer_process_data_packet_fuzzer.cc
index d3aebf7..937708d 100644
--- a/quiche/quic/test_tools/fuzzing/quic_framer_process_data_packet_fuzzer.cc
+++ b/quiche/quic/test_tools/fuzzing/quic_framer_process_data_packet_fuzzer.cc
@@ -206,9 +206,6 @@
   if (receiver_perspective == Perspective::IS_CLIENT) {
     QuicFramerPeer::SetLastSerializedServerConnectionId(
         &receiver_framer, header.source_connection_id);
-  } else {
-    QuicFramerPeer::SetLastSerializedClientConnectionId(
-        &receiver_framer, header.source_connection_id);
   }
 
   std::array<char, kEthernetMTU> packet_buffer;
diff --git a/quiche/quic/test_tools/quic_framer_peer.cc b/quiche/quic/test_tools/quic_framer_peer.cc
index 2bf5157..1c23468 100644
--- a/quiche/quic/test_tools/quic_framer_peer.cc
+++ b/quiche/quic/test_tools/quic_framer_peer.cc
@@ -25,12 +25,6 @@
 }
 
 // static
-void QuicFramerPeer::SetLastSerializedClientConnectionId(
-    QuicFramer* framer, QuicConnectionId client_connection_id) {
-  framer->last_serialized_client_connection_id_ = client_connection_id;
-}
-
-// static
 void QuicFramerPeer::SetLastWrittenPacketNumberLength(
     QuicFramer* framer, size_t packet_number_length) {
   framer->last_written_packet_number_length_ = packet_number_length;
diff --git a/quiche/quic/test_tools/quic_framer_peer.h b/quiche/quic/test_tools/quic_framer_peer.h
index 79b1005..49df26a 100644
--- a/quiche/quic/test_tools/quic_framer_peer.h
+++ b/quiche/quic/test_tools/quic_framer_peer.h
@@ -22,8 +22,6 @@
       QuicPacketNumber last_packet_number, uint64_t packet_number);
   static void SetLastSerializedServerConnectionId(
       QuicFramer* framer, QuicConnectionId server_connection_id);
-  static void SetLastSerializedClientConnectionId(
-      QuicFramer* framer, QuicConnectionId client_connection_id);
   static void SetLastWrittenPacketNumberLength(QuicFramer* framer,
                                                size_t packet_number_length);
   static void SetLargestPacketNumber(QuicFramer* framer,
