diff --git a/packages/go_router/CHANGELOG.md b/packages/go_router/CHANGELOG.md
index 7f59c92..3e73bd1 100644
--- a/packages/go_router/CHANGELOG.md
+++ b/packages/go_router/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 4.2.7
+
+- Update README
+
 ## 4.2.6
 
 - Fixes rendering issues in the README.
diff --git a/packages/go_router/README.md b/packages/go_router/README.md
index af47513..edd832b 100644
--- a/packages/go_router/README.md
+++ b/packages/go_router/README.md
@@ -1,36 +1,49 @@
-# go_router, A Declarative Routing Package for Flutter
+# go_router
 
-This package builds on top of the Flutter framework's Router API and provides
-convenient url-based APIs to navigate between different screens. You can
-define your own url patterns, navigating to different url, handle deep and
-dynamic linking, and a number of other navigation-related scenarios.
+A Declarative Routing Package for Flutter.
+
+This package uses the Flutter framework's Router API to provide a
+convenient, url-based API for navigating between different screens. You can
+define URL patterns, navigate using a URL, handle deep links,
+and a number of other navigation-related scenarios.
 
 ## Getting Started
 
 Follow the [package install instructions](https://pub.dev/packages/go_router/install),
-and you can start using go_router in your code:
+and you can start using go_router in your app:
 
 ```dart
+import 'package:flutter/material.dart';
+import 'package:go_router/go_router.dart';
+
+void main() => runApp(App());
+
 class App extends StatelessWidget {
   App({Key? key}) : super(key: key);
 
   @override
-  Widget build(BuildContext context) => MaterialApp.router(
-        routeInformationProvider: _router.routeInformationProvider,
-        routeInformationParser: _router.routeInformationParser,
-        routerDelegate: _router.routerDelegate,
-        title: 'GoRouter Example',
-      );
+  Widget build(BuildContext context) {
+    return MaterialApp.router(
+      routeInformationProvider: _router.routeInformationProvider,
+      routeInformationParser: _router.routeInformationParser,
+      routerDelegate: _router.routerDelegate,
+      title: 'GoRouter Example',
+    );
+  }
 
   final GoRouter _router = GoRouter(
     routes: <GoRoute>[
       GoRoute(
         path: '/',
-        builder: (BuildContext context, GoRouterState state) => const Page1Screen(),
+        builder: (BuildContext context, GoRouterState state) {
+          return ScreenA();
+        },
       ),
       GoRoute(
-        path: '/page2',
-        builder: (BuildContext context, GoRouterState state) => const Page2Screen(),
+        path: '/b',
+        builder: (BuildContext context, GoRouterState state) {
+          return ScreenB();
+        },
       ),
     ],
   );
@@ -39,7 +52,7 @@
 
 ## Define Routes
 
-go_router is governed by a set of routes which are specify as part of the
+go_router is governed by a set of routes which are specified as part of the
 [GoRouter](https://pub.dev/documentation/go_router/latest/go_router/GoRouter-class.html)
 constructor:
 
@@ -58,15 +71,17 @@
 );
 ```
 
-It defined two routes, `/` and `/page2`. Each route path will be matched against
-the location to which the user is navigating. The path will be matched in a
-case-insensitive way, although the case for parameters will be preserved. If
-there are multiple route matches, the <b>first</b> match in the list takes priority
-over the others.
+In the above snippet, two routes are defined, `/` and `/page2`.
+When the URL changes, it is matched against each route path.
+The path is matched in a case-insensitive way, but the case for 
+parameters is preserved. If there are multiple route matches, 
+the **first match** in the list takes priority over the others.
 
-In addition to the path, each route will typically have a [builder](https://pub.dev/documentation/go_router/latest/go_router/GoRoute/builder.html)
-function that is responsible for building the `Widget` that is to take up the
-entire screen of the app. The default transition is used between pages
+The [builder](https://pub.dev/documentation/go_router/latest/go_router/GoRoute/builder.html)
+is responsible for building the `Widget` to display on screen.
+Alternatively, you can use `pageBuilder` to customize the transition 
+animation when that route becomes active.
+The default transition is used between pages
 depending on the app at the top of its widget tree, e.g. the use of `MaterialApp`
 will cause go_router to use the `MaterialPage` transitions. Consider using
 [pageBuilder](https://pub.dev/documentation/go_router/latest/go_router/GoRoute/pageBuilder.html)
@@ -74,11 +89,15 @@
 
 ## Initalization
 
-Once a [GoRouter](https://pub.dev/documentation/go_router/latest/go_router/GoRouter-class.html)
-object is created, it can be used to initialize `MaterialApp` or `CupertinoApp`.
+Create a [GoRouter](https://pub.dev/documentation/go_router/latest/go_router/GoRouter-class.html)
+object and initialize your `MaterialApp` or `CupertinoApp`:
 
 ```dart
-final GoRouter _router = GoRouter(..);
+final GoRouter _router = GoRouter(
+  routes: <GoRoute>[
+     // ...
+  ]
+);
 
 MaterialApp.router(
   routeInformationProvider: _router.routeInformationProvider,
@@ -108,16 +127,15 @@
 onTap: () => GoRouter.of(context).go('/page2')
 ```
 
-go_router also provides a simplified means of navigation using Dart extension
+go_router also provides a more concise way to navigate using Dart extension
 methods:
 
 ```dart
 onTap: () => context.go('/page2')
 ```
 
-<br>
-
-### Still not sure how to proceed? See [examples](https://github.com/flutter/packages/tree/main/packages/go_router/example) for complete runnable examples or visit [API documentation](https://pub.dev/documentation/go_router/latest/go_router/go_router-library.html)
+### Still not sure how to proceed?
+See [examples](https://github.com/flutter/packages/tree/main/packages/go_router/example) for complete runnable examples or visit [API documentation](https://pub.dev/documentation/go_router/latest/go_router/go_router-library.html)
 
 
 ## Migration guides
diff --git a/packages/go_router/pubspec.yaml b/packages/go_router/pubspec.yaml
index bb20820..6f6a2db 100644
--- a/packages/go_router/pubspec.yaml
+++ b/packages/go_router/pubspec.yaml
@@ -1,7 +1,7 @@
 name: go_router
 description: A declarative router for Flutter based on Navigation 2 supporting
   deep linking, data-driven routes and more
-version: 4.2.6
+version: 4.2.7
 repository: https://github.com/flutter/packages/tree/main/packages/go_router
 issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+go_router%22
 
