What changed in each release, and why. Written for anyone who wants to know what was actually wrong, not only that something was fixed.
This update fixes battery problems, makes the adhan more reliable, and dates the Hijri calendar by the moon sighting in your country. Prayer time calculations are unchanged.
The app kept refreshing the weather and the widgets over and over in the background. That used battery, and some phones then stopped the app, and the adhan with it. The refresh now runs only when it is needed.
Repairing the schedule now works again, including after turning notifications off and back on.
In Morocco, Mauritania, Nigeria, Oman, Pakistan, India, Sri Lanka and Bangladesh the month starts the day after the crescent can be seen there, so the date can differ by a day from Saudi Arabia. Other countries keep the Umm al-Qura calendar. If your country announces a different day, choose +1 day or −1 day in Settings › Display.
Some notifications still arrived after notifications were turned off in the app. Turning them off now turns off every one of them.
From another tab, the Back button now goes to the home screen before it closes the app.
On Android 12 and later, widgets now have rounded corners even on home screens that do not round them.
If the adhan screen was still open when the next adhan started, it showed the earlier prayer. It now shows the prayer that just started.
This update brings back the adhan screen with its Stop button, adds a daylight saving setting, and makes the setup reminder clearer. Prayer time calculations are unchanged.
On some phones the adhan only showed as a notification, with no easy way to stop it. The adhan screen now appears again with a Stop button. If you are using your phone at that moment, a notification with Stop and Open stays at the top of the screen instead.
When a country changes its clock, some phones take time to follow, and prayer times could be shown one hour off even though the adhan played on time. In Settings › Times, choose Automatic, +1 hour or −1 hour so the times shown in the app, the widgets and the notifications match your local time.
If a setting the adhan needs is still off, a reminder now arrives one hour after setup instead of three, and once more the next day if it is still needed. It names exactly which settings are missing, in English, Arabic and French.
1.0 (5) asked for Android 8, and Play counted 1,406 devices it could no longer serve. This release asks for Android 7 again, and makes the parts that needed 8 work on 7 instead of leaving 7 out. The rest is what Play's pre-launch report and the build's own checks found, fixed where it came from rather than silenced.
Notification channels, the qibla's vibration pattern and the hardware picture behind the shared card are Android 8 features, and the code used them without asking which Android it was running on. 1.0 (5) answered that by dropping Android 7. Each of them now checks instead: channels are created from 8, the qibla buzz uses the older vibration call on 7, and the shared card only asks for a hardware picture where one exists. Every phone that had the app can update it.
It was locked to portrait, and Play reads that lock as "needs a portrait screen": TVs, cars and some tablets could not install the app at all. The screen turns now. The compass accounts for the rotation, so the heading is still measured from the top of the screen as you hold it, and the dial fits whichever side is shorter.
With themed icons switched on, Android tints each icon from a one-colour layer the app provides. The app provided none, so it showed as a plain disc. It has one now: the crescent and mosque, cut from its own artwork.
The smallest widget lines were 9 and 10, under the 11 Android sets as the floor for readable text. They are 11 now. The room for them comes out of the margins around the dividers and the progress bar, so the widgets stay the size they were.
Play's pre-launch report named three calls Android 15 retired: the two that colour the status and navigation bars, and the old camera-cutout mode. The app still draws under the bars, but their colours now come from the theme, set per Android version, so nothing retired is called on any phone.
From Android 8.1 an app says it may appear over the lock screen through the screen itself; before that, through window flags. The adhan screen did both on every phone. It now uses the one that belongs to the phone's version, and on Android 16 it asks to start from the background in the terms 16 expects.
The help bubble under the Fajr setting opened with "tarqiya", a word that needed an explanation of its own. It now names the addition by the word someone looking for it would use, tathwib, and then says what it adds to the adhan.
The recordings, weather icons and widget backgrounds were looked up by name while the app ran, so the build had to keep every one of them blindly and could not tell when one was missing. Each is now named in the code. The build keeps what is used, drops seventeen pictures and layouts nothing used, and refuses to finish if a recording is not there.
Two things the app claimed but did not do: the call for Fajr is not the call for any other prayer, and a phone on silent should not be the one thing in the room making a noise. Plus a compass that survives a phone with no rotation sensor, and widgets that are no longer cut off by the launcher.
The line belongs inside the adhan for Fajr, after "hayya ala al-falah" and before the closing takbir. None of the bundled recordings is a Fajr recording, so with any of them it was never heard. The app now inserts it in whichever recording you already chose: the recording is paused at a point measured in its own audio — the pause the muezzin leaves after the second "hayya ala al-falah" — the line is said in the voice of the muezzin of Quba mosque, and the recording carries on. One point per recording, and the line is matched to that recording's loudness so it is the same voice at the same distance rather than a clip cutting in. Fajr only, off nowhere else, and it can be turned off under the reciter in settings.
With the setting on, the adhan still played. What it silenced was not the part that makes the noise. The call now arrives as it always did — full screen, notification, stop button — with the sound left out and a "silent mode" badge on the screen, so a missing adhan reads as a setting you chose rather than an alarm that failed.
It asked for TYPE_ROTATION_VECTOR and gave up when the phone had none, which on those phones meant a compass screen with no compass. It now falls back to the accelerometer and magnetometer directly and computes the same heading from them.
A magnetometer near a laptop, a magnetic case or a car dashboard is confidently wrong, and calibrating cannot fix it. The app now compares the measured field strength against what it should be at your location, warns when the two disagree, and withholds the buzz that says "this is the direction" — landing on a disturbed reading is worse than not landing.
The heading is measured against the top edge of the device. When the activity rotated, the dial's own "up" was no longer that edge, so the whole needle turned with the screen. The compass is portrait now, which a qibla compass has no reason not to be.
Three widgets declared a minimum height of 110dp for content that measures up to 180dp, and a launcher believes that number: it handed over a cell too short and Android clipped what did not fit — the countdown on a Pixel, more on a grid with shorter rows. Every widget now declares the height it actually needs, and cannot be dragged back down into clipping.
The widgets sized their text in sp, which scales with the phone's font setting; at the largest settings the prayer names and times grew past the space they had and pushed each other out of the widget. They are sized in dp now, on one line each, and anything too long ends in an ellipsis instead of shoving the rest away.
The sky and the clock face were drawn as full-colour bitmaps and sent to the launcher through Binder, which has a hard limit on how much it will carry. They are drawn at RGB_565 and the clock face at 320px instead of 420, which is the same picture on a home screen and comfortably inside that limit.
They were created once, in English, with whatever text the app shipped that day — and a channel that already exists keeps its old name forever. They are named from the translations now, and renamed on upgrade rather than left as they were.
The forecast was read at the hour it had been fetched, so a screen opened in the evening could describe the afternoon it was fetched in.
It started from a clear sky while the forecast loaded, so almost every launch began with a guess that was then corrected in front of you. It now opens on the last sky it actually saw, decodes the picture before the screen asks for it — off the main thread — and fades from one sky to the next.
The same town appeared several times when it was spelled several ways, two towns of one name were impossible to tell apart, and no card said which country it was in. Each place is now offered once, with its country, and two of one name are separated by what is around them. Names are translated in both directions, so a city typed in English is found in Arabic and the other way round.
Ceuta and Melilla were listed outside Morocco, and Jerusalem's country came from whatever the geocoder returned. Both are now the app's own answer.
Night began when the forecast window closed rather than when the sun went down, an overcast night was drawn as a clear one, and hail had no icon of its own. The widget and the app now draw a sky by the same rule.
Squared off, at twice the resolution, with the day, the month and the sky in it — so what leaves the app is readable where it lands.
Most of this release is one theme: two parts of the app describing the same weather differently, or a value that was written but never read.
It asked the system for an exact alarm and the system wrote down an inexact one — armed ten minutes out it came back with a seven-minute window, so the reminder could land any time inside it, or not at all in Doze. It now uses the same alarm-clock tier the adhan uses.
The notification shown while the adhan plays sat on a channel whose own sound was the adhan. On phones that honour that — Samsung does — you heard it twice, a fraction of a second apart. That notification is silent now; the sounding channel remains only for when playback is impossible.
Weather code 1 was grouped with "partly cloudy" in the icon map, so the words said one thing and the picture another.
Near sunrise and sunset the background ignored the weather entirely. A clear sky should not lose those two moments — a thunderstorm should not lose to them either.
Image loading kept the first picture it ever drew, so the icon only changed after the screen was rebuilt — which is what switching tabs and coming back does.
The app had a function for handing the widget its icon, temperature and sky. It
was never called. The widget also only accepted a background whose name ended in
.png, and every sky in the app is a .webp.
"in" and "remaining" were written into the layout in English and never replaced, so an Arabic widget still read them in English.
A card with no forecast yet fell back to weather code 0 — clear sky — so a list opened as a row of suns and corrected itself one by one. Forecasts also load together now instead of one after another.
Choosing Toronto could leave the previous city's sunny reading on screen under Toronto's name until the new one arrived.
The prayer page recalculated on each read; the home card read a stored value that nothing refreshed. The same app disagreed with itself about when Asr was.
In the two-column grid the high and low temperatures wrapped across three lines and stretched the card. They are one line now.
Store metadata, and the build settings Play's optimization report asks for.
Sound names are written with hyphens and the files on disk use underscores, so the test button built a path that could never resolve — and reported no error.
The setting asked for a link to an mp3; it now opens the system file picker, and keeps read access so the alarm can still open the file weeks later.
Through the vibrator rather than touch feedback, so it works with the phone's touch-vibration setting switched off.
R8 was running with optimization disabled by the default configuration file. Enabling it, along with repackaging and precise resource shrinking, cut the app and sped up a cold start.