Tag Archives: Features

Google I/O 2023: What’s new in Jetpack

Posted by Amanda Alexander, Product Manager, Android

Android Jetpack is a key pillar of Modern Android Development. It is a suite of over 100 libraries, tools and guidance to help developers follow best practices, reduce boilerplate code, and write code that works consistently across Android versions and devices so that you can focus on building unique features for your app. The majority of apps on Google Play rely on Jetpack, in fact over 90% of the top 1000 apps use Jetpack.

Below we’ll cover highlights of recent updates in three major areas of Jetpack:

  • Architecture Libraries and Guidance
  • Performance Optimization of Applications
  • User Interface Libraries and Guidance

And then conclude with some additional key updates.


1. Architecture Libraries and Guidance

App architecture libraries and components ensure that apps are robust, testable, and maintainable.

Data Persistence

Most applications need to persist local state - whether it be caching results, managing local lists of user enter data, or powering data returned in the UI. Room is the recommended data persistence layer which provides an abstraction layer over SQLite, allowing for increased usability and safety over the platform.

In Room, we have added many brand-new features, such as the Upsert operation, which attempts to insert an entity when there is no uniqueness conflict or update the entity if there is a conflict, and support for using Kotlin value classes for KSP. These new features are available in Room 2.6-alpha with all library sources written in Kotlin and supports both the Java programming language and Kotlin code generation.

Managing tasks with WorkManager

The WorkManager library makes it easy to schedule deferrable, asynchronous tasks that must be run reliably for instance uploading backups or analytics. These APIs let you create a task and hand it off to WorkManager to run when the work constraints are met.

Now, WorkManager allows you to update a WorkRequest after you have already enqueued it. This is often necessary in larger apps that frequently change constraints or need to update their workers on the fly. As of WorkManager 2.8.0, the updateWork() API is the means of doing this without having to go through the process of manually canceling and enqueuing a new WorkRequest. This greatly simplifies the development process.

DataStore

The DataStore library is a robust data storage solution that addresses issues with SharedPreferences and provides a modern coroutines based API.

In DataStore 1.1 alpha we added a widely requested feature: multi-process support which allows you to access the DataStore from multiple processes while providing data consistency guarantees between them. Additional features include a new storage interface that enables the underlying storage mechanism for Datastore to be switched out (we have provided implementations for java.io and okio), and we have also added support for Kotlin Multiplatform.

Lifecycle management

Lifecycle-aware components perform actions in response to a change in the lifecycle status of another component, such as activities and fragments. These components help you produce better-organized, and often lighter-weight code, that is easier to maintain.

We released a stable version of Lifecycle 2.6.0 that includes more Compose integration. We added a new extension method on Flow, collectAsStateWithLifecycle(), that collects from flows and represents its latest value as Compose State in a lifecycle-aware manner. Additionally, a large number of classes are converted to Kotlin and still retain their binary compatibility with previous versions.

Predictive Back Gesture

moving image illustrating predictive back texture

In Android 13, we introduced a predictive back gesture for Android devices such as phones, large screens, and foldables. It is part of a multi-year release; when fully implemented, this feature will let users preview the destination or other result of a back gesture before fully completing it, allowing them to decide whether to continue or stay in the current view.

The Activity APIs for Predictive Back for Android are stable and we have updated the best practices for using the supported system back callbacks; BackHandler (for Compose), OnBackPressedCallback, or OnBackInvokedCallback. We are excited to see Google apps adopt Predictive Back including PlayStore, Calendar, News, and TV!

In the Activity 1.8 alpha releases, The OnBackPressedCallback class now contains new Predictive Back progress callbacks for handling the back gesture starting, progress throughout the gesture, and the back gesture being canceled in addition to the previous handleOnBackPressed() callback for when the back gesture is committed. We also added ComponentActivity.setUpEdgeToEdge() to easily set up the edge-to-edge display in a backward-compatible manner.

Activity updates for more consistent Photo Picker experience

The Android photo picker is a browsable interface that presents the user with their media library. In Activity 1.7.0, the Photo Picker activity contracts have been updated to contain an additional fallback that allows OEMs and system apps, such as Google Play services, to provide a consistent Photo Picker experience on a wider range of Android devices and API levels by implementing the fallback action. Read more in the Photo Picker Everywhere blog.

Incremental Data Fetching

The Paging library allows you to load and display small chunks of data to improve network and system resource consumption. App data can be loaded gradually and gracefully within RecyclerViews or Compose lazy lists.

In Paging Compose 1.0.0-alpha19, there is support for all lazy layouts including custom layouts provided by the Wear and TV libraries. To support more lazy layouts, Paging Compose now provides slightly lower level extension methods on LazyPagingItems in itemKey and itemContentType. These APIs focus on helping you implement the key and contentType parameters to the standard items APIs that already exist for LazyColumnLazyVerticalGrid as well as their equivalents in APIs like HorizontalPager. While these changes do make the LazyColumn and LazyRow examples a few lines longer, it provides consistency across all lazy layouts.


