diff --git a/pkg/kernel/binary.md b/pkg/kernel/binary.md
index 9408027..94e1c0f 100644
--- a/pkg/kernel/binary.md
+++ b/pkg/kernel/binary.md
@@ -1,3 +1,9 @@
+<!--
+Copyright (c) 2016, the Dart project authors.  Please see the AUTHORS file
+for details. All rights reserved. Use of this source code is governed by a
+BSD-style license that can be found in the LICENSE file.
+-->
+
 This file describes the binary format of Dart Kernel.
 
 Notation
@@ -131,7 +137,8 @@
 
 type ComponentFile {
   UInt32 magic = 0x90ABCDEF;
-  UInt32 formatVersion = 16;
+  UInt32 formatVersion = 17;
+  List<String> problemsAsJson; // Described in problems.md.
   Library[] libraries;
   UriSource sourceMap;
   List<CanonicalName> canonicalNames;
@@ -219,6 +226,7 @@
   StringReference name;
   // An absolute path URI to the .dart file from which the library was created.
   UriReference fileUri;
+  List<String> problemsAsJson; // Described in problems.md.
   List<Expression> annotations;
   List<LibraryDependency> libraryDependencies;
   List<CanonicalNameReference> additionalExports;
diff --git a/pkg/kernel/lib/ast.dart b/pkg/kernel/lib/ast.dart
index 2bddaf9..082c294 100644
--- a/pkg/kernel/lib/ast.dart
+++ b/pkg/kernel/lib/ast.dart
@@ -291,6 +291,8 @@
 
   String name;
 
+  Set<String> problemsAsJson = new Set<String>();
+
   @nocoq
   final List<Expression> annotations;
 
@@ -5509,6 +5511,8 @@
 class Component extends TreeNode {
   final CanonicalName root;
 
+  Set<String> problemsAsJson = new Set<String>();
+
   final List<Library> libraries;
 
   /// Map from a source file URI to a line-starts table and source code.
diff --git a/pkg/kernel/lib/binary/ast_from_binary.dart b/pkg/kernel/lib/binary/ast_from_binary.dart
index 59148f3..a3d25eb 100644
--- a/pkg/kernel/lib/binary/ast_from_binary.dart
+++ b/pkg/kernel/lib/binary/ast_from_binary.dart
@@ -624,6 +624,9 @@
       throw InvalidKernelVersionError(formatVersion);
     }
 
+    Set<String> problemsAsJson = readSetOfStrings();
+    component.problemsAsJson.addAll(problemsAsJson);
+
     // Read component index from the end of this ComponentFiles serialized data.
     _ComponentIndex index = _readComponentIndex(componentFileSize);
 
@@ -659,6 +662,16 @@
     _byteOffset = _componentStartOffset + componentFileSize;
   }
 
