diff --git a/arch/core/core-common/api/2.2.0-beta01.txt b/arch/core/core-common/api/2.2.0-beta01.txt
new file mode 100644
index 0000000..43568b1
--- /dev/null
+++ b/arch/core/core-common/api/2.2.0-beta01.txt
@@ -0,0 +1,9 @@
+// Signature format: 4.0
+package androidx.arch.core.util {
+
+  public interface Function<I, O> {
+    method public O! apply(I!);
+  }
+
+}
+
diff --git a/arch/core/core-common/api/public_plus_experimental_2.2.0-beta01.txt b/arch/core/core-common/api/public_plus_experimental_2.2.0-beta01.txt
new file mode 100644
index 0000000..43568b1
--- /dev/null
+++ b/arch/core/core-common/api/public_plus_experimental_2.2.0-beta01.txt
@@ -0,0 +1,9 @@
+// Signature format: 4.0
+package androidx.arch.core.util {
+
+  public interface Function<I, O> {
+    method public O! apply(I!);
+  }
+
+}
+
diff --git a/arch/core/core-common/api/restricted_2.2.0-beta01.txt b/arch/core/core-common/api/restricted_2.2.0-beta01.txt
new file mode 100644
index 0000000..4fbc435
--- /dev/null
+++ b/arch/core/core-common/api/restricted_2.2.0-beta01.txt
@@ -0,0 +1,41 @@
+// Signature format: 4.0
+package androidx.arch.core.internal {
+
+  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public class FastSafeIterableMap<K, V> extends androidx.arch.core.internal.SafeIterableMap<K,V> {
+    ctor public FastSafeIterableMap();
+    method public java.util.Map.Entry<K!,V!>? ceil(K!);
+    method public boolean contains(K!);
+  }
+
+  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public class SafeIterableMap<K, V> implements java.lang.Iterable<java.util.Map.Entry<K,V>> {
+    ctor public SafeIterableMap();
+    method public java.util.Iterator<java.util.Map.Entry<K!,V!>!> descendingIterator();
+    method public java.util.Map.Entry<K!,V!>? eldest();
+    method protected androidx.arch.core.internal.SafeIterableMap.Entry<K!,V!>? get(K!);
+    method public java.util.Iterator<java.util.Map.Entry<K!,V!>!> iterator();
+    method public androidx.arch.core.internal.SafeIterableMap.IteratorWithAdditions iteratorWithAdditions();
+    method public java.util.Map.Entry<K!,V!>? newest();
+    method public V! putIfAbsent(K, V);
+    method public V! remove(K);
+    method public int size();
+  }
+
+  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public class SafeIterableMap.IteratorWithAdditions extends androidx.arch.core.internal.SafeIterableMap.SupportRemove<K,V> implements java.util.Iterator<java.util.Map.Entry<K,V>> {
+    method public boolean hasNext();
+    method public java.util.Map.Entry<K!,V!>! next();
+  }
+
+  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public abstract static class SafeIterableMap.SupportRemove<K, V> {
+    ctor public SafeIterableMap.SupportRemove();
+  }
+
+}
+
+package androidx.arch.core.util {
+
+  public interface Function<I, O> {
+    method public O! apply(I!);
+  }
+
+}
+
diff --git a/arch/core/core-runtime/api/2.2.0-beta01.txt b/arch/core/core-runtime/api/2.2.0-beta01.txt
new file mode 100644
index 0000000..e6f50d0
--- /dev/null
+++ b/arch/core/core-runtime/api/2.2.0-beta01.txt
@@ -0,0 +1 @@
+// Signature format: 4.0
diff --git a/arch/core/core-runtime/api/public_plus_experimental_2.2.0-beta01.txt b/arch/core/core-runtime/api/public_plus_experimental_2.2.0-beta01.txt
new file mode 100644
index 0000000..e6f50d0
--- /dev/null
+++ b/arch/core/core-runtime/api/public_plus_experimental_2.2.0-beta01.txt
@@ -0,0 +1 @@
+// Signature format: 4.0
diff --git a/arch/core/core-runtime/api/res-2.2.0-beta01.txt b/arch/core/core-runtime/api/res-2.2.0-beta01.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/arch/core/core-runtime/api/res-2.2.0-beta01.txt
diff --git a/arch/core/core-runtime/api/restricted_2.2.0-beta01.txt b/arch/core/core-runtime/api/restricted_2.2.0-beta01.txt
new file mode 100644
index 0000000..9958884
--- /dev/null
+++ b/arch/core/core-runtime/api/restricted_2.2.0-beta01.txt
@@ -0,0 +1,30 @@
+// Signature format: 4.0
+package androidx.arch.core.executor {
+
+  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public class ArchTaskExecutor extends androidx.arch.core.executor.TaskExecutor {
+    method public void executeOnDiskIO(Runnable);
+    method public static java.util.concurrent.Executor getIOThreadExecutor();
+    method public static androidx.arch.core.executor.ArchTaskExecutor getInstance();
+    method public static java.util.concurrent.Executor getMainThreadExecutor();
+    method public boolean isMainThread();
+    method public void postToMainThread(Runnable);
+    method public void setDelegate(androidx.arch.core.executor.TaskExecutor?);
+  }
+
+  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public class DefaultTaskExecutor extends androidx.arch.core.executor.TaskExecutor {
+    ctor public DefaultTaskExecutor();
+    method public void executeOnDiskIO(Runnable);
+    method public boolean isMainThread();
+    method public void postToMainThread(Runnable);
+  }
+
+  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public abstract class TaskExecutor {
+    ctor public TaskExecutor();
+    method public abstract void executeOnDiskIO(Runnable);
+    method public void executeOnMainThread(Runnable);
+    method public abstract boolean isMainThread();
+    method public abstract void postToMainThread(Runnable);
+  }
+
+}
+
diff --git a/arch/core/core-testing/api/2.2.0-beta01.txt b/arch/core/core-testing/api/2.2.0-beta01.txt
new file mode 100644
index 0000000..0303b8a
--- /dev/null
+++ b/arch/core/core-testing/api/2.2.0-beta01.txt
@@ -0,0 +1,16 @@
+// Signature format: 4.0
+package androidx.arch.core.executor.testing {
+
+  public class CountingTaskExecutorRule extends org.junit.rules.TestWatcher {
+    ctor public CountingTaskExecutorRule();
+    method public void drainTasks(int, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException, java.util.concurrent.TimeoutException;
+    method public boolean isIdle();
+    method protected void onIdle();
+  }
+
+  public class InstantTaskExecutorRule extends org.junit.rules.TestWatcher {
+    ctor public InstantTaskExecutorRule();
+  }
+
+}
+
diff --git a/arch/core/core-testing/api/public_plus_experimental_2.2.0-beta01.txt b/arch/core/core-testing/api/public_plus_experimental_2.2.0-beta01.txt
new file mode 100644
index 0000000..0303b8a
--- /dev/null
+++ b/arch/core/core-testing/api/public_plus_experimental_2.2.0-beta01.txt
@@ -0,0 +1,16 @@
+// Signature format: 4.0
+package androidx.arch.core.executor.testing {
+
+  public class CountingTaskExecutorRule extends org.junit.rules.TestWatcher {
+    ctor public CountingTaskExecutorRule();
+    method public void drainTasks(int, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException, java.util.concurrent.TimeoutException;
+    method public boolean isIdle();
+    method protected void onIdle();
+  }
+
+  public class InstantTaskExecutorRule extends org.junit.rules.TestWatcher {
+    ctor public InstantTaskExecutorRule();
+  }
+
+}
+
diff --git a/arch/core/core-testing/api/res-2.2.0-beta01.txt b/arch/core/core-testing/api/res-2.2.0-beta01.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/arch/core/core-testing/api/res-2.2.0-beta01.txt
diff --git a/arch/core/core-testing/api/restricted_2.2.0-beta01.txt b/arch/core/core-testing/api/restricted_2.2.0-beta01.txt
new file mode 100644
index 0000000..8113a1d
--- /dev/null
+++ b/arch/core/core-testing/api/restricted_2.2.0-beta01.txt
@@ -0,0 +1,35 @@
+// Signature format: 4.0
+package androidx.arch.core.executor {
+
+  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public class JunitTaskExecutorRule implements org.junit.rules.TestRule {
+    ctor public JunitTaskExecutorRule(int, boolean);
+    method public org.junit.runners.model.Statement apply(org.junit.runners.model.Statement, org.junit.runner.Description);
+    method public void drainTasks(int) throws java.lang.InterruptedException;
+    method public androidx.arch.core.executor.TaskExecutor getTaskExecutor();
+  }
+
+  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public class TaskExecutorWithFakeMainThread extends androidx.arch.core.executor.TaskExecutor {
+    ctor public TaskExecutorWithFakeMainThread(int);
+    method public void drainTasks(int) throws java.lang.InterruptedException;
+    method public void executeOnDiskIO(Runnable);
+    method public boolean isMainThread();
+    method public void postToMainThread(Runnable);
+  }
+
+}
+
+package androidx.arch.core.executor.testing {
+
+  public class CountingTaskExecutorRule extends org.junit.rules.TestWatcher {
+    ctor public CountingTaskExecutorRule();
+    method public void drainTasks(int, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException, java.util.concurrent.TimeoutException;
+    method public boolean isIdle();
+    method protected void onIdle();
+  }
+
+  public class InstantTaskExecutorRule extends org.junit.rules.TestWatcher {
+    ctor public InstantTaskExecutorRule();
+  }
+
+}
+
diff --git a/libraryversions.toml b/libraryversions.toml
index 9160d928..54d94c2 100644
--- a/libraryversions.toml
+++ b/libraryversions.toml
@@ -6,7 +6,7 @@
 APPACTIONS_INTERACTION = "1.0.0-alpha01"
 APPCOMPAT = "1.7.0-alpha02"
 APPSEARCH = "1.1.0-alpha03"
-ARCH_CORE = "2.2.0-alpha02"
+ARCH_CORE = "2.2.0-beta01"
 ASYNCLAYOUTINFLATER = "1.1.0-alpha02"
 AUTOFILL = "1.2.0-beta02"
 BENCHMARK = "1.2.0-alpha10"
