diff --git a/pkgs/source_maps/.travis.yml b/pkgs/source_maps/.travis.yml
index 25aeabe..a49fc6f 100644
--- a/pkgs/source_maps/.travis.yml
+++ b/pkgs/source_maps/.travis.yml
@@ -2,8 +2,6 @@
 
 dart:
   - dev
-  - stable
-
 dart_task:
   - test: -p vm,chrome
   - dartanalyzer
diff --git a/pkgs/source_maps/CHANGELOG.md b/pkgs/source_maps/CHANGELOG.md
index 8ef25be..9a0879c 100644
--- a/pkgs/source_maps/CHANGELOG.md
+++ b/pkgs/source_maps/CHANGELOG.md
@@ -9,6 +9,7 @@
 ## 0.10.4
 * Implement `highlight` in `SourceMapFileSpan`.
 * Require version `^1.3.0` of `source_span`.
+* Require version 2.0.0 of the Dart SDK.
 
 ## 0.10.3
  * Add `addMapping` and `containsMapping` members to `MappingBundle`.
diff --git a/pkgs/source_maps/lib/builder.dart b/pkgs/source_maps/lib/builder.dart
index cdba2d2..0769d50 100644
--- a/pkgs/source_maps/lib/builder.dart
+++ b/pkgs/source_maps/lib/builder.dart
@@ -55,7 +55,7 @@
   }
 
   /// Encodes all mappings added to this builder as a json string.
-  String toJson(String fileUrl) => JSON.encode(build(fileUrl));
+  String toJson(String fileUrl) => jsonEncode(build(fileUrl));
 }
 
 /// An entry in the source map builder.
diff --git a/pkgs/source_maps/lib/parser.dart b/pkgs/source_maps/lib/parser.dart
index e46b783..a500b13 100644
--- a/pkgs/source_maps/lib/parser.dart
+++ b/pkgs/source_maps/lib/parser.dart
@@ -24,7 +24,7 @@
 // TODO(tjblasi): Ignore the first line of [jsonMap] if the JSON safety string
 // `)]}'` begins the string representation of the map.
 Mapping parse(String jsonMap, {Map<String, Map> otherMaps, mapUrl}) =>
-    parseJson(JSON.decode(jsonMap), otherMaps: otherMaps, mapUrl: mapUrl);
+    parseJson(jsonDecode(jsonMap), otherMaps: otherMaps, mapUrl: mapUrl);
 
 /// Parses a source map or source map bundle directly from a json string.
 ///
@@ -32,7 +32,7 @@
 /// the source map file itself. If it's passed, any URLs in the source
 /// map will be interpreted as relative to this URL when generating spans.
 Mapping parseExtended(String jsonMap, {Map<String, Map> otherMaps, mapUrl}) =>
-    parseJsonExtended(JSON.decode(jsonMap),
+    parseJsonExtended(jsonDecode(jsonMap),
         otherMaps: otherMaps, mapUrl: mapUrl);
 
 /// Parses a source map or source map bundle.
diff --git a/pkgs/source_maps/pubspec.yaml b/pkgs/source_maps/pubspec.yaml
index 7bf7bcd..8598aef 100644
--- a/pkgs/source_maps/pubspec.yaml
+++ b/pkgs/source_maps/pubspec.yaml
@@ -6,6 +6,6 @@
 dependencies:
   source_span: ^1.3.0
 environment:
-  sdk: '>=1.8.0 <2.0.0'
+  sdk: '>=2.0.0-dev.17.0 <2.0.0'
 dev_dependencies:
   test: '>=0.12.0 <0.13.0'
diff --git a/pkgs/source_maps/test/builder_test.dart b/pkgs/source_maps/test/builder_test.dart
index 7c27e4e..1e2efdd 100644
--- a/pkgs/source_maps/test/builder_test.dart
+++ b/pkgs/source_maps/test/builder_test.dart
@@ -27,6 +27,6 @@
           ..addLocation(inputVar2.start, outputVar2.start, 'longVar2')
           ..addLocation(inputExpr.start, outputExpr.start, null))
         .toJson(output.url.toString());
-    expect(str, JSON.encode(EXPECTED_MAP));
+    expect(str, jsonEncode(EXPECTED_MAP));
   });
 }
diff --git a/pkgs/source_maps/test/parser_test.dart b/pkgs/source_maps/test/parser_test.dart
index 7896341..398a40e 100644
--- a/pkgs/source_maps/test/parser_test.dart
+++ b/pkgs/source_maps/test/parser_test.dart
@@ -80,7 +80,7 @@
   });
 
   test('parse + json', () {
-    var mapping = parse(JSON.encode(EXPECTED_MAP));
+    var mapping = parse(jsonEncode(EXPECTED_MAP));
     check(outputVar1, mapping, inputVar1, false);
     check(outputVar2, mapping, inputVar2, false);
     check(outputFunction, mapping, inputFunction, false);
@@ -96,7 +96,7 @@
   });
 
   test('parse with no source location', () {
-    SingleMapping map = parse(JSON.encode(MAP_WITH_NO_SOURCE_LOCATION));
+    SingleMapping map = parse(jsonEncode(MAP_WITH_NO_SOURCE_LOCATION));
     expect(map.lines.length, 1);
     expect(map.lines.first.entries.length, 1);
     TargetEntry entry = map.lines.first.entries.first;
@@ -109,7 +109,7 @@
   });
 
   test('parse with source location and no name', () {
-    SingleMapping map = parse(JSON.encode(MAP_WITH_SOURCE_LOCATION));
+    SingleMapping map = parse(jsonEncode(MAP_WITH_SOURCE_LOCATION));
     expect(map.lines.length, 1);
     expect(map.lines.first.entries.length, 1);
     TargetEntry entry = map.lines.first.entries.first;
@@ -122,7 +122,7 @@
   });
 
   test('parse with source location and name', () {
-    SingleMapping map = parse(JSON.encode(MAP_WITH_SOURCE_LOCATION_AND_NAME));
+    SingleMapping map = parse(jsonEncode(MAP_WITH_SOURCE_LOCATION_AND_NAME));
     expect(map.lines.length, 1);
     expect(map.lines.first.entries.length, 1);
     TargetEntry entry = map.lines.first.entries.first;
@@ -251,7 +251,7 @@
     });
 
     test('parseExtended', () {
-      var mapping = parseExtended(JSON.encode(SOURCE_MAP_BUNDLE),
+      var mapping = parseExtended(jsonEncode(SOURCE_MAP_BUNDLE),
           mapUrl: "file:///path/to/map");
 
       expect(mapping.spanFor(0, 0, uri: "output.dart").sourceUrl,
diff --git a/pkgs/source_maps/test/printer_test.dart b/pkgs/source_maps/test/printer_test.dart
index 3fd768d..32db695 100644
--- a/pkgs/source_maps/test/printer_test.dart
+++ b/pkgs/source_maps/test/printer_test.dart
@@ -24,7 +24,7 @@
       ..mark(inputExpr)
       ..add('x + y;\n');
     expect(printer.text, OUTPUT);
-    expect(printer.map, JSON.encode(EXPECTED_MAP));
+    expect(printer.map, jsonEncode(EXPECTED_MAP));
   });
 
   test('printer projecting marks', () {
@@ -93,7 +93,7 @@
         ..add('x + y;\n', span: inputExpr)
         ..build('output.dart');
       expect(printer.text, OUTPUT);
-      expect(printer.map, JSON.encode(EXPECTED_MAP));
+      expect(printer.map, jsonEncode(EXPECTED_MAP));
     });
 
     test('nested use', () {
@@ -106,7 +106,7 @@
         ..add('x + y;\n', span: inputExpr)
         ..build('output.dart');
       expect(printer.text, OUTPUT);
-      expect(printer.map, JSON.encode(EXPECTED_MAP));
+      expect(printer.map, jsonEncode(EXPECTED_MAP));
     });
 
     test('add indentation', () {
