diff --git a/CHANGELOG.md b/CHANGELOG.md
index 8b36d87..353e3b4 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 0.10.0
+
+* Change type of `stackTrace` from `StackTrace` to `Object`.
+
 ## 0.9.3
 
 * Added optional `LogRecord.zone` field.
diff --git a/lib/logging.dart b/lib/logging.dart
index 42344e8..9eebe3a 100644
--- a/lib/logging.dart
+++ b/lib/logging.dart
@@ -147,7 +147,7 @@
    */
   void log(Level logLevel,
            message,
-           [Object error, StackTrace stackTrace, Zone zone]) {
+           [Object error, Object stackTrace, Zone zone]) {
     if (isLoggable(logLevel)) {
       // If message is a Function, evaluate it.
       if (message is Function) message = message();
@@ -172,35 +172,35 @@
   }
 
   /** Log message at level [Level.FINEST]. */
-  void finest(message, [Object error, StackTrace stackTrace]) =>
+  void finest(message, [Object error, Object stackTrace]) =>
       log(Level.FINEST, message, error, stackTrace);
 
   /** Log message at level [Level.FINER]. */
-  void finer(message, [Object error, StackTrace stackTrace]) =>
+  void finer(message, [Object error, Object stackTrace]) =>
       log(Level.FINER, message, error, stackTrace);
 
   /** Log message at level [Level.FINE]. */
-  void fine(message, [Object error, StackTrace stackTrace]) =>
+  void fine(message, [Object error, Object stackTrace]) =>
       log(Level.FINE, message, error, stackTrace);
 
   /** Log message at level [Level.CONFIG]. */
-  void config(message, [Object error, StackTrace stackTrace]) =>
+  void config(message, [Object error, Object stackTrace]) =>
       log(Level.CONFIG, message, error, stackTrace);
 
   /** Log message at level [Level.INFO]. */
-  void info(message, [Object error, StackTrace stackTrace]) =>
+  void info(message, [Object error, Object stackTrace]) =>
       log(Level.INFO, message, error, stackTrace);
 
   /** Log message at level [Level.WARNING]. */
-  void warning(message, [Object error, StackTrace stackTrace]) =>
+  void warning(message, [Object error, Object stackTrace]) =>
       log(Level.WARNING, message, error, stackTrace);
 
   /** Log message at level [Level.SEVERE]. */
-  void severe(message, [Object error, StackTrace stackTrace]) =>
+  void severe(message, [Object error, Object stackTrace]) =>
       log(Level.SEVERE, message, error, stackTrace);
 
   /** Log message at level [Level.SHOUT]. */
-  void shout(message, [Object error, StackTrace stackTrace]) =>
+  void shout(message, [Object error, Object stackTrace]) =>
       log(Level.SHOUT, message, error, stackTrace);
 
   Stream<LogRecord> _getStream() {
@@ -322,7 +322,7 @@
   final Object error;
 
   /** Associated stackTrace (if any) when recording errors messages. */
-  final StackTrace stackTrace;
+  final Object stackTrace;
 
   /** Zone of the calling code which resulted in this LogRecord. */
   final Zone zone;
diff --git a/pubspec.yaml b/pubspec.yaml
index 3867be5..2e4c266 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -1,5 +1,5 @@
 name: logging
-version: 0.9.3
+version: 0.10.0
 author: Dart Team <misc@dartlang.org>
 description: >
   Provides APIs for debugging and error logging. This library introduces