+  Set<String> readSetOfStrings() {
+    int length = readUInt();
+    Set<String> strings = new Set<String>();
+    for (int i = 0; i < length; i++) {
+      String s = const Utf8Decoder().convert(readByteList());
+      strings.add(s);
+    }
+    return strings;
+  }
+
   Map<Uri, Source> readUriToSource() {
     int length = readUint32();
 
@@ -795,10 +808,13 @@
     // TODO(jensj): We currently save (almost the same) uri twice.
     Uri fileUri = readUriReference();
 
+    Set<String> problemsAsJson = readSetOfStrings();
+
     if (shouldWriteData) {
       library.isExternal = isExternal;
       library.name = name;
       library.fileUri = fileUri;
+      library.problemsAsJson = problemsAsJson;
     }
 
     assert(() {
diff --git a/pkg/kernel/lib/binary/ast_to_binary.dart b/pkg/kernel/lib/binary/ast_to_binary.dart
index 2e5bb5d..2f3f33c 100644
--- a/pkg/kernel/lib/binary/ast_to_binary.dart
+++ b/pkg/kernel/lib/binary/ast_to_binary.dart
@@ -526,6 +526,7 @@
     final componentOffset = getBufferOffset();
     writeUInt32(Tag.ComponentFile);
     writeUInt32(Tag.BinaryFormatVersion);
+    writeSetOfStrings(component.problemsAsJson);
     indexLinkTable(component);
     _collectMetadata(component);
     if (_metadataSubsections != null) {
@@ -547,6 +548,15 @@
     _flush();
   }
 
+  void writeSetOfStrings(Set<String> strings) {
+    writeUInt30(strings.length);
+    for (String s in strings) {
+      // This is slow, but we expect there to in general be no problems. If this
+      // turns out to be wrong we can optimize it as we do URLs for instance.
+      writeByteList(utf8.encoder.convert(s));
+    }
+  }
+
   /// Collect non-empty metadata repositories associated with the component.
   void _collectMetadata(Component component) {
     component.metadata.forEach((tag, repository) {
@@ -886,6 +896,7 @@
     writeNonNullCanonicalNameReference(getCanonicalNameOfLibrary(node));
     writeStringReference(node.name ?? '');
     writeUriReference(node.fileUri);
+    writeSetOfStrings(node.problemsAsJson);
     enterScope(memberScope: true);
     writeAnnotationList(node.annotations);
     writeLibraryDependencies(node);
diff --git a/pkg/kernel/lib/binary/tag.dart b/pkg/kernel/lib/binary/tag.dart
index 6a34a73..6c3db78 100644
--- a/pkg/kernel/lib/binary/tag.dart
+++ b/pkg/kernel/lib/binary/tag.dart
@@ -137,7 +137,7 @@
   /// Internal version of kernel binary format.
   /// Bump it when making incompatible changes in kernel binaries.
   /// Keep in sync with runtime/vm/kernel_binary.h, pkg/kernel/binary.md.
-  static const int BinaryFormatVersion = 16;
+  static const int BinaryFormatVersion = 17;
 }
 
 abstract class ConstantTag {
diff --git a/pkg/kernel/problems.md b/pkg/kernel/problems.md
new file mode 100644
index 0000000..d9f2ee6
--- /dev/null
+++ b/pkg/kernel/problems.md
@@ -0,0 +1,18 @@
+<!--
+Copyright (c) 2019, the Dart project authors.  Please see the AUTHORS file
+for details. All rights reserved. Use of this source code is governed by a
+BSD-style license that can be found in the LICENSE file.
+-->
+
+This file describes the format of the `problemsAsJson` strings in Dart Kernel.
+
+Each string in the list is a json object consisting of these keys and values:
+
+`ansiFormatted`: A list of strings the contain ansi formatted (for instance with
+colors) problem-texts as reported by the compiler.
+`plainTextFormatted`: A list of strings that contain formatted plaintext
+problem-texts as reported by the compiler.
+
+These values are subject to change, but this file will be updated along with any
+such changes. On the code-side these are defined in
+`package:front_end/src/fasta/fasta_codes.dart`.
diff --git a/runtime/vm/compiler/frontend/kernel_translation_helper.cc b/runtime/vm/compiler/frontend/kernel_translation_helper.cc
index b6a2164..082fd39 100644
--- a/runtime/vm/compiler/frontend/kernel_translation_helper.cc
+++ b/runtime/vm/compiler/frontend/kernel_translation_helper.cc
@@ -1257,6 +1257,14 @@
       helper_->set_current_script_id(source_uri_index_);
       if (++next_read_ == field) return;
       /* Falls through */
+    case kProblemsAsJson: {
+      intptr_t length = helper_->ReadUInt();  // read length of table.
+      for (intptr_t i = 0; i < length; ++i) {
+        helper_->SkipBytes(helper_->ReadUInt());  // read strings.
+      }
+      if (++next_read_ == field) return;
+      /* Falls through */
+    }
     case kAnnotations:
       helper_->SkipListOfExpressions();  // read annotations.
       if (++next_read_ == field) return;
diff --git a/runtime/vm/compiler/frontend/kernel_translation_helper.h b/runtime/vm/compiler/frontend/kernel_translation_helper.h
index 3a184a1..46af4b6 100644
--- a/runtime/vm/compiler/frontend/kernel_translation_helper.h
+++ b/runtime/vm/compiler/frontend/kernel_translation_helper.h
@@ -699,6 +699,7 @@
     kCanonicalName,
     kName,
     kSourceUriIndex,
+    kProblemsAsJson,
     kAnnotations,
     kDependencies,
     kAdditionalExports,
diff --git a/runtime/vm/kernel_binary.cc b/runtime/vm/kernel_binary.cc
index 5440ddf..2dd239e 100644
--- a/runtime/vm/kernel_binary.cc
+++ b/runtime/vm/kernel_binary.cc
@@ -38,10 +38,11 @@
     "Invalid kernel binary: Indicated size is invalid";
 
 Program* Program::ReadFrom(Reader* reader, const char** error) {
-  if (reader->size() < 59) {
+  if (reader->size() < 60) {
     // A kernel file currently contains at least the following:
     //   * Magic number (32)
     //   * Kernel version (32)
+    //   * List of problems (8)
     //   * Length of source map (32)
     //   * Length of canonical name table (8)
     //   * Metadata length (32)
@@ -49,7 +50,7 @@
     //   * Length of constant table (8)
     //   * Component index (10 * 32)
     //
-    // so is at least 59 bytes.
+    // so is at least 60 bytes.
     // (Technically it will also contain an empty entry in both source map and
     // string table, taking up another 8 bytes.)
     if (error != nullptr) {
diff --git a/runtime/vm/kernel_binary.h b/runtime/vm/kernel_binary.h
index 4710aad..2e50142 100644
--- a/runtime/vm/kernel_binary.h
+++ b/runtime/vm/kernel_binary.h
@@ -17,7 +17,7 @@
 // package:kernel/binary.md.
 
 static const uint32_t kMagicProgramFile = 0x90ABCDEFu;
-static const uint32_t kBinaryFormatVersion = 16;
+static const uint32_t kBinaryFormatVersion = 17;
 
 // Keep in sync with package:kernel/lib/binary/tag.dart
 #define KERNEL_TAG_LIST(V)                                                     \
diff --git a/runtime/vm/kernel_loader.cc b/runtime/vm/kernel_loader.cc
index 43a4dbe..05bf407 100644
--- a/runtime/vm/kernel_loader.cc
+++ b/runtime/vm/kernel_loader.cc
@@ -621,6 +621,7 @@
 
   LongJumpScope jump;
   if (setjmp(*jump.Set()) == 0) {
+    // Note that `problemsAsJson` on Component is implicitly skipped.
     const intptr_t length = program_->library_count();
     Object& last_library = Library::Handle(Z);
     for (intptr_t i = 0; i < length; i++) {