2. Performance Optimization of Applications

Using performance libraries allows you to build performant apps and identify optimizations to maintain high performance, resulting in better end-user experiences.

Improving Start-up Times

Baseline Profiles allow you to partially compile your app at install time to improve runtime and launch performance, and are getting big improvements in new tooling and libraries:

Jetpack provides a new Baseline Profile Gradle Plugin in alpha, which supports AGP 8.0+, and can be easily added to your project in Studio Hedgehog (now in canary). The plugin lets you automate the task of running generation tasks, and pulling profiles from the device and integrating them into your build either periodically, or as part of your release process.

The plugin also allows you to easily automate the new Dex Layout Optimization feature in AGP 8.1, which lets you define BaselineProfileRule tests that collect classes used during startup, and move them to the primary dex file in a multidex app to increase locality. In a large app, this can improve cold startup time by 30% on top of Baseline Profiles!

Macrobenchmark 1.2 has shipped a lot of new features in alpha, such as Power metrics and Custom trace metrics, generation of Baseline Profiles without root on Android 13, and recompilation without clearing app data on Android 14.

You can read everything in depth in the blog "What's new in Android Performance".


3. User Interface Libraries and Guidance

Several changes have been made to our UI libraries to provide better support for large-screen compatibility, foldables, and emojis.

Jetpack Compose

Jetpack Compose, Android’s modern toolkit for building native UI, recently had its May 2023 release which includes new features for text and layouts, continued performance improvements, enhanced tooling support, increased support for large screens, and updated guidance. You can read more in the What’s New in Jetpack Compose I/O blog to learn more.

Glance

The Glance library, now in 1.0-beta, lets you develop app widgets optimized for Android phone, tablet, and foldable homescreens using Jetpack Compose. The library gives you the latest Android widget improvements out of the box, using Kotlin and Compose.

Compose for TV

With the alpha release of the TV library, you can now build experiences for Android TV using components optimized for the living room experience. Compose for TV unlocks all the benefits of Jetpack Compose for your TV apps, allowing you to build apps with less code, easier maintenance and a modern Material 3 look straight out of the box. See the Compose for TV blog for details.

Material 3 for Compose

Material Design 3 is the next evolution of Material Design, enabling you to build expressive, spirited and personal apps. It is the recommended design system for Android apps and the 1.1 stable release brings exciting new features such as bottom sheets, date and time pickers, search bars, tooltips, and added more motion and interaction support. Read more in the release blog.

Understanding Window State

The new WindowManager library helps developers adapt their apps to support multi-window environments and new device form factors by providing a common API surface with support back to API level 14.

In 1.1.0-beta01, new features and capabilities have been added to activity embedding and window layout that enables you to optimize your multi-activity apps for large screens. With the 1.1 release of Jetpack WindowManager, activity embedding APIs are no longer experimental and are recommended for multi-activity applications to provide improved large screen layouts. Check out the What’s new in WindowManager 1.1.0-beta01 blog for details and migration steps.


Other key updates

Kotlin Multiplatform

We continue to experiment with using Kotlin Multiplatform to share business logic between Android and iOS. The Collections 1.3.0-alpha03 and DataStore 1.1.0-alpha02 have been updated so you can now use these libraries in KMM projects. If you are using Kotlin Multiplatform in your app, we would like your feedback!

This was a look at all the changes in Jetpack over the past few months to help you build apps more productively. For more details on each Jetpack library, check out the AndroidX release notes, quickly find relevant libraries with the API picker and watch the Google I/O talks for additional highlights.

Java is a trademark or registered trademark of Oracle and/or its affiliates.

3 things to know about Form Factors at Google I/O’22

Three different form factors- a phone, watch, and tablet 

With close to half a billion cars, TVs, watches and laptops running on Android, it is more important than ever for apps to work seamlessly across every device. This year at I/O, we renewed our focus on form factors and announced major updates for Wear OS and Large Screens. To help you get to the bottom of what’s new, here are the three things you need to know about Form Factors at Google I/O:


#1: Building Wear OS and fitness apps is simpler than ever

Compose for Wear OS GIF 

At I/O we announced the Beta release of Compose for Wear OS, our modern declarative UI toolkit designed to help developers build exceptional user experiences for Wear OS. Compose for Wear OS shares the foundation and principles of Jetpack Compose, helping to simplify and accelerate UI development. Additionally, Compose for Wear OS offers the Material catalog with components that are optimized for the watch experience.

We’ve been developing Compose for Wear OS with open source community feedback and participation. Since the Developer Preview, we’ve added and improved a number of components such as navigation, scaling lazy lists, input and gesture support and many more. Compose for Wear OS is now feature complete for the 1.0 release coming soon and the API is stable - so you can begin building beautiful, production-ready apps.

Health Services Logo

Health Services—the power efficient and easy-to-use library for collecting real-time sensor data on smartwatches—will soon be available in beta and ready for production use. Health Services enables apps to take advantage of modern smartwatch architecture, thus helping conserve battery while still delivering high frequency data. Since the alpha release last year, we have been working hard to increase performance and improve the developer experience. We have also made some improvements to the API in response to your feedback.

If you have an existing health and fitness app for Wear OS you want to update, or have a completely new app in mind, we suggest you look at Health Service to provide the best experience for Wear 3 users and prepare your app for additional devices and sensors in the future. For example, this library will power all the Google- and Fitbit-branded health and fitness experiences on the recently announced Google Pixel Watch.

Health Conect Logo

And, last but not least, we just launched Health Connect. With Health Connect, users will be able to securely store health and fitness data on their phone and connect and share that data with some of their favorite health and fitness apps. Samsung Health, Google Fit and Fitbit are integrating with Health Connect, along with many popular health and fitness apps. Health Connect is a common set of APIs for storing & sharing health data on Android phones. Developers can read from & write data to an on-device data store and we’ve standardized the schema and API behavior, making it easy for you to use the data. We know how important the privacy of each user’s health data is, so we centralized permissions and privacy controls - making it clear and simple for your users to manage and control this data.


#2: Google is all-in on tablets

Google is going big on large screens with innovations in hardware, optimizations in the operating system and a major investment in our app ecosystem. In the first quarter of this year, we saw active large screen users approaching 270 million, making it a great time to optimize for tablets, foldables and Chrome OS.

Since last I/O we launched Android 12L, a feature drop that makes Android 12 even better on large screens. With Android 13, we are including all of these improvements and more. Android 12L and 13 have a huge number of optimizations for large screens, including the task bar, multi-tasking, keyboard and mouse support, and a compatibility mode for applications. We also have exciting updates to guidance, testing and tools. To take the guesswork out of optimizing and testing your app for large screens, we created a set of Large Screen Quality guidelines and a number of Material Design Canonical Layouts. Our guidance is implemented in our Jetpack libraries, which bake in many of the most common tasks for Large Screen development, such as drag and drop.


Quote from Developer at Meta 

Hardware innovation is a cornerstone of Google’s investment in large screens - this year and beyond. At I/O, we announced the Google Pixel tablet, coming in 2023. Plus, our partners are creating some amazing devices with tablets, Chromebooks, and foldables coming from companies like Samsung, Lenovo, and OPPO.

With the incredible hardware and operating system innovations, more apps than ever are optimizing for large screens. Apps like Facebook, TikTok, HBO Max and Zoom look great on large screens. Here at Google, we recognize the opportunity with large screens. Apps like YouTube, Google Maps, Google Photos, Chrome, and many of our most popular apps are rolling out large screen optimizations, with more to come.

These apps - and more - are available on the Play Store, where we have made some of our most impactful updates to date. We are committed to helping users find the best large-screen optimized apps in the Play Store with new large screens focused editorial content and separate reviews and ratings for large-screen applications. Plus, we are updating Google Play to look awesome on a tablet, Chromebook or foldable device.


#3: We’re here to support you!

To make your apps even better on large screens and Wear OS, we’ve created in-depth content for making your app work better across different types of inputs, screen sizes and devices.

In Android Studio Dolphin Beta and Electric Eel Canary we’ve added new features for Wear OS and Large screens to help you be more productive when developing and testing for different form factors. Read more


Looking to get started? Here’s all the amazing I/O content to help you on your way:

Google I/O 2022: What’s new in Jetpack

Posted by Amanda Alexander, Product Manager, Android

Android Jetpack logo on a blue background 

Android Jetpack is a key pillar of Modern Android Development. It is a suite of over 100 libraries, tools and guidance to help developers follow best practices, reduce boilerplate code, and write code that works consistently across Android versions and devices so that you can focus on building unique features for your app.

Most apps in Google Play use Jetpack for app architecture. Today, over 90% of the top 1000 apps use Jetpack.

Here are the highlights of recent updates in Jetpack - an extended version of our What’s New in Jetpack talk for I/O!

Below we’ll cover updates in three major areas of Jetpack:

  1. Architecture Libraries and Guidance
  2. Performance Optimization of Applications
  3. User Interface Libraries and Guidance

And then conclude with some additional key updates.


1. Architecture Libraries and Guidance

App architecture libraries and components ensure that apps are robust, testable, and maintainable.


Data Persistence

Room is the recommended data persistence layer which provides an abstraction layer over SQLite, allowing for increased usability and safety over the platform.


In Room 2.4, support for Kotlin Symbol Processing (KSP) moved to stable. KSP showed a 2x speed improvement over KAPT in our benchmarks of Kotlin code. Room 2.4 also adds built-in support for enums and RxJava3 and fully supports Kotlin 1.6.

Room 2.5 includes the beginning of a full Kotlin rewrite. This change sets the foundation for future Kotlin-related improvements while still being binary compatible with the previous version written in the Java programming language. There is also built-in support for Paging 3.0 via the room-paging artifact which allows Room queries to return PagingSource objects. Additionally, developers can now perform JOIN queries without the need to define additional data structures since Room now supports relational query methods using multimap (nested map and array) return types.

@Query("SELECT * FROM Artist 
    JOIN Song ON Artist.artistName = 
    Song.songArtistName")
fun getArtistToSongs(): Map<Artist, List<Song>>

Relational query methods using multimap return types


Database migrations are now simplified with updates to AutoMigrations, with added support for additional annotations and properties. A new AutoMigration property on the @Database annotation can be used to declare which versions to auto migrate to and from. And when Room needs additional information regarding table and column modifications, the @AutoMigration annotation can be used to specify the inputs.

Database(
  version = MyDb.LATEST_VERSION,
  autoMigrations = {
    @AutoMigration(from = 1, to = 2,
      spec = MyDb.MyMigration.class),
    @AutoMigration(from = 2, to = 3)
  }
)
public abstract class MyDb
    extends RoomDatabase {
  ...

DataStore

The DataStore library is a robust data storage solution that addresses issues with SharedPreferences. To better understand how to use this powerful replacement for many SharedPreferences use cases, you can check out a series of videos and articles in Modern Android Development Skills: DataStore which includes guidance on testing your app’s usage of the library, using it with dependency injection, and migrating from SharedPreference to Proto DataStore.


Incremental Data Fetching

The Paging library allows you to load and display small chunks of data to improve network and system resource consumption. App data can be loaded gradually and gracefully within RecyclerViews or Compose lazy lists.

Paging 3.1 provides stable support for Rx and Guava integrations, which provide Java alternatives to Paging’s native use of Kotlin coroutines. This version also has improved handling of invalidation race conditions with a new return type, LoadResult.Invalid, to represent invalid or stale data. There is also improved handling of no-op loads and operations on empty pages with the new onPagesPresented and addOnPagesUpdatedListener APIs.

To learn more about Paging 3, check out the new, simplified Paging Basics Codelab on the Android Developer site which demonstrates how to integrate the Paging library into an app that shows a list.

GIF showing Paging Basics list 

Defining In Application Navigation Model

The Navigation library is a framework for moving between destinations in an app.

The Navigation component is now integrated into Jetpack Compose via the new navigation-compose artifact which allows for composable functions to be used as destinations in your app.

The Multiple Back Stacks feature has improved to make it easier to remember state. NavigationUI now automatically saves and restores the state of popped destinations, meaning developers can support multiple back stacks without any code changes.

Large screen support was enhanced with the navigation-fragment artifact providing a prebuilt implementation of a two-pane layout in AbstractListDetailFragment. This fragment uses a SlidingPaneLayout to manage a list pane – managed by your subclass – and a detail pane, which uses a NavHostFragment.

All Navigation artifacts have been rewritten in Kotlin and feature improved nullability of classes using generics – such as NavType subclasses.


Opinionated Architecture Guidance

To learn more about how our key architecture libraries work together, you can view a collection of videos and articles covering best practices for modern Android development in a series called Modern Android Development Skills: Architecture.


2. Performance Optimization of Applications

Using performance libraries allows you to build performant apps and identify optimizations to maintain high performance, resulting in better end-user experiences.


Improving Start-up Times

App speed can have a big impact on a user’s experience, particularly when using apps right after installation. To improve that first time experience, we created Baseline Profiles. Baseline Profiles allow apps and libraries to provide the Android run-time with metadata about code path usage, which it uses to prioritize ahead-of-time compilation. This profile data is aggregated across libraries and lands in an app’s APK as a baseline.prof file, which is then used at install time to partially pre-compile the app and its statically-linked library code. This can make your apps load faster and reduce dropped frames the first time a user interacts with an app.

We’ve already started leveraging Baseline Profiles at Google. The Play Store app saw a decrease in initial page rendering time on its search results page of 40% after adopting Baseline Profiles. Baseline profiles have also been added to popular libraries, such as Fragments and Compose, to help provide a better end-user experience. To create your own baseline profile, you need to use the Macrobenchmark library.


Instrumenting Your Application

The Macrobenchmark library helps developers better understand app performance by extending Jetpack’s benchmarking coverage to more complex use-cases, including app startup and integrated UI operations such as scrolling a RecyclerView or running animations. Macrobenchmark can also be used to generate Baseline Profiles.

Macrobenchmark has been updated to increase testing speed and has several new experimental features. It also now supports Custom trace-based timing measurements using TraceSectionMetric, which allows developers to benchmark specific sections of code. Additionally, the AudioUnderrunMetric now enables detection of audio buffer underruns to help understand audible jank.

BaselineProfileRule generates profiles to help with runtime optimizations. BaselineProfileRule works similarly to other macro benchmarks, where you represent user actions as code within lambdas. In the example below, the critical user journey that the compiler should optimize ahead of time is a cold start: opening the app’s landing activity from the launcher.

@ExperimentalBaselineProfilesApi
@RunWith(AndroidJUnit4::class)
class BaselineProfileGenerator {
  @get:Rule
  val baselineProfileRule = BaselineProfileRule()

  @Test
  fun startup() = baselineProfileRule.collectBaselineProfile(
    packageName = "com.example.app"
  ) {
    pressHome()

    // This block defines the app's critical user journey. Here we are
    // interested in optimizing for app startup, but you can also navigate
    // and scroll through your most important UI.
    startActivityAndWait()
  }
}

For more details and a full guide on generating and using baseline profiles with Macrobenchmark, check our guidance on the Android Developers site.

Avoiding UI Stuttering / Jank

The new JankStats library helps you track and analyze performance problems in your app’s UI, including reports on dropped rendering frames – commonly referred to as “jank.” JankStats builds on top of existing Android platform APIs, such as FrameMetrics, but can be used back to API level 16.

The library also offers additional capabilities beyond those built into the platform: heuristics that help pinpoint causes of dropped frames, UI state that provides additional context in reports, and reporting callbacks that can be used to upload data for analysis.

Here’s a closer look at the three major aspects of JankStats:

  1. Identifying Jank: This library uses internal heuristics to determine when jank has occurred, and uses that information to know when to issue jank reports so that developers have information on those problems to help analyze and fix the issues.
  2. Providing UI Context: To make the jank reports more useful and actionable, the library provides a mechanism to help track the current state of the UI and user. This information is provided whenever reports are logged, so that developers can understand not only when problems occurred, but also what the user was doing at the time. This helps to identify problem areas in the application that can then be addressed. Some of this state is provided automatically by various Jetpack libraries, but developers are encouraged to provide their own app-specific state as well.
  3. Reporting Results: On every frame, the JankStats client is notified via a listener with information about that frame, including how long the frame took to complete, whether it was considered jank, and what the UI context was during that frame. Clients are encouraged to aggregate and upload the data as they see fit for analysis that can help debug overall performance problems.

Adding Logging to your App

The Tracing library enables profiling of app performance by writing trace events to the system buffer. Tracing 1.1 supports profiling in non-debug builds back to API level 14, similar to the <profileable> manifest tag which was added in API level 29.


3. User Interface Libraries and Guidance

Several changes have been made to our UI libraries to provide better support for large-screen compatibility, foldables, and emojis.


Jetpack Compose

Jetpack Compose, Android’s modern toolkit for building native UI, has reached 1.2 beta today which has added several features to support more advanced use cases, including support for downloadable fonts, lazy layouts, and nested scrolling interoperability. Check out the What’s New in Jetpack Compose blog post to learn more.


Understanding Window State

The new WindowManager library helps developers adapt their apps to support multi-window environments and new device form factors by providing a common API surface with support back to API level 14.

The initial release targets foldable device use cases, including querying physical properties that affect how content should be displayed.

Jetpack’s SlidingPaneLayout component has been updated to use WindowManager’s smart layout APIs to avoid placing content in occluded areas, such as across a physical hinge.


Drag and Drop

The new DragAndDrop library also helps with new form factors and windowing modes by enabling developers to accept drag-and-drop data – both from inside and outside their app. DrapAndDrop includes a consistent drop target affordance and it supports back to API level 24.

Drag and drop sample GIF 

Backporting New APIs to Older API Levels

The AppCompat library allows access to new APIs on older API versions of the platform, including backports of UI features such as dark mode.

AppCompat 1.4 integrates the Emoji2 library to bring default support for new emoji to all text-based views supported by AppCompat on API level 14 and above.

Custom locale selection is now supported back to API level 14. This feature enables manual persistence of locale settings across app starts, and supports automatic persistence via a service metadata flag. This tells the library to load the locales synchronously and recreate any running Activity as needed. On API level 33 and above, persistence is managed by the platform with no additional overhead.


Other key updates


Annotation

The Annotation library exposes metadata that helps tools and other developers understand your app's code. It provides familiar annotations like @NonNull that pair with lint checks to improve the correctness and usability of your code.

Annotation is migrating to Kotlin, so now developers using Kotlin will see more appropriate annotation targets, including @file.

Several highly-requested annotations have been added with corresponding lint checks. This includes annotations concerning method or function overrides, and the @DeprecatedSinceApi annotation which provides a corollary to @RequiresApi and discourages use beyond a certain API level.


Github

We now have over 100 projects in our GitHub! Several modules are open for developer contributions using the standard GitHub-based workflow:

  • Activity
  • AppCompat
  • Biometric
  • Collection
  • Compose Compiler
  • Compose Runtime
  • Core
  • DataStore
  • Fragment
  • Lifecycle
  • Navigation
  • Paging
  • Room
  • WorkManager

Check the landing page for more information on how we handle pull requests, and to get started building with Jetpack libraries.

This was a brief tour of all the changes in Jetpack over the past few months. For more details on each Jetpack library, check out the AndroidX release notes, quickly find relevant libraries with the API picker and watch the Google I/O talks for additional highlights.

Java is a trademark or registered trademark of Oracle and/or its affiliates.

Tag Manager 360: From Approvals to Zones

Whether you’re a small business with a single site or a large enterprise with many complex sites and apps, Google Tag Manager makes it easier to implement and maintain the tags for all your marketing and measurement tools.

Over the past few years, we've continued to improve the core functionality of Tag Manager for all users while also introducing enterprise features for customers with more advanced needs.

For Tag Manager 360 customers, we recently added Approvals functionality, enabling enterprise users to involve more stakeholders in the tagging process without needing to give them full Publish access.

Submit Changes screen in Tag Manager 360 showing how users with Edit access can request approval.
Using Approvals, you can limit select users to requesting approval for tagging changes. Then you can use the built-in commenting capability to work back and forth with them to get things just right.

Today we’re excited to announce another new feature that gives you even more control over your tagging: Zones for Tag Manager 360!

With Zones, you can give users access to publish certain types of tags on certain parts of your site. Zones work by letting you link additional containers within specified page boundaries.

Zone configuration screen in Tag Manager 360 highlighting the steps of linking containers, defining zone boundaries, and optionally turning on type restrictions.
When a page loads within the zone boundaries, any containers linked within the zone will load alongside your main container. For example, you could give your marketing team and agencies Publish access to their own containers, but limit them to only your marketing pages. This gives them the flexibility to manage their tagging independently and reduces work for admins and developers.

For even more control, you can turn on Type Restrictions to choose what types of tags, triggers, and variables will work from containers within a zone.

Type Restrictions for a Zone in Tag Manager 360 highlighting how individual tag types can be allowed or restricted.
So, whether you’re making a few quick updates to who can publish which tags or building a comprehensive tagging plan for a network of global, regional, and local websites, Zones gives you more power and flexibility to set up the right tagging workflows for your organization.

If you’re already a Tag Manager 360 customer, you’ll see a new Zones section in the left sidebar of your containers starting today. Visit our help center to learn more about Zones.

Want to become a Tag Manager 360 customer? If you’re already a customer of another Google Analytics 360 Suite product, you can reach out to your Account Manager. If you’re brand new to the Analytics 360 Suite, visit our website to learn more.

Posted by Scott Herman, Product Manager, Google Tag Manager

Richer Google Analytics User Management

Today we are introducing more powerful ways to manage access to your Analytics accounts: user groups inside Google Analytics, and enforceable user policies. These new features increase your ability to tightly manage who has access to your data, and amplify the impact of the user management features we launched last year.

User Groups

User groups can now be created from and used within Google Analytics, simplifying user management across teams of people. This is a big time saver if you find yourself repeatedly giving out similar permissions to many people, and simplifies granting permissions as individuals rotate into or out of a team.

To start with user groups, visit either Suite Home or Google Analytics, navigate to the user management section, and click the “+” button. You will then see an option to add new groups, which will walk you through creating a user group, adding people to it, and assigning permissions to the group. Here is a full list of steps to make a user group.

Google Analytics User Management page highlighting the new option to create a user group

Enforced User Policies


Google Analytics 360 Suite user policies let you define which users will have access to your Analytics accounts, and which do not. When a user violates a policy, you will be warned of this through the user management section in Google Analytics or Suite Home and have the option to remove that user from your organization.

We have enhanced these policies so you can choose to block policy-violating users from being added to your Analytics accounts. While policies aren’t enforced by default, you have the option to block violator additions.  When you create or edit your organization’s user policy, you will see a toggle switch like the one below:

User policy setup showcasing the new enforced policy option
User groups and enforced user policies are supported in Google Analytics today, and support for more products is coming, as we continue to plan features that help customers better manage access to their critical business data.

Posted by Matt Matyas, Product Manager Google Analytics 360 Suite

New ways to measure your users in Google Analytics

Almost 90% of marketing executives say that understanding user journeys across channels and devices is critical to marketing success.1

Today's customers have incredibly high expectations for personalized and relevant experiences from brands. That's why Google Analytics keeps working to better measure the full customer journey in all its complexity.

Let's look at four new Analytics features that are all about helping businesses understand users so they can deliver more personalized site experiences.

Focus on your users in reporting 


Analytics standard reports have been updated to focus on your users. User metrics are an essential way to understand engagement with your customers, especially those who may have multiple sessions across multiple days.

With our updated standard reporting, you can see immediately, for instance, how many users are coming to your site from paid search ― in addition to seeing the number of sessions.


Users are now included in Analytics standard reports.


To enable this update, sign in to your account and go to Admin > Property Settings and then choose the toggle switch labeled Enable Users In Reporting.

For other ways to analyze by user, try existing reports like Active Users, Cohort Analysis, and Lifetime Value. In case you're wondering, session metrics will continue to be available in standard reporting ― that's not changing. Learn more about audience reports.

Measure lifetime metrics and dimensions for every user 


Another tool that marketers can use to analyze visitors on an individual level is User Explorer. And now we've added something new: lifetime metrics and dimensions for individual users (based on the lifetime of their cookie). These new metrics and dimensions will give Analytics users a much more detailed way to measure visitors and customers.


New lifetime metrics and dimensions for individual users in User Explorer.

For example, you can look back and see the total amount of time an individual user has spent or the total number of transactions an individual user has made on your website. You'll also see new dimensions that show data such as when a user made their first visit to your site and which channel acquired them.

The new lifetime metrics and dimensions are already available in your Analytics account. Learn more about User Explorer.

Audiences in reporting 


For marketers who live and breathe audiences ― which is most of us ― the breathing just got easier. We've added the option to publish any audience to a new report in Analytics that should help make every audience easier to understand.


Publish your audiences into Analytics and then view reporting in the Audiences report.


You can now go to the new Audiences report and see a cross-channel view of the audiences you’ve created in Analytics. This is a change from the past, where you could create audiences in Analytics and export those audiences to other products like AdWords, but you weren’t able to publish audiences to Analytics for reporting.

For instance, you might decide to publish an audience to Analytics so that you can see all users who have purchased within the last 12 months but not during the last 2.

You can find the new Audience report in your Analytics account. Learn more about Audiences in reporting.

Reach users most likely to convert 


Meet our newest metric: Conversion Probability. It takes user-based metrics one step further to show you just what the name suggests: the probability that a given user will convert in the future. The calculation is based on a machine learning model that learns from users who have made transactions in the past.

The advantages are clear: Marketers can create remarketing lists that target users who have a high likelihood to purchase and then reach those users through either advertising campaigns in AdWords and DoubleClick or site experiments in Optimize.

We are also adding a new Conversion Probability report. This report will show you the Conversion Probability for all your users, including across important dimensions such as channel.


The new conversion probability report.

This new feature from Analytics Intelligence is the first forward-looking estimate of how likely a conversion is for individual users. It's rolling out in beta to all Analytics accounts over the next few months. Learn more about Conversion Probability. 

These four new enhancements will help you better understand your users and what they are doing on your site, so that you can create better experiences for them. If you — like those 90% of marketing executives — are working hard to understand your users' journeys, we hope you'll find these features useful.

Happy analyzing!



1"The Customer Experience is Written in Data." Econsultancy and Google, May 2017. 

Get the most out of Data Studio Community Connectors

Data Studio Community Connectors enable direct connections from Data Studio to any internet accessible data source. Anyone can build their own Community Connector or use any available ones.

Try out the new Community Connectors in the gallery

We have recently added additional Community Connectors to the Data Studio Community Connector gallery from developers including: DataWorx, Digital Inspiration, G4interactive, Kevpedia, Marketing Miner, MarketLytics, Mito, Power My Analytics, ReportGarden, and Supermetrics. These connectors will let you access data from additional external sources, leveraging Data Studio as a free and powerful reporting and analysis solution. You can now use more than 50 Community Connectors from within the Gallery to access all your data.

Try out these free Community Connectors: Salesforce, Twitter, Facebook Marketing.

Find the connector you need

In the Data Studio Community Connector gallery, it is possible for multiple connectors to connect to the same data source. There are also instances where a single connector can connect to multiple data sources. To help users find the connector they need, we have added the Data Sources page where you can search for Data Sources and see what connectors are available to use. The connector list includes native connectors in Data Studio as well as verified and Open Source Community Connectors. You can directly use the connectors by clicking the direct links on the Data Sources page.

Vote for your data source

If your data source is not available to use through any existing connector, you can Vote for your data source. This will let developers know which Data Sources are most in demand. Developers should also let us know which Community Connector you are building. We will use this information to update the Data Sources page.

Tell us your story

If you have any interesting connector stories, ideas, or if you’d like to share some amazing reports you’ve created using Community Connectors please let us know by giving us a shout or send us your story at [email protected].

Open Source Community Connectors for Data Studio

More than six hundred developers have signed up for developer access to Data Studio Community Connectors since the Developer Launch. Community Connectors give developers an opportunity to come up with innovative solutions for data access and broaden the scope of data sources users can connect to.

Based on community feedback, we recognized that many of you are looking to share your work on connectors with the community. Also, developers are looking for more examples to follow. With these community needs in mind, today, we are announcing the Open Source Community Connectors repository on GitHub.


Use open source Community Connectors


For every connector that is hosted in the open source repository, the Data Studio Developer Relations team will manage a deployment for the connector’s latest code. This managed deployment will enable all users to immediately try the connector in Data Studio by simply clicking a link. Managed deployments also make it easier for developers since you do not have to deploy and maintain the connectors yourself; we’ll take care of this for you.

You can try out the following Open Source connectors directly in Data Studio:


Example dashboards using these connectors:



Learn about best practices


If you want to connect to new Data Sources using Data Studio but have not yet looked into Community Connectors, now would be the best time to start since a variety of example connector code have become available. These examples will give you a head start and create a platform for you to learn and share with other community members.

Initially, we are releasing these connectors in our open source repository:



Contribute to the community


If want to submit your own open source connector to the repository, you can send us a pull request. Alternatively you can maintain your own repository and link to that from the official repository.

This Git repository is a small start where we plan to make new additions. We have already seen other open source Community Connectors like data.world and getSTAT. We are hoping that initiative will help developers and users to create connectors to new Data Sources and thus make more data accessible in Data Studio. Developers can also collaborate with each other as well as report new issues and fix existing ones through these open source connectors.

This collaboration platform gives developers the option to leverage support from the community. If you want to develop your own connector but are unable to maintain it in the long run, you can add it to our repository so that the community can support it.

Visit the repository and start building your own Community Connector today!


Posted by Minhaz Kazi, Google Analytics team

Data Studio: Richer Visualizations and Analytical Functions

The Data Studio team has been hard at work launching new features to allow for richer visualization and new views on data. Today, we'll highlight some of these recent launches.

Pivot Tables

Pivot tables let users narrow down a large data set or analyze relationships between data points. Additionally, they reorganize user's dimensions and metrics to help quickly summarize data and see relationships that might otherwise be hard to spot.

Example Pivot Table (Help center doc here)

Coordinated Coloring

Coordinated coloring allows users to bind colors to specific data. When a user creates visualizations, Data Studio automatically binds colors to data, so that color:data pairs stay consistent between visualizations and when filtering. This feature is automatically turned on for all new reports, and available in old reports.

Example Coordinated Coloring (Help center doc here)

Google Analytics Sampling Indicator

Google Analytics samples data in order to provide accurate reporting in a timely manner. Data Studio now shows a sampling indicator in Data Studio reports when a component contains sampled Analytics data.

GA Sampling indicator (Help center doc here)

Field Reports Editing

Data Studio has also recently added new options to the chips in reporting. These new options allow you to:
  • Rename fields
  • Change aggregation types
  • Change semantic types
  • Change date functions
  • Apply % of total, difference from total, or percent difference from total to a metric from within the report.
Example of new field editing options (Help center doc here).

Submitting and voting for new features

The Data Studio team will continue to introduce new features and product enhancements based on your submissions. You can view requests submitted by other users, upvote your favorites, or create new ones. Learn more here.

Ask a question, get an answer in Google Analytics

What if getting answers about your key business metrics was as easy as asking a question in plain English? What if you could simply say, "How many new users did we have from organic search on mobile last week?" ― and get an answer right away?

Today, Google Analytics is taking a step toward that future.  Know what data you need and want it quickly? Just ask Google Analytics and get your answer.
This feature, which uses the same natural language processing technology available across Google products like Android and Search, is rolling out now and will become available in English to all Google Analytics users over the next few weeks.
The ability to ask questions is part of Analytics Intelligence, a set of features in Google Analytics that use machine learning to help you better understand and act on your analytics data. Analytics Intelligence also includes existing machine learning capabilities like automated insights (now available on both web and the mobile app), smart lists, smart goals, and session quality.

How it Works
We've talked to web analysts who say they spend half their time answering basic analytics questions for other people in their organization. In fact, a recent report from Forrester found that 57% of marketers find it difficult to give their stakeholders in different functions access to their data and insights. Asking questions in Analytics Intelligence can help everyone get their answers directly in the product ― so team members get what they need faster, and analysts can spend their valuable time on deeper research and discovery.
Try it! This short video will give you a feel for how it works:
“Analytics Intelligence enables those users who aren’t too familiar with Google Analytics to access and make use of the data within their business’ account. Democratising data in this way can only be a good thing for everyone involved in Google Analytics!”
Joe Whitehead, Analytics Consultant, Merkle | Periscopix


Beyond answering your questions, Analytics Intelligence also surfaces new opportunities for you through automated insights, now available in the web interface as well as in the mobile app. These insights can show spikes or drops in metrics like revenue or session duration, tipping you off to issues that you may need to investigate further. Insights may also present opportunities to improve key metrics by following specific recommendations. For example, a chance to improve bounce rate by reducing a page's load time, or the potential to boost conversion rate by adding a new keyword to your AdWords campaign.

To ask questions and get automated insights from Analytics Intelligence in our web interface, click the Intelligence button to open a side panel. In the Google Analytics mobile app for Android and iOS, tap the Intelligence icon in the upper right-hand corner of most screens. Check out this article to learn more about the types of questions you can ask today.

Help us Learn
Our Intelligence system gets even smarter over time as it learns which questions and insights users are interested in. In that spirit, we need your help: After you ask questions or look at insights, please leave feedback at the bottom of the card.

Your answers will help us train Analytics Intelligence to be more useful.

Our goal is to help you get more insights to more people, faster. That way everyone can get to the good stuff: creating amazing experiences that make customers happier and help you grow your business.
Happy Analyzing!