diff --git a/packages/google_sign_in/google_sign_in/CHANGELOG.md b/packages/google_sign_in/google_sign_in/CHANGELOG.md
index 8ac07ae..1f0be2e 100644
--- a/packages/google_sign_in/google_sign_in/CHANGELOG.md
+++ b/packages/google_sign_in/google_sign_in/CHANGELOG.md
@@ -1,4 +1,6 @@
-## NEXT
+## 5.1.0
+
+* Add reAuthenticate option to signInSilently to allow re-authentication to be requested
 
 * Updated Android lint settings.
 
diff --git a/packages/google_sign_in/google_sign_in/lib/google_sign_in.dart b/packages/google_sign_in/google_sign_in/lib/google_sign_in.dart
index b45b09c..04d60fb 100644
--- a/packages/google_sign_in/google_sign_in/lib/google_sign_in.dart
+++ b/packages/google_sign_in/google_sign_in/lib/google_sign_in.dart
@@ -314,11 +314,13 @@
   /// successful sign in or `null` if there is no previously authenticated user.
   /// Use [signIn] method to trigger interactive sign in process.
   ///
-  /// Authentication process is triggered only if there is no currently signed in
+  /// Authentication is triggered if there is no currently signed in
   /// user (that is when `currentUser == null`), otherwise this method returns
   /// a Future which resolves to the same user instance.
   ///
-  /// Re-authentication can be triggered only after [signOut] or [disconnect].
+  /// Re-authentication can be triggered after [signOut] or [disconnect]. It can
+  /// also be triggered by setting [reAuthenticate] to `true` if a new ID token
+  /// is required.
   ///
   /// When [suppressErrors] is set to `false` and an error occurred during sign in
   /// returned Future completes with [PlatformException] whose `code` can be
@@ -327,10 +329,11 @@
   /// (when an unknown error occurred).
   Future<GoogleSignInAccount?> signInSilently({
     bool suppressErrors = true,
+    bool reAuthenticate = false,
   }) async {
     try {
       return await _addMethodCall(GoogleSignInPlatform.instance.signInSilently,
-          canSkipCall: true);
+          canSkipCall: !reAuthenticate);
     } catch (_) {
       if (suppressErrors) {
         return null;
diff --git a/packages/google_sign_in/google_sign_in/pubspec.yaml b/packages/google_sign_in/google_sign_in/pubspec.yaml
index 7e3f221..7900937 100644
--- a/packages/google_sign_in/google_sign_in/pubspec.yaml
+++ b/packages/google_sign_in/google_sign_in/pubspec.yaml
@@ -3,7 +3,7 @@
   for signing in with a Google account on Android and iOS.
 repository: https://github.com/flutter/plugins/tree/master/packages/google_sign_in/google_sign_in
 issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+google_sign_in%22
-version: 5.0.7
+version: 5.1.0
 
 environment:
   sdk: ">=2.12.0 <3.0.0"
diff --git a/packages/google_sign_in/google_sign_in/test/google_sign_in_test.dart b/packages/google_sign_in/google_sign_in/test/google_sign_in_test.dart
index f642bcd..444edc4 100644
--- a/packages/google_sign_in/google_sign_in/test/google_sign_in_test.dart
+++ b/packages/google_sign_in/google_sign_in/test/google_sign_in_test.dart
@@ -281,6 +281,22 @@
           throwsA(isInstanceOf<PlatformException>()));
     });
 
+    test('signInSilently allows re-authentication to be requested', () async {
+      await googleSignIn.signInSilently();
+      expect(googleSignIn.currentUser, isNotNull);
+
+      await googleSignIn.signInSilently(reAuthenticate: true);
+
+      expect(
+        log,
+        <Matcher>[
+          _isSignInMethodCall(),
+          isMethodCall('signInSilently', arguments: null),
+          isMethodCall('signInSilently', arguments: null),
+        ],
+      );
+    });
+
     test('can sign in after init failed before', () async {
       int initCount = 0;
       channel.setMockMethodCallHandler((MethodCall methodCall) {
