# 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
# Temporarily excluded to avoid runtime conflicts with
# shared_preferences_macos and _ios, which are still what shared_preferences
# uses. This will be removed when the switch to shared_preferences_foundation
# is complete. See https://github.com/flutter/flutter/issues/117941
- shared_preferences_foundation
