# This list should be kept as short as possible, and things should remain here
# only as long as necessary, since in general the goal is for all of the latest
# versions of plugins to be mutually compatible.
#
# An example use case for this list would be to temporarily add plugins while
# updating multiple plugins for a breaking change in a common dependency in
# cases where using a relaxed version constraint isn't possible.

# This is a permament entry, as it should never be a direct app dependency.
- plugin_platform_interface
# Packages below are temporarily added to push and release a new webview
# interface. Remove packages with release of `webview_flutter` 4.0.0. See
# https://github.com/flutter/flutter/issues/94051.
- webview_flutter_platform_interface
- webview_flutter_wkwebview
- webview_flutter_android
- webview_flutter_web
