It’s been just over 3 months since we announced the Zapp! public beta, and since then Zapp! has been a great success; being used for live coding competitions during Flutter Vikings, running online competitions, workshops and even embedded in popular blog posts. We’ve had some great feedback and bug reporting too!
What’s new?
So, what’s new with Zapp!?
Flutter 3.3.9
Whilst Zapp! is still in beta, we’re still figuring out some of the complexities which come with running everything-Dart in a browser. One of those complexities is handling Flutter updates – things change, meaning we need to adapt how Zapp! works internally alongside the Flutter releases. With the December update, Zapp! is now running on Flutter 3.3.9.
In the future, we’ll aim for more regular releases, however initially we want to keep pressing forwards with features and bug fixes, with Flutter releases being a secondary priority.
Compile time improvements
Ensuring Zapp! is fast is a top priority for us. With Zapp! running Dart compiler and analyzer completely in your browser we’re always looking for ways to improve the performance of these tools. In this release, we’ve made some drastic improvements to our browser based Dart compiler:
Chip | First run (old) | First Run (new) | Secondary run (old) | Secondary run (new) |
Intel | 23s | 9.5s | 9.7s | 1.4s |
Apple Sillicon | 2.9s | 1.2s | 1047ms | 116ms |
Further improvements to the speed of running your Zapp! project are planned.
Canvaskit Renderer
Zapp! originally only supported the HTML renderer due to pending work for assets support. With this release Zapp! now uses the ‘auto’ renderer option (the same as default Flutter apps). This option chooses the HTML renderer when your app is running in a mobile browser, and CanvasKit renderer when your app is running in a desktop browser. You can specify the runtime configuration to override the web renderer at runtime.
Dart-only mode
Zapp! now comes with an ultra-fast Dart-only mode. This allows you to quickly try out some Dart code or Dart packages with near instant compilation & code analysis. Check it out here.
Note: Dart-only mode not support dart:io/server things currently, though this is something we’re experimenting with to support in future.
Profile page
We’ve added a basic profile page for users who are logged in, allowing you see your projects and quickly navigate to them.
This is a basic implementation for now – we’ll soon start adding more features, improving the UI and more.
Editing project info
We noticed a lot of users don’t edit the project title & description when sharing. We’ve moved the project info area to be more visible in the editor:
Asset corruption fix
When forking a project with assets, the assets were often being corrupted and thus unusable in your application. We finally managed to track this bug down and fix it – unfortunately projects with assets which are already corrupt are not salvageable. You’ll need to re-upload them and rebuild your project (sorry about that!).
Analyzer fixes
We’ve fixed a couple of nasty bugs which have been causing users some annoyances:
- “Argument type ‘Material Color’ can’t be assigned to the parameter type ‘Color'” #78
- “The method ‘X’ isn’t defined…” #92
Viewable Assets
When viewing image assets in the editor, you’ll now see the actual image rather than an asset icon. In the future we’ll add support for different asset types.
Dependency List
We’ve added a basic dependency list to projects, allowing you to quickly view what dependencies and versions are installed:
In the future, we’ll expand this area to support features such as searching pub.dev and installing packages and upgrading dependencies automatically.
View stats
The total number of project views can now be seen from your profile page or the editor. We’re working on adding more statistics in future updates.