You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Some of these are much more important to us than others. They're organized by where the work would happen, not by importance.
Many of these have corresponding issues in our tracker with the "upstream" label. Conversely, all issues with that label should appear either below or in the sibling issue #1079.
This is a well-known problem in the community. The trouble is our model code imports package:flutter/foundation.dart for things like ChangeNotifier and dart:ui for things like Color; the former imports the latter; and dart:ui is available only in the Flutter SDK, not dart run.
One existing proposal is to move some definitions to a package outside the Flutter SDK. Not sure if that will succeed in solving the problem.
This tracking issue collects notes on potential work in Flutter upstream that would benefit the (new) Zulip mobile app. See also:
Some of these are much more important to us than others. They're organized by where the work would happen, not by importance.
Many of these have corresponding issues in our tracker with the "upstream" label. Conversely, all issues with that label should appear either below or in the sibling issue #1079.
Framework
WidgetSpan double-applies text scaling: Global text scaling shouldn't be automatically applied on
WidgetSpan
s as scale transforms flutter/flutter#126962In Zulip the main symptom is on @-mentions: content: @-mentions and global times are scaled too much by system text-size setting #735
Especially affects a11y, at large font size: one @-mention can easily occupy 1/3 of the screen.
(TODO upstream issue)
RawAutocomplete should gain a "controller" for customizability.
autocomplete: Options list can persistently lag behind query #226
(TODO upstream issue)
Richer
Flex
(akaRow
andColumn
), with more CSS flexbox features like flex-basis vs flex-grow vs flex-shrink. (This is one of the few things we miss from React Native: its Yoga layout engine has those features.)We probably need something like this for:
Long stream name can overflow recipient header #282
reactions: Label text can linebreak sooner than necessary #433
Back gesture on Android 12+ kills app rather than backgrounding it flutter/flutter#117061
Android "back" quits the app completely #638
Let iOS keyboard dismissal synchronize with scroll flutter/flutter#57609
ListView: Poor performance with many variable-extent items + jumpTo (scroll bar, trackpad, mouse wheels) flutter/flutter#52207
The Zulip impact is that if you try the "scroll to end" button when scrolled a long way back in history, the result is very choppy — like ~1fps — until it reaches the end.
(TODO upstream issue)
Flywheel/momentum scrolling #69
(TODO upstream issue)
InputDecoration
should gain ahelper
field, to generalizehelperText
in the same way aserror
vs.errorText
andlabel
vs.labelText
.We'd use this on the "server URL" field in the login flow.
login: Link to doc to help users understand what a "server URL" is and how to find theirs #109 (comment)
login: Link to doc to help users understand what a "server URL" is and how to find theirs #109 (comment)
(TODO upstream issue)
ui: Tooltips at the top of the screen should open downward, out of device inset #1151
Engine
The
Color
API is in flux; to accommodate it, we're currently (since 2024-08) relying on versions ofpackage:color_models
andpackage:flutter_color_models
from a branch maintained by a member of the Flutter engine team, instead of released versions.This isn't a stable situation and we hope the API settles soon.
deps: Await/take
flutter_color_models
release that accommodates wide-gamut adjustments to Flutter'sColor
#918(TODO upstream issue)
We want to have scripts that run as a CLI (at dev time) and import our model code.
where we wound up with a real hack of putting the logic in a "test", run with
flutter test
, and having a wrapper script around that to accept a more reasonable CLI and runflutter test
. (flutter test
has a fine CLI for its actual job; but a terrible one for running an arbitrary tool as a script, which it's not intended for.)Potentially also: content test: Record URLs of sample messages, and validate them #617
package:flutter/foundation.dart
for things likeChangeNotifier
anddart:ui
for things likeColor
; the former imports the latter; anddart:ui
is available only in the Flutter SDK, notdart run
.FontWeight should subsume
wght
in FontVariation flutter/flutter#148026Has a proposed API from Hixie which would solve it; needs implementation.
The symptom in Zulip is:
text: Bold text is sometimes way bolder than intended #500
Skia / SkParagraph
Emoji small on iOS: Emoji size is off on iOS flutter/flutter#28894
(TODO upstream issue)
Padding for text spans, to let us match Zulip web's styling for code spans.
(For Zulip's pre-2023 visual design we would have needed borders too: chat thread.)
An overlapping issue: Space between text and underline flutter/flutter#30541
Flutter on Android
Symptoms in Zulip:
Login autofill doesn't work right on username/password login screen, on Android #546
(There might be another upstream issue underlying that Zulip issue thread, too.)
Flutter on iOS
Image Keyboard for other platforms flutter/flutter#132577
Pasting images from the clipboard into a message, on iOS. This is a feature request we've heard repeatedly.
Paste an image into the compose box, on iOS #925
[iOS] Permission dialog when pasting text from universal clipboard may be closed before user has had time to allow pasting flutter/flutter#121446
Copy-paste into Zulip via Handoff is glitchy; this came up in beta feedback.
ios: Copy-paste into Zulip is broken when using Handoff #1185
(TODO upstream issue)
ios: Keyboard can briefly reappear after "Share" is tapped and before the share sheet appears #591
Packages (first-party)
package:video_player
bugs on iOS:[video_player] iOS seems to downloads entire file before playing flutter/flutter#126760
First Frame of Video Once VideoPlayer Controller doesn't show in iOS Safari/Chrome flutter/flutter#139107
Because of these, for now we don't try to play video in the message list; we only play if the user opens in lightbox.
Details here: Preview inline videos directly in message list #656
Tool
Cloning from
main
is broken flutter/flutter#160626This breaks our CI (but we have a workaround):
CI broken at
flutter precache
step #1177We want to specify in our tree what Flutter version to use:
[flutter_tools] pubspec.yaml environment.flutter constraint not respected by pub get flutter/flutter#95472
Pin a precise version of Flutter #15
The design space here is a bit tricky: we want the pinned version to be automatic, but also preserve our low friction for developing upstream changes in tandem with changes in our tree.
"Lost connection to device" randomly when not doing anything in particular flutter/flutter#9707
One contributor reported this affects them very frequently if using the Android emulator on Linux (but it's fine if they use Windows instead).
(TODO upstream issue)
After upgrading a package, running its CLI with
flutter pub run
still gets the old version. Running withdart run
gets the new version, and works around the problem.For Zulip this shows up when running
pigeon
:tools/check:
pigeon
runs old/cached version of Pigeon after Pigeon dependency is upgraded #622Tool snapshot gets rebuilt on each unrelated Git commit flutter/flutter#123977
Greg, for one, finds this a pretty substantial source of friction in developing changes to the Flutter tree.
flutter_test
This is the reason many of our tests have to end with
debugNetworkImageHttpClientProvider = null;
— even tests that don't otherwise mention that variable. With this issue fixed, a line setting a variable like that one to some non-default value could be paired immediately with anaddTearDown
to reset it.Integration tests
Difficult state of
flutter_driver
vintegration_test
flutter/flutter#142021though happily it looks like there's active work going on right now.
In the future once we actually sit down to writing these, we may have more specific thoughts on what we want to see.
☂️ Integration tests to run on-device #757
The text was updated successfully, but these errors were encountered: