diff --git a/README.md b/README.md
index 281c74e..4a4d18e 100644
--- a/README.md
+++ b/README.md
@@ -16,3 +16,4 @@
 * topaz/app/chat: 9f6c31d2ceb8353f229a9ef6b53ba2386ff31867
 * topaz/app/color: 5a023ccb054104846e3e913951bcc7dc277d2274
 * topaz/app/contacts: 80378fe470817750188707de29237282892a3142
+* topaz/app/image: 5e731a943a907cf960ecfbda1c391958f9093afa
diff --git a/app/image/BUILD.gn b/app/image/BUILD.gn
deleted file mode 100644
index 77223bb..0000000
--- a/app/image/BUILD.gn
+++ /dev/null
@@ -1,29 +0,0 @@
-# Copyright 2016 The Fuchsia Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-import("//topaz/runtime/flutter_runner/flutter_app.gni")
-
-flutter_app("image") {
-  main_dart = "lib/main.dart"
-
-  module_manifest = "manifest.json"
-
-  meta = [
-    {
-      path = rebase_path("meta/image.cmx")
-      dest = "image.cmx"
-    },
-  ]
-
-  sources = [
-    "src/models/image_model.dart",
-  ]
-
-  deps = [
-    "//third_party/dart-pkg/git/flutter/packages/flutter",
-    "//topaz/public/lib/app_driver/dart",
-    "//topaz/public/lib/app/dart",
-    "//topaz/public/lib/widgets/dart",
-  ]
-}
diff --git a/app/image/analysis_options.yaml b/app/image/analysis_options.yaml
deleted file mode 100644
index c7bbb17..0000000
--- a/app/image/analysis_options.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-# Copyright 2017 The Fuchsia Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-include: ../../tools/analysis_options.yaml
diff --git a/app/image/lib/main.dart b/app/image/lib/main.dart
deleted file mode 100644
index ead6123..0000000
--- a/app/image/lib/main.dart
+++ /dev/null
@@ -1,67 +0,0 @@
-// Copyright 2017 The Fuchsia Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-import 'dart:io';
-
-import 'package:flutter/material.dart';
-
-import 'package:lib.app_driver.dart/module_driver.dart';
-import 'package:lib.app.dart/logging.dart';
-import 'package:lib.widgets.dart/model.dart';
-
-import 'src/models/image_model.dart';
-
-ModuleDriver _driver;
-
-/// Main entry point to the image module.
-void main() {
-  setupLogger();
-
-  _driver = ModuleDriver()
-    ..start().then((_) {
-      log.fine('started image module');
-    }, onError: _handleError);
-
-  final model = ImageModel();
-
-  _driver.link.watch().listen(
-        model.onData,
-        onError: _handleError,
-      );
-
-  runApp(
-    MaterialApp(
-      home: ScopedModel<ImageModel>(
-        model: model,
-        child: Scaffold(
-          body: ScopedModelDescendant<ImageModel>(
-            builder: (_, __, ImageModel model) => new Stack(
-                  fit: StackFit.expand,
-                  children: <Widget>[
-                    const Placeholder(),
-                    model.imageUri != null
-                        ? model.imageUri.scheme.startsWith('http')
-                            ? new Image.network(
-                                model.imageUri.toString(),
-                                fit: BoxFit.cover,
-                                alignment: FractionalOffset.topCenter,
-                              )
-                            : new Image.file(
-                                new File(model.imageUri.toString()),
-                                fit: BoxFit.cover,
-                                alignment: FractionalOffset.topCenter,
-                              )
-                        : new Container(),
-                  ],
-                ),
-          ),
-        ),
-      ),
-    ),
-  );
-}
-
-void _handleError(Object error, StackTrace stackTrace) {
-  log.severe('An error ocurred', error, stackTrace);
-}
diff --git a/app/image/lib/src/models/image_model.dart b/app/image/lib/src/models/image_model.dart
deleted file mode 100644
index b70e91c..0000000
--- a/app/image/lib/src/models/image_model.dart
+++ /dev/null
@@ -1,41 +0,0 @@
-// Copyright 2018 The Fuchsia Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-import 'dart:convert' show json;
-
-import 'package:lib.app.dart/logging.dart';
-import 'package:lib.widgets.dart/model.dart';
-
-/// The model for the color module.
-class ImageModel extends Model {
-  /// Gets the image uri.
-  Uri get imageUri => _imageUri;
-  Uri _imageUri;
-
-  // TODO(vardhan): Deprecate 'image_url' in favour proper typing (eg.,
-  // http://schema.org/image).
-  void onData(String encoded) {
-    log.fine('JSON: $encoded');
-    // Expects Link to look something like this:
-    // { "image_url" : "http:///www.example.com/image.gif" } or
-    // { "image_url" : "/system/data/modules/image.gif" } or
-    // { "asset": "http:///www.example.com/image.gif" } or
-    // { "asset": { "contentUrl": "http:///www.example.com/image.gif" } }
-    final dynamic doc = json.decode(encoded);
-    if (doc is Map) {
-      if (doc['image_url'] is String) {
-        _imageUri = Uri.parse(doc['image_url']);
-        notifyListeners();
-      } else if (doc['asset'] is String) {
-        // schema.org/image: URL to a image
-        _imageUri = Uri.parse(doc['asset']);
-        notifyListeners();
-      } else if (doc['asset'] is Map && doc['contentUrl'] is String) {
-        // schema.org/image: ImageObject
-        _imageUri = Uri.parse(doc['asset']['contentUrl']);
-        notifyListeners();
-      }
-    }
-  }
-}
diff --git a/app/image/manifest.json b/app/image/manifest.json
deleted file mode 100644
index 31a018f..0000000
--- a/app/image/manifest.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
-    "binary": "image",
-    "suggestion_headline": "Show image",
-    "action": "com.google.fuchsia.play",
-    "parameters": [
-        {
-            "name": "asset",
-            "type": "http://schema.org/image"
-        }
-    ]
-}
diff --git a/app/image/meta/image.cmx b/app/image/meta/image.cmx
deleted file mode 100644
index 68d40e7..0000000
--- a/app/image/meta/image.cmx
+++ /dev/null
@@ -1,22 +0,0 @@
-{
-    "program": {
-        "data": "data/image"
-    },
-    "sandbox": {
-        "services": [
-            "fuchsia.cobalt.LoggerFactory",
-            "fuchsia.fonts.Provider",
-            "fuchsia.logger.LogSink",
-            "fuchsia.modular.Clipboard",
-            "fuchsia.modular.ContextWriter",
-            "fuchsia.modular.ModuleContext",
-            "fuchsia.netstack.Netstack",
-            "fuchsia.sys.Environment",
-            "fuchsia.ui.input.ImeService",
-            "fuchsia.ui.policy.Presenter",
-            "fuchsia.ui.scenic.Scenic",
-            "fuchsia.ui.viewsv1.ViewManager",
-            "fuchsia.wlan.service.Wlan"
-        ]
-    }
-}
diff --git a/app/image/pubspec.yaml b/app/image/pubspec.yaml
deleted file mode 100644
index 3a809f4..0000000
--- a/app/image/pubspec.yaml
+++ /dev/null
@@ -1,3 +0,0 @@
-# Copyright 2017 The Fuchsia Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
diff --git a/packages/prod/all b/packages/prod/all
index 2b5c450..a0edd90 100644
--- a/packages/prod/all
+++ b/packages/prod/all
@@ -19,7 +19,6 @@
         "topaz/packages/prod/flutter_aot_product",
         "topaz/packages/prod/flutter_jit_product",
         "topaz/packages/prod/google_auth_provider",
-        "topaz/packages/prod/image",
         "topaz/packages/prod/infinite_scroller",
         "topaz/packages/prod/latin-ime",
         "topaz/packages/prod/maxwell",
diff --git a/packages/prod/image b/packages/prod/image
deleted file mode 100644
index 3deb4dd..0000000
--- a/packages/prod/image
+++ /dev/null
@@ -1,5 +0,0 @@
-{
-    "packages": [
-        "//topaz/app/image"
-    ]
-}
