diff --git a/src/Session.js b/src/Session.js
index <HASH>..<HASH> 100644
--- a/src/Session.js
+++ b/src/Session.js
@@ -107,7 +107,7 @@ const Session = class Session {
     reduce() {
         if (this.withMutations) return this.state;
 
-        const prevState = this.state;
+        const prevState = this.state || {};
         const action = this.action;
 
         const nextState = this.models.reduce((_nextState, modelClass) => {
diff --git a/src/test/testSchema.js b/src/test/testSchema.js
index <HASH>..<HASH> 100644
--- a/src/test/testSchema.js
+++ b/src/test/testSchema.js
@@ -148,6 +148,11 @@ describe('Schema', () => {
             expect(genresDescriptor.set).to.be.a('function');
         });
 
+        it('calling reducer with undefined state doesn\'t throw', () => {
+            schema.register(Book, Author, Cover, Genre);
+            schema.reducer()(undefined, { type: '______init' });
+        });
+
         it('correctly gets the default state', () => {
             schema.register(Book, Author, Cover, Genre);
             const defaultState = schema.getDefaultState();
Fix regression in Session.reduce where a new state object was not created on Redux init action