30 Jul 2026
Planet Mozilla
Thunderbird Blog: Mobile Progress Report: July 2026

Thunderbird Mobile is moving forward with large steps on both platforms we support. On iOS, we're working on the very foundation of a new app-our first built from scratch-and continuing to make progress in bringing the Thunderbird for iOS app to the App Store. For Android, it's a matter of updating what we have in place to make it easier to use, more reliable, and more efficient. Both platforms are rushing forward to deliver exactly what our users expect from us.
iOS
Starting off with iOS, we've focused on a few vital components. This includes the compose screen, account drawer, and OAuth, which allows users to add their accounts using the sign in page of their email provider. For the compose view, our HTML rich text editor is coming along nicely. We forked a WYSIWYG repository, Infomaniak's "swift-rich-html-editor," to create a rich text view for both composing and editing. We also added view headers, fixed a bug where we weren't applying links properly to the DOM, and began porting a proof of concept over to the main app code. This will eventually become the compose view for the final app. We also started the technical design phase for the new account drawer design.
Android
The Android team has been busy looking into drastic changes to the app to make it more user-friendly, faster, and more reliable. We're directly targeting feedback we've received. We're also continuing work on developer-friendly features to make contributing to the project easier and faster.
Database Rewrite
We've started our large database refactor with a tentative selection of Room. We chose this for a number of reasons, including performance, easier writing of data entities, and the ease of introduction for new engineers. Room is common in Android development, which means we can more quickly onboard new contributors with it. We'll have an RFC out by the end of August detailing how we'll implement the new database.
So why are we rewriting the database? It's the source of a number of issues with the app. Everything runs through it, from fetching locally-stored drafts, triggering notifications for new messages, syncing, reliability, and even power consumption. By updating the database, we make it possible to drastically improve everything in the app it touches, which is to say, everything.
Feature Flags
Developers will also be happy to know we're improving the feature flag process. We've completed an RFC for a new schema and began work on the technical documentation. We're looking to develop a local feature flag library that will use OpenFeature and eventually enable remote feature flag management, though that's not our short term goal. For now, we want to make it easier to create and modify feature flags across build types, without needing to edit so many files to do so. In the future, however, this will make it easier for us to roll out releases, updated features, and even rolling back features that may have issues without having to wait for the app release and approval cycle. It allows us to make a more reliable app with faster feature implementations.
Notifications
Finally, we've heard that our users do not like how we handle notifications. We've been investigating reported bugs and working to find a path forward that allows us to use previous work to improve notifications.
We're also looking into a key complaint: setting up notifications and "push" (IMAP Idle) notifications is just too difficult. We don't make it easy enough for users to set up their notifications and ensure they get email notifications when their email server reports updates. Users have made it clear: that has to change.
We're currently discussing options with design to consolidate some settings, bring other settings to the forefront, and will be working next month to activate "push" notifications by default for new accounts that support it.
We know notifications are a cause of headaches, even for those who understand how to use the app's existing features, so we want to address them as quickly as possible. We'll also focus on identifying issues and helping our users report problems with notifications in detail with user-enabled and anonymous logging that can help us see why a notification did not show for a new email if they want to help us work through it.
Bolt Design Library
Android has also begun the work of moving our Bolt design library out of the app to serve as a standalone library. Currently, we've pulled out the foundation layer for mobile that includes fonts, colors, spacing, and other repeated values. Eventually we'll use WebASM to render the design system and allow contributions directly to the design system, without needing to touch the Android app, potentially allowing it to be platform independent.
Community
Two crashes were caught in the beta, including a crash related to relative date formats and another to webviews. We want to thank our amazing community of beta testers who helped us catch these before they made it to a full release. Our community contributors have also directly fixed bugs, like issues scrolling horizontally in message views, fixing a button that couldn't be seen properly in dark mode, fixing an issue with the wrong number of messages in confirmation dialogs, and updates to our historical changelog data to be in a more readable and usable format. We can't thank our community of testers, contributors, and users enough for the work they put in helping us make Thunderbird a better email client.
We couldn't do what we do without you, and, as always, thank you for being part of the Thunderbird community. Here's to another month making the best email client we can, together!
- Danielle G. (she/her), Senior Android Engineer
The post Mobile Progress Report: July 2026 appeared first on The Thunderbird Blog.
30 Jul 2026 7:00pm GMT
29 Jul 2026
Planet Mozilla
About:Community: Community Roundup: Project Nova, Tab Groups & more
Firefox keeps evolving, and the community continues to play a big part in shaping what's next.
In this edition, you can get an early look at Project Nova through our latest foxfooding opportunity, explore Tab Groups on Android, join the conversation on Mozilla's latest browser choice research, and meet an Outreachy contributor whose journey reminds us why open source thrives through collaboration.
Get ready to dive in!
Hot from the oven: Join Project Nova foxfooding
We teased it in the last edition, and now it's here. Project Nova has finally arrived on Firefox Nightly, and you're invited to be an early tester! Get a look at Firefox's refreshed design as we put the finishing touches on the experience ahead of its broader release later this year. If you're curious about what's coming next, this is your chance to try it out, share your feedback, and help shape the final product.
Monthly Community Call today!
Want to ask questions directly to the people working on Firefox? Join us for today's Monthly Community Call, where we'll discuss Project Nova and Firefox performance feature with members of the teams working on these projects. Join the call today, July 29, 2026, at 5:00 PM UTC, and bring your questions!
Tab groups arrives on Android
You've been calling out for tab group functionality on Firefox mobile and now Tab Groups have officially arrived on Firefox for Android! Tab Groups make it easier to organize related tabs into color-coded groups for work, travel, shopping, research, or whatever you're browsing. Give it a try, and if you have ideas for how it could be even better, let us know on Mozilla Connect.
From the Reddit Community
Mozilla recently shared new independent research examining how browser choice is shaped by the design of operating systems. The report explores the obstacles users can encounter when downloading, setting, or continuing to use their preferred browser, and argues that people should be able to choose their browser without unnecessary friction. Read the report, join the discussion, and share your perspective!
And of course, thanks to you for choosing Firefox!
Community spotlight
Every contributor starts somewhere. In a recent blog post, Ananya Shree Sharma reflects on her journey through the Outreachy internship with Firefox. From navigating a large open source codebase for the first time to collaborating with mentors, learning new skills, and shipping meaningful improvements. Her story is a reminder that open source is as much about learning, mentorship, and community as it is about writing code. If you've ever wondered what it feels like to contribute to Firefox, Ananya's reflections offer an inspiring look at the experience and the people who make it possible.
P.S.
Enjoyed these updates? Subscribe to the Mozilla Community Newsletter and get the latest updates delivered straight to your inbox.
29 Jul 2026 9:04am GMT
This Week In Rust: This Week in Rust 662
Hello and welcome to another issue of This Week in Rust! Rust is a programming language empowering everyone to build reliable and efficient software. This is a weekly summary of its progress and community. Want something mentioned? Tag us at @thisweekinrust.bsky.social on Bluesky or @ThisWeekinRust on mastodon.social, or send us a pull request. Want to get involved? We love contributions.
This Week in Rust is openly developed on GitHub and archives can be viewed at this-week-in-rust.org. If you find any errors in this week's issue, please submit a PR.
Want TWIR in your inbox? Subscribe here.
Updates from Rust Community
Newsletters
Project/Tooling Updates
- afrim 0.7.0: a generic input method framework
- Sharing Rust build work across Cargo worktrees with cargo-reapi
- exiftool-rs 0.7.0: localizing ExifTool's PrintConv values, not just its labels
- Announcing SeaORM 2.0
- kobe 0.37.0: easier to deploy and install
- kache 0.12.0: pluggable remotes, smarter GC, sharper diagnostics
- Progress toward compiling Linux with gccrs
- flodl 0.7.0: one dashboard view, repeated at every level
- samkhya 1.2.1 - the join-cardinality ceiling becomes provable
- BrewFS: a Rust and JuiceFS-like distributed filesystem
Observations/Thoughts
- Improving std::simd::swizzle_dyn
- Query cycles: A compiler murder mystery
- GDPatch: a versatile Godot mod loader
- Memory Safety Absolutists
- C++ to Rust Migration
- High-Performance Flat 2D Arrays in Rust with SIMD, L1 Cache
- Building Java-Rust Microservices with TeaQL: Models, Events, and Audit Intent
- How We Cut a Trading Bot's Reaction Time from ~2 Seconds to Milliseconds - by Moving Only the Hot Path to Rust
- ESP32 Server: Distributing HTTP/2 streams over TLS
- [video] Rust Berlin Talks · 23/07/2026
Rust Walkthroughs
- No Tokens Yet Does Not Mean a Rust LLM Stream Is Safe to Retry
- [series] Rama 101.2: Core Concepts
- [video] [series] What's Inside Axum?
Crate of the Week
This week's crate is cargo-efmt, a drop-in replacement for cargo fmt to support .editorconfig.
Thanks to kleines Filmröllchen for the self-suggestion!
Please submit your suggestions and votes for next week!
Calls for Testing
An important step for RFC implementation is for people to experiment with the implementation and give feedback, especially before stabilization.
If you are a feature implementer and would like your RFC to appear in this list, add a call-for-testing label to your RFC along with a comment providing testing instructions and/or guidance on which aspect(s) of the feature need testing.
No calls for testing were issued this week by Rust, Cargo, Rustup or Rust language RFCs.
Let us know if you would like your feature to be tracked as a part of this list.
Call for Participation; projects and speakers
CFP - Projects
Always wanted to contribute to open-source projects but did not know where to start? Every week we highlight some tasks from the Rust community for you to pick and get started!
Some of these tasks may also have mentors available, visit the task page for more information.
- No Calls for participation were submitted this week.
If you are a Rust project owner and are looking for contributors, please submit tasks here or through a PR to TWiR or by reaching out on Bluesky or Mastodon!
CFP - Events
Are you a new or experienced speaker looking for a place to share something cool? This section highlights events that are being planned and are accepting submissions to join their event as a speaker.
- No Calls for papers or presentations were submitted this week.
If you are an event organizer hoping to expand the reach of your event, please submit a link to the website through a PR to TWiR or by reaching out on Bluesky or Mastodon!
Updates from the Rust Project
570 pull requests were merged in the last week
Compiler
- apply RemoveNoopLandingPads post-monomorphization
- closures inherit
#[optimize]from the enclosing function by default - fix
boolcalling convention for aarch64, etc - optimize
escape_string_symbol() proc_macro: Fixcfg_attrinner attrs in file modules- resolve: more preperation work for parallelizing the import resolution loop
- stabilize c-variadic function definitions
Library
- constify
vec![1, 2, 3]macro - core: implement
Rngfor references - define a
Simdtype inminicore - implement
CovariantUnsafeCell - implement
str::copy_from_str - iter: extend
step_byspecialization to coverStepBy<RangeIter<{integer}>> - move
std::io::bufferedtoalloc::io - num: improve error messages for
TryFromIntError - str: add ASCII fast path to
word_to_titlecase - switch implementations of
thread_local!for WASI
Cargo
- add haiku's dylib path
diag: bound transitive unused dependency traversalgit: Hide git fetch output without progressgit: Suggest libgit2 if git-cli failstest: gate trim-paths tests on split debuginfo supporttoml: warn on hyphenated lint names and duplicates- allow setting
-Zembed-metadatavalue from the config - enable build-dir layout v2 on nightly by default
- zsh completion: Add
-pand--packageflags forcargo add
Rustfmt
- allow file not found errors for external mods annotated with
#[my_macro] - discover modules via
cfg_select!
Rustdoc
- add paths for linked associated items
- Retrieve
cfg_attrinformation for derived impls fordoc_cfgfeature - only build extern trait impls if needed
- only inline impls for local primitives
Clippy
- add
EULER_GAMMAandGOLDEN_RATIOtoapprox_constant - add
assert_is_emptylint - apply safety comment to compound assignment statement
blocks_in_conditions: Don't lint if the block creates temporarie…- call
in_external_macroafter running other checks in various places - do not trigger
clippy::exitwhen expression comes from an external macro duration_suboptimal_units: print the complete method name in the suggestion- extend
branches_sharing_codeto match arms with a shared tail min_ident_charslint short idents even if follows trait namingmultiple_unsafe_ops_per_block: false positive in with taking an reference to a static, but not reading/writing it- fix
four_forward_slashesfalse positive on inner doc comments lint-page: add accessible labels to filters- new lint:
nonnull_unchecked_on_box_ptr - perf: avoid per-call type and path work in
unnecessary_mut_passed - perf: find tab groups in doc comments without allocating
- rewrite
EndianByteslint pass
Rust-Analyzer
- add diagnostic for
structpatterns which don't specify sub-patterns for its fields - add parentheses for invert general expression
- attach db on worker threads in parallel analysis-stats inference
- change unsupported toolchain version to match reality
- discover protocol should only parse stdout
- do not detect
#[rust_analyzer]as#[rust_analyzer::rust_fixture] - don't offer
replace_qualified_name_with_useon an unqualified path - don't panic on a qualified path whose trait is not a trait
- don't pick a discriminant type larger than typeck's
- fix stale lock file
- fix
.zip(None)call - give
impl_trait_with_diagnosticsa cycle result - make analysis-stats progress bar Unicode-safe
merge_importspanic on invalid paths- panic on macro-defined structs with unknown fields
- prefer
allocoverstdpaths whenpreferNoStdis set - record obligation chain for unimplemented trait diagnostics and show it
- replace detach with delete for
ast::IdentPat - resolve path on all namespace on
resolve_path - respect
references.exclude[Tests/Imports]in references lens - scoped lazy priming
- support inactive-code diagnostic in macros
- uses bool instead pat ty in guard
Rust Compiler Performance Triage
Several large improvements landed in the past week:
- rustdoc is on average roughly 16% faster across all of our doc benchmarks:
- rustdoc: Only inline impls for local primitives, 7% faster doc builds
- rustdoc: Only synthesize auto/blanket impls for documented items, another 7% faster doc builds
- rustdoc: Only build extern trait impls if needed, another 10% faster doc builds
- Early removal of no-op panic handling in debug builds. This speeds up Cargo by ~4% in cycle count.
- Optimize escape_string_symbol() sped up large
include_bytes!/include_str!through changes to string escaping, avoiding a regression in upcoming LLVM 23 upgrade.
Great to see so many improvements!
Triage done by @simulacrum. Revision range: d527bc9b..ad0c9dce
Approved RFCs
Changes to Rust follow the Rust RFC (request for comments) process. These are the RFCs that were approved for implementation this week:
- No RFCs were approved this week.
Final Comment Period
Every week, the team announces the 'final comment period' for RFCs and key PRs which are reaching a decision. Express your opinions now.
Tracking Issues & PRs
- Shallow resolve ty and const vars to their root vars, attempt 2
- Ensure inferred let pattern types are well-formed
- stabilize
c_variadic_naked_functions - lint against repeated repr attributes
- Stabilize passing 128-bit integers via vector registers with
asm!on x86 - Add new
invalid_markdown_tablerustdoc lint - allocations: document that they can be read-only
- allocations are allowed to grow (but not shrink)
- Tracking Issue for
bool::toggle - Tracking Issue for const_btree_len
- Wasm proc macro support
-
Optimize repr(Rust) enums by omitting tags in more cases involving uninhabited variants.
- Proposal for Adapt Stack Protector for Rust
- feat(profile): Add built-in profile debug
- feat(toml): allow overriding inherited default-features in 2024
No Items entered Final Comment Period this week for Language Reference, Language Team, Leadership Council or Unsafe Code Guidelines. Let us know if you would like your PRs, Tracking Issues or RFCs to be tracked as a part of this list.
New and Updated RFCs
Upcoming Events
Rusty Events between 2026-07-29 - 2026-08-26 🦀
Virtual
- 2026-07-30 | Virtual (Berlin, DE) | Rust Berlin
- 2026-07-31 | Virtual (Girona, ES) | Rust Girona
- 2026-08-01 | Virtual (Kampala, UG) | Rust Circle Meetup
- 2026-08-02 | Virtual (Dallas, TX, US) | Dallas Rust User Meetup
- 2026-08-03 | Virtual (Global) | Rust Maven
- 2026-08-04 | Virtual (London, UK) | Women in Rust
- 2026-08-04 | Virtual (Tel Aviv-yafo, IL) | Rust 🦀 TLV
- 2026-08-05 | Virtual (Cardiff, UK) | Rust and C++ Cardiff
- 2026-08-05 | Virtual (Indianapolis, IN, US) | Indy Rust
- 2026-08-07 | Virtual (Girona, ES) | Rust Girona
- 2026-08-11 | Virtual (Dallas, TX, US) | Dallas Rust User Meetup
- 2026-08-13 | Virtual (Berlin, DE) | Rust Berlin
- 2026-08-13 | Virtual (Nürnberg, DE) | Rust Nuremberg
- 2026-08-14 | Virtual (Girona, ES) | Rust Girona
- 2026-08-18 | Virtual (Washington, DC, US) | Rust DC
- 2026-08-19 | Hybrid (Vancouver, BC, CA) | Vancouver Rust
- 2026-08-20 | Hybrid (Seattle, WA, US) | Seattle Rust User Group
- 2026-08-20 | Virtual (Charlottesville, VA, US) | Charlottesville Rust Meetup
- 2026-08-21 | Virtual (Girona, ES) | Rust Girona
- 2026-08-25 | Virtual (Dallas, TX, US) | Dallas Rust User Meetup
Africa
- 2026-08-11 | Johannesburg, ZA | Johannesburg Rust Meetup
Asia
- 2026-08-22 | Bangalore, IN | Rust Bangalore
- 2026-08-22 | Delhi, IN | Rust Delhi
- 2026-08-22 | Noida, IN | SciPy India
Europe
- 2026-07-29 | Poland, PL | Rust Poland
- 2026-07-30 | Copenhagen, DK | Copenhagen Rust Community
- 2026-07-30 | Manchester, UK | Rust Manchester
- 2026-08-06 | Oxford, UK | Oxford ACCU/Rust Meetup.
- 2026-08-18 | Aarhus, DK | Rust Aarhus
- 2026-08-18 | Leipzig, DE | Rust - Modern Systems Programming in Leipzig
- 2026-08-20 | Frankfurt, DE | Rust Rhein-Main
North America
- 2026-07-30 | Atlanta, GA, US | Rust Atlanta
- 2026-08-01 | Boston, MA, US | Boston Rust Meetup
- 2026-08-04 | Boston, MA, US | Boston Rust Meetup
- 2026-08-06 | Mountain View, CA, US | Hacker Dojo
- 2026-08-06 | Saint Louis, MO, US | STL Rust
- 2026-08-13 | Lehi, UT, US | Utah Rust
- 2026-08-13 | San Diego, CA, US | San Diego Rust
- 2026-08-15 | San Francisco, CA, US | Flower
- 2026-08-18 | San Francisco, CA, US | San Francisco Rust Study Group
- 2026-08-19 | Hybrid (Vancouver, BC, CA) | Vancouver Rust
- 2026-08-19 | San Francisco, CA, US | Rust Bay Area
- 2026-08-20 | Hybrid (Seattle, WA, US) | Seattle Rust User Group
- 2026-08-26 | Austin, TX, US | Rust ATX
Oceania
- 2026-07-30 | Melbourne, AU | Rust Melbourne
South America
- 2026-08-08 | São Paulo, SP | Rust-SP
If you are running a Rust event please add it to the calendar to get it mentioned here. Please remember to add a link to the event too. Email the Rust Community Team for access.
Jobs
Please see the latest Who's Hiring thread on r/rust
Quote of the Week
So let's talk about what the process has looked like for Netstack3. For 11 months, the team has been ramping up a dogfooding program. At peak, that program has seen about 60 devices running nearly 24/7 in developers' homes.
Again, if this were any other netstack, we would have expected to uncover a giant mountain of bugs in that time. So, over the past year, how many bugs did the team uncover in the field?
Three.
- Josh Liebow-Feeser on his blog
llogiq again has no one to thank for a suggestion, so he is thankful to himself for finding this quote instead.
Please submit quotes and vote for next week!
This Week in Rust is edited by:
- nellshamrell
- llogiq
- ericseppanen
- extrawurst
- U007D
- mariannegoldin
- bdillo
- opeolluwa
- bnchi
- KannanPalani57
- tzilist
Email list hosting is sponsored by The Rust Foundation
29 Jul 2026 4:00am GMT
