Skip to content

[Brand design updates - Core App Components] Add rebrand app icons and refresh the icon picker - #9385

Draft
mikescamell wants to merge 6 commits into
developfrom
feature/mikescamell/rebrand-app-icons-internal
Draft

[Brand design updates - Core App Components] Add rebrand app icons and refresh the icon picker#9385
mikescamell wants to merge 6 commits into
developfrom
feature/mikescamell/rebrand-app-icons-internal

Conversation

@mikescamell

@mikescamell mikescamell commented Aug 4, 2026

Copy link
Copy Markdown
Contributor

Task/Issue URL: https://app.asana.com/1/137249556945/project/488551667048375/task/1216795433235473
Tech Design URL (if applicable):
API Proposals URL(s) (if applicable): None

Description

Adds the 2026 rebrand app icons and tidies up the icon picker.

Internal flavour only:

  • New launcher icon assets for every colour, round and square, plus monochrome and silhouette variants
  • New app shortcut icons
  • Change app icon moves to the top of the Appearance screen, gated on the new appIcon flag. With the flag off the screen is unchanged from develop

All build flavours (internal and release):

  • Icon picker fits as many columns as the width allows, keeping at least 24dp between icons and wrapping to a new line when there is not enough room
  • Selection ring redrawn as a rounded outline that follows the launcher icon mask
  • Picker icon size reduced from 75dp to 60dp
  • Gold now uses the round gold asset on the settings screen, matching every other colour

Steps to test this PR

Designs

It's worth installing the prod version of this branch and comparing side by side

  • To ensure prod still shows the old icons
  • To more easily compare changes

If possible, test on a couple of different manufacturers, on different Android versions.

Rebrand icons apply on update (internal build)

  • Install an internal build from before this branch
  • Update to an internal build of this branch without uninstalling
  • Confirm the launcher icon changes to the new rebrand icon
  • Go to Settings > Appearance > Change app icon, tap each colour and apply it, and confirm the launcher icon changes to the new version of that colour
  • Confirm the icon shown on the Appearance screen matches the applied icon
  • Compare against designs
  • Note purple in designs has not been updated to Blossom70, which is the value it should be

Change app icon sits at the top (internal build)

  • On the Appearance screen, Change app icon is the first item, above Theme
  • Confirm the gap below the toolbar looks the same as it did when Theme was the first item

Icon picker layout (test on both internal and release builds)

  • Open Change app icon and confirm the icons spread across the full width, with at least 24dp between them, wrapping to a new line when there is not enough room
  • Confirm the selection ring follows the icon shape and sits around the currently applied icon
  • Confirm the layout looks correct with the existing icons on release, and with the new icons on internal

Nothing internal-only reaches release

  • Install the release build: TODO add link
  • Confirm the launcher icon artwork is the existing artwork, with none of the new rebrand assets
  • Confirm the Appearance screen order is unchanged: Theme, then night mode, then Change app icon

UI changes

See comment here for before/after


Note

Medium Risk
Internal builds swap launcher component artwork and shortcuts (user-visible on update); release risk is mostly UI layout. Icon switching still uses activity aliases—verify masking and pinned shortcuts across OEMs.

Overview
Introduces 2026 rebrand launcher artwork on the internal build: shared adaptive-icon foregrounds (square/round), monochrome and silhouette variants, per-color backgrounds, and updated app shortcut icons. Release keeps existing launcher assets; only the picker/layout behavior ships there.

Change app icon on Appearance moves above Theme when appBrandDesignUpdate.appIcon() is enabled (runtime reorder in AppearanceActivity, default internal-only).

The icon picker is reworked for all flavours: icons are 64dp (was 75dp), columns are computed from width with ≥24dp gaps (AppIconSpacingDecoration + AppIconCellMetrics), selection uses AppIconOutlineDrawable (launcher mask) instead of a fixed oval border, and AppIcon preview resources point at non-_round mipmaps for consistency with gold and the new art.

Reviewed by Cursor Bugbot for commit 3569cd9. Bugbot is set up for automated code reviews on this repo. Configure here.

@mikescamell mikescamell changed the title Add 2026 rebrand app icons and refresh the icon picker [Brand design updates - Core App Components] Add rebrand app icons and refresh the icon picker Aug 4, 2026
@mikescamell
mikescamell force-pushed the feature/mikescamell/rebrand-app-icons-internal branch from cda1e15 to 2858605 Compare August 4, 2026 10:19
Overlay the rebranded launcher icons, shortcut icons and launcher
background colours via app/src/internal/res so they apply to internal
builds only. Play and F-Droid builds keep the existing icons.
The picker draws the round launcher mipmaps, which are adaptive icons, so
every tile is clipped to whatever mask the launcher applies. The old
selector was a fixed oval sized for a circle, so on masks that reach
further out at the diagonals, Samsung's squircle among them, the artwork
broke out through the ring.

AppIconOutlineDrawable strokes the path returned by
AdaptiveIconDrawable.getIconMask(), so the ring takes the launcher's own
shape. It is stateful and set as the tile's foreground, so it paints only
when selected.

The tile grows from 75dp to 80dp to leave room for a 2dp gap and a 2dp
stroke around the 72dp icon.
Flagged in case anyone raises concerns about it being at the top of the screen.
@mikescamell
mikescamell force-pushed the feature/mikescamell/rebrand-app-icons-internal branch from 2858605 to 12eecfe Compare August 4, 2026 14:49
Comment thread app/src/main/java/com/duckduckgo/app/icon/ui/AppIconsAdapter.kt
The grid was pinned to four columns. At the new 80dp tile size four
columns need 440dp of width, which portrait phones only reach at smaller
display size settings, so at the default the icons were left crowded or
clipped.

The span count is now derived from the measured width, fitting as many
columns as will hold at least 24dp between icons, so the count follows
whatever density and display size the user has set rather than being
assumed. AppIconSpacingDecoration shares the leftover width equally
between the columns so each row sits flush against the list's 24dp side
margins, and rows are separated by the same 24dp.

This replaces ItemOffsetDecoration, which only ever applied a vertical
offset and left the horizontal gaps to fall out of the cell width.
@mikescamell
mikescamell force-pushed the feature/mikescamell/rebrand-app-icons-internal branch from 12eecfe to d3ec4cc Compare August 4, 2026 15:31
@mikescamell
mikescamell force-pushed the feature/mikescamell/rebrand-app-icons-internal branch from d3ec4cc to 0d375f5 Compare August 4, 2026 16:05

@cursor cursor Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

There are 2 total unresolved issues (including 1 from previous review).

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, have a team admin enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 0d375f5. Configure here.

It's more representative of the app icon the user will get on their homescreen, as most launchers will not pick round
@mikescamell
mikescamell force-pushed the feature/mikescamell/rebrand-app-icons-internal branch from 0d375f5 to 3569cd9 Compare August 5, 2026 07:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant