## What is this?

This is a companion repo to the main Flutter repo. It contains the source code
for a suite of performance tools for Dart and Flutter. All of the core logic for
the devtools app is in package:devtools_app with package:devtools just serving
as a container to serve precompiled versions of the app for easy use with
`pub global activate`.

## Getting started

For documentation on installing and trying out DevTools, please see our
[docs](https://flutter.dev/docs/development/tools/devtools/).

## Feedback

Feedback and issues are best reported at
https://github.com/flutter/devtools/issues. Thanks for trying out DevTools!

## Terms and Privacy

By using Dart DevTools, you agree to the
[Google Terms of Service](https://policies.google.com/terms).
