Repository navigation
[shared_preferences_foundation] Fix web compilation of apps that import the package - #13447
Conversation
…onditional exports
There was a problem hiding this comment.
Code Review
This pull request refactors the package to support compilation on platforms without FFI, such as the web, by introducing conditional exports and stub implementations. The options class is moved to a separate file, and stub classes are exported when FFI is unavailable. Feedback points out that instantiating the options class on the web will cause a runtime crash due to the unguarded use of Platform.isIOS, and suggests guarding it with !kIsWeb.
e38c3c6 to
bdc680d
Compare
|
Detected the If you add the The "Merge" button is also unlocked. To bypass presubmits as well as the tree status, press the GitHub "Add to Merge Queue". |
flutter/packages@23a05b6...a8549ae 2026-10-27 [email protected] [material_ui] Deprecate the black/white parameters in `Typography.material2021` (flutter/packages#13443) 2026-10-27 [email protected] [shared_preferences] Defer SharedPreferences fetch in `LegacySharedPreferencesPlugin` until first use on Android (flutter/packages#13431) 2026-10-27 [email protected] [material_ui] Fix MenuAnchor non-Unicode shortcut labels on JS web (flutter/packages#13370) 2026-10-27 [email protected] [material_ui] Add Checkbox.markInsets (flutter/packages#12690) 2026-10-27 [email protected] [vector_graphics_compiler] Handle coordinate lists on text and tspan (flutter/packages#13287) 2026-10-27 [email protected] [cupertino_ui] Unskip web tests that pass on CanvasKit and Skwasm: nav_bar_transition_test, refresh_test, route_test, text_field_cursor_test (flutter/packages#13439) 2026-10-27 [email protected] [material_ui] Fix `TextTheme` and `Typography` `debugFillProperties` defaults (flutter/packages#13374) 2026-10-27 [email protected] [material_ui] Update out-of-date typography documentation (flutter/packages#13372) 2026-10-27 [email protected] [shared_preferences_foundation] Fix web compilation of apps that import the package (flutter/packages#13447) 2026-10-26 [email protected] Fix AI guidelines link in PR template (flutter/packages#13411) If this roll has caused a breakage, revert this CL and set the roller to dry run mode using the controls here: https://autoroll.skia.org/r/flutter-packages-flutter-autoroll Please CC [email protected] on the revert to ensure that a human is aware of the problem. To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://issues.skia.org/issues/new?component=1389291&template=1850622 Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
flutter/packages@23a05b6...a8549ae 2026-10-27 [email protected] [material_ui] Deprecate the black/white parameters in `Typography.material2021` (flutter/packages#13443) 2026-10-27 [email protected] [shared_preferences] Defer SharedPreferences fetch in `LegacySharedPreferencesPlugin` until first use on Android (flutter/packages#13431) 2026-10-27 [email protected] [material_ui] Fix MenuAnchor non-Unicode shortcut labels on JS web (flutter/packages#13370) 2026-10-27 [email protected] [material_ui] Add Checkbox.markInsets (flutter/packages#12690) 2026-10-27 [email protected] [vector_graphics_compiler] Handle coordinate lists on text and tspan (flutter/packages#13287) 2026-10-27 [email protected] [cupertino_ui] Unskip web tests that pass on CanvasKit and Skwasm: nav_bar_transition_test, refresh_test, route_test, text_field_cursor_test (flutter/packages#13439) 2026-10-27 [email protected] [material_ui] Fix `TextTheme` and `Typography` `debugFillProperties` defaults (flutter/packages#13374) 2026-10-27 [email protected] [material_ui] Update out-of-date typography documentation (flutter/packages#13372) 2026-10-27 [email protected] [shared_preferences_foundation] Fix web compilation of apps that import the package (flutter/packages#13447) 2026-10-26 [email protected] Fix AI guidelines link in PR template (flutter/packages#13411) If this roll has caused a breakage, revert this CL and set the roller to dry run mode using the controls here: https://autoroll.skia.org/r/flutter-packages-flutter-autoroll Please CC [email protected] on the revert to ensure that a human is aware of the problem. To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://issues.skia.org/issues/new?component=1389291&template=1850622 Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md

Since 2.6.0 (#12329),
package:shared_preferences_foundation/shared_preferences_foundation.darttransitively importsdart:ffiandpackage:objective_c, causing multi-platform apps that import it (for example to useSharedPreferencesAsyncFoundationOptions) to fail compilation on web. This currently breaksshared_preferences/exampleweb drive tests in CI.Following the same approach as
shared_preferences_androidin #13380, this conditionally exports a stub of the plugin classes whendart.library.ffiis unavailable and movesSharedPreferencesAsyncFoundationOptionsinto its own FFI-free file.