Dark Hours Rejected From the App Store
[Update: See the retraction below.]
On the web, if I build something that works within the standards, it works. Whether people use it is up to them. On iOS, there is another question entirely: whether Apple decides it should exist.
[…]
In the past couple of years I’ve built three apps that were rejected from the App Store on various grounds.
[…]
A while ago I tried to submit an iOS app for Dark Hours, my astronomy website for normal people. It was rejected on the grounds that it was astrology.
[…]
I see countless ChatGPT wrappers with nearly identical icons and eye-watering subscriptions. I see astronomy apps requesting permissions that have nothing to do with looking at the night sky. My kids download games that interrupt play every few minutes to advertise the developer’s other subscription apps, each with their own $20–50 yearly plans.
Via John Gruber (Mastodon, Hacker News):
But if you actually look at Godier’s Dark Hours, for even just a few seconds, it is instantly obvious that it pertains to the science of astronomy and has absolutely nothing — zero, zilch, nada — to do with astrology.
[…]
Godier proceeded through a series of escalations up to the App Review Board and the Review Board responded that they determined the original rejection was valid because, I shit you not, “We understand that the app includes a live tarot reading feature.” Which isn’t even about astrology. It’s straight out of Kafka.
[…]
This isn’t just contrary to the benefit of developers, like Godier. It’s obviously contrary to the benefit of Apple itself, which should not just accept an app like Dark Hours, but celebrate it as an exemplar of the platform.
Mistakes happen. But in a functioning system mistakes get corrected, and mistakes as obvious as this one get corrected almost instantly and include a quick apology for the conflation. The App Store is not a functioning system.
Previously:
- Chrome Browser Default at the Top of the Mac App Store
- Apps for YouTube℠™®•!
- Struck Rejected From the App Store
Update (2026-08-10): John Gruber:
To the best of my recollection, this is the first post I’ve retracted in the 24 years I’ve been writing Daring Fireball. I hope it’s the last. I was misled, both overtly and through omissions[…]
[…]
The truth is, the app, as originally submitted by Godier to the App Store (under the name “Asterly”, not “Dark Hours”), was entirely dedicated to astrology, not astronomy, and did in fact include a “Tarot card of the day” feature amongst other occultist horseshit.
[…]
I wrongly took Godier at his word, both in his public blog post and in private iMessage correspondence yesterday, that the rejection wasn’t just merely debatable, but completely and rather preposterously ungrounded. Whether Godier ever submitted a build of “Asterly” to the App Store that contained no occult horseshit and only the hard-science astronomy features that were present in his “Dark Hours” website that was available for the last week, I don’t know. But I have no reason to believe that he did.
[…]
In an uncomfortable exchange between Beher and Godier on Bluesky, Beher pointed out that Godier’s Dark Hours had the same bug as Beher’s that routed people to “random fields in Mexico”. Earlier today, Godier took his web app down and redirected his
darkhours.iodomain to Beher’sdarkhours.app.
I’m really unhappy about this, both for my role in spreading a false story and because I think it will hurt the cause of reforming App Review. I know there are many crazy rejections and have experienced some first-hand. This story was believable because of that well-known history and because Godier didn’t seem like a nobody trying to get attention—he was the developer of another highly regarded app. But now people are going to point to true developer stories and accuse them of being fakes, too.
Terry Godier has just published a so-called “Mea Culpa” blaming Claude for cloning an open source app and denying foreknowledge.
There’s no mention of or apology for how Godier deceived Gruber and the world about the astronomy/astrology App Store submission/rejection.
The blog post essentially confirms that this person cannot be trusted.
Update (2026-08-11): Colin Cornaby:
BOTH projects were generated using Claude. So you have two people - both generating the same app from the same training data - having a public throw down over who copied who.
[…]
The “original” developer does claim to know how to code - which wasn’t clear from my research. That still doesn’t necessarily mean the original app was the source of the training data. They both may be a result of the same training data.
Holy shit, so the “Claude plagiarised an app” story is actually “Claude produced the same app twice when prompted to do so by two separate developers” 😅
It’s not clear to me exactly how much each developer relied on Claude or which training data was used, but I wanted to note this angle of the story.
Update (2026-08-14): Rosyna Keller:
With all this talk of an astrology app being rejected by App Store review I’m reminded there’s still a flat Earth/astrology app on the App Store that actively leaks the location of all of its users.
51 Comments RSS · Twitter · Mastodon
My company had an app rejected because it didn't do anything you couldn't do on the company website.
It was for a bank.
I agree with that reason to reject. All bank apps do is package up their (terrible) websites into "apps" and call it a day. I don't want that garbage on the app store, because, like you said, you can just go to the website and save as "app" on the desktop.
I do like having bank apps because they can unlock with Face ID, scan checks, send notifications, etc. I think it’s a better experience than using the mobile site. And, yes, they should either all be allowed or none.
I'd go even more extreme; not just web wrappers but shit using React Native, Flutter, MAUI and whatever shit they use to make shovelware these days. Every one of these is a terrible user experience from developers that don't care about user experience. If the App Store is supposed quality filter, none of that crap should be there.
Already mentioned by @Michael_Tsai, but maybe a first-hand example could be of help....
I was treasurer for the neighborhood HOA (96 households) a few years back. After signing some bank papers and downloading their app, I made *exactly* one visit to a branch office - to cash about 4 checks. The remainder? I used my phone to scan (front and back, properly stamped for endorsement) within 24 hours of receiving any checks. Well, except one because they left *cash* in my home mailbox. (Guess, some people cannot follow simply directions.) This happened the day before Easter. When I went to a family gathering, my nephew had a great suggestion. Pocket the cash and write a *second* check (from me) for the dues. Scanned it in (clearly marked for the home it is for) when I came home from the family gathering. I don't know of any banking web sites that can do that.
"not just web wrappers but shit using React Native, Flutter, MAUI and whatever shit they use to make shovelware these days"
That's all true, *except* that the App Store is a monopoly. If Apple had really high quality requirements and app devs had to meet them, and if they didn't meet them, they'd just have to put their apps on their own website or something, that would be great. But that's not what Apple built.
Either you're in the App Store, or you don't exist on iOS.
Apple put itself in a position where it's telling banks that they just can't have iPhone apps at all, simply because Apple doesn't like their iPhone apps. Screw the bank, screw the bank's customers. That's insanity.
> "not just web wrappers but shit using React Native, Flutter, MAUI and whatever shit they use to make shovelware these days"
But now that Apple is pushing SwiftUI...is it really better than all these other frameworks?
Having an App Store app isn't just about what you can or can't do from the web vs native it also is about marketing/discoverability. Millions of people have no idea that they can save websites to the Home Screen.
@Plume Agree, but you'd never catch me advocating that the App Store is safe, or should be the only place to distribute software. It's also not a "quality filter", evidently. But I don't agree about the bank comment specifically. The bank has the money to make a good app so its customers are not getting the worst of all worlds, a shitty web crapola that is also running in a worse browser than Safari (the "app" wrapper).
@ObjC4Life It is better, yes, but not by much. It destroys a lot of platform conventions, but at least still tries to present a veneer of the platform it is running on. None of the other cross-platform frameworks even purport to do that anymore. RN presented itself as "native with JS" but was anything but native, and these days, I don't think even the core development team is saying it. Flutter has decided that even maintaining the ugly approximations of native widgets is beyond their scope. MAUI is an abomination that replaced Xamarin Forms, which was already terrible (Xamarin itself let you build UIs with native storyboards or objects, but developers found that toooooo hard).
That is incomprehensible. Apps like Time Passages have been in the app store for years. Co-Star Astrology is an Editor's Choice, so some sort of Apple employee must have approved its prominent placement. Go figure.
Almost certainly, some not-very-smart reviewer knows that astrology apps are banned, and they think that means astronomy apps. (They never realized there’s a difference. They may not even be aware that "astronomy" and "astrology" are two different words.)
So they don’t even need to look at the app. PLUS they can boost their all-important apps-per-hour stat by just rejecting it outright. Because obviously it’s one of those astro- something apps, and those are banned. WIN-WIN.
This is absolutely the level of literacy we have come to expect from App Store reviewers.
@ObjC4Life "But now that Apple is pushing SwiftUI...is it really better than all these other frameworks?"
Definitely, for example Coneno's Quickflow is a Flutter app, and while it doesn't feel "native", its a better, smoother, more reliable and less buggy app than Junyu Kuang's Mona, which is every glitchy jank you can imagine, and is a Catalyst app.
I miss native apps (which doesn't include SwiftUI).
@ObjC4Life Sorry, "Definitely" as in "I agree with your point" not "Definitely, SwiftUI is better than all the other ShovelFrameworks".
Gruber provides explanation for retraction at original story URL. Apparently Gruber took the dev at face value because he did some good in the past, but in fact the app was originally astrology bait and Apple has had well enough of it. Not, of course, that this amounts in fact to holding a monopoly on app distribution, or if such is held, for rejecting astrology apps, whatever you think of astrology.
> the app was originally astrology bait
Not sure why Apple rejected it then. After all, they shipped the iPhone 16 which was AI bait.
Fascinating. That other app he ripped off is less polished, but has it all.
They both look like Claude.
I like how even Gruber thought it was another example of Apple overreach rather than a lying dev.
How far they've fallen
Well, two demerits for spreading misinformation. You got taken for a ride. And sadly, that’s more typical than ever.
> Well, two demerits for spreading misinformation
Feel free to explain to people how they were supposed to know the developer was lying when the experience he claimed to have mirrored that of hundreds of others.
> When else have I published anything that was false?
Congrats, you're the lying fake news mainstream media now, where every mistake anyone makes is just more evidence that everybody is a lying dirtbag and reality is whatever people want it to be.
Also, here's the weird-ass post where the dev "explains" what "happened":
https://blog.terrygodier.com/2026/08/09/mea-culpa-dark-hours.html
@Plume “About an hour later, once it became clear to me that the web app I had launched using Claude was strikingly similar to his open source project[…]” This story is hitting all the buttons.
When I ask Claude to build apps, it sometimes references other GitHub projects. But in my experience, it always explains exactly what it's doing, explicitly credits these projects in readmes and other documentation, and is careful to adhere to all licenses it encounters.
This is classic "Boy Who Cried Wolf". By now, everybody has seen a hundred perfectly good apps rejected by Apple for incomprehensible reasons -- who then (despite Apple's claims to the contrary) after taking the rejection to the press, had the decision reversed.
So when we hear about an app which is apparently legit being rejected for nonsense reasons, of course everybody is going to believe it. That's not even news any more. It's just another slow Friday. Whether Apple happened to get it right or not this time isn't significant.
The real story here is: In 2007, Apple made a new phone, and their brand was so strong that people lined up around the block for it, to pay multiple times the price of any other phone on the market, without ever having seen one in person. In the 18 years since then, Apple has managed to damage their brand so much that when people hear about a disagreement with a solo developer they've never heard of, we assume without evidence that the blame is 100% on Apple.
Apple happened to get it right this time, but they can't blame people for believing otherwise.
@tim: I'd point out that this is the *opposite* of "The Boy Who Cried Wolf" story. We've seen so many time where there was actually a wolf, we fell for the time when there wasn't one.
Apple can solve that problem by fixing their broken processes that lead to baseless rejections which results in us believing every story about a baseless rejection.
...and it appears that Behr's Dark Hours app also is just, get your shocked face ready, a Claude vibe job: https://mastodon.social/@colincornaby/117069185435215102
Godier lied, but a lie from a solo dev with a blog goes nowhere. It became a story because Gruber gave it his reach without doing the one thing any reporter would have done: contacting Apple before publishing. Even a "we don't comment on individual rejections" would have forced the obvious follow-up question - what exactly was in the build they rejected, and what was it called?
He had the answer in front of him. The Review Board told him the app included a live tarot feature. He quoted that, called it Kafkaesque, and never once asked why a reviewer would invent such a specific detail. He verified nothing except that the guy he liked told him he was right.
This is the recurring pattern with John: he wants the influence and the sourcing of a journalist, and when the standards that come with the job are raised, he's suddenly just a blogger. You can't have both. The bill for that came due here, and instead of John paying for it, he dumped it on Apple Developers.
Do better John. Do a lot f'n better.
> This is the recurring pattern with John: he wants the influence and the sourcing of a journalist, and when the standards that come with the job are raised, he's suddenly just a blogger. You can't have both. The bill for that came due here, and instead of John paying for it, he dumped it on Apple Developers.
This comment does not reflect reality. Can you cite any evidence that he has a double standard when it comes to reporting the truth? The very fact that he issued the retraction is evidence to the contrary.
@josh Self-description: Recode Media, 2016, asked directly if he considered himself a reporter, he says no, not really - more of a columnist. His words, and his prerogative. The problem is only that the label changes depending on which is more convenient at the time.
The standard: read his own March 2025 piece on Mark Gurman. He goes after Gurman for getting things wrong and never correcting them, and he explicitly says he'd feel better about the Siri meeting story if more than one reporter at more than one outlet had it. Corroboration, from an interested single source, is the exact thing he demanded of a Bloomberg reporter.
Here he had one source. That source was the subject of the story. He showed that source the draft and took silence as confirmation. He never asked Apple. By his own published standard, that isn't publishable.
And this isn't new. August 2009 for example, Google Voice: one anonymous source told him AT&T was behind the App Store removal, and he published it flatly - trust me, it was AT&T's decision. It wasn't. Single source, stated as certainty, wrong.
Nobody should file that under youthful indiscretion either. DF had been John's full-time job since 2006. That story ran while the FCC was inquiring into the same events and the Journal was covering them. He was already the most-read voice on Apple and he knew it. Seventeen years and the same failure mode, in what was already the professional era both times.
And the retraction doesn't answer this. Retraction is a post-publication remedy. The failure was pre-publication. Correcting well after the fact is good; it isn't a substitute for checking first, and it doesn't unring the bell for every developer who now gets "sure, like Dark Hours" thrown at a real rejection story.
This isn't a hobby anymore. John is the leading Apple voice. As I said he **really** needs to do better.
@MD There are many examples of App Review giving specific details that are wrong. For example, one of my apps was rejected for using Java, which it did not do. Others have gotten review notes that seemed to pertain to an entirely different app.
I don’t see how getting no response or a no-comment from Apple (the most likely outcome) would have helped anything. We also have various cases where the media was able to get official comments from Apple, but it turned out that Apple actively misled them, as we found out after more communications were published (Rogue Amoeba, Dash, etc., as well as Gruber contacting them about Epic and Sign In With Apple). There is a chance that they would have offered a useful comment, though, and then maybe this could have been avoided.
@Michael Tsai I don't think we're disagreeing about App Review. Your Java example is real, and I can add my own: eighteen months of rejection nonsense that ended with me losing the right to use my own app's name in the Mac App Store. Nobody in this thread is arguing that rejections are generally sound or that reviewers get the details right. That isn't the claim.
The claim is about process, and "it wouldn't have helped" is an outcome argument against a process obligation. You can't know the outcome beforehand - that's the entire reason the step is mandatory rather than discretionary. You ask because you don't yet know what you'd learn by asking.
And if he had asked and got silence or a no-comment, the situation is materially different from the one we're in. He publishes noting Apple declined to comment, the story is still wrong, but the failure is Apple's for refusing to correct a false account of its own decision when given the chance. That's a story about a company that won't engage. What we got instead is a story about a writer who didn't ask, which is the one that damages every developer with a real grievance.
On the cases where Apple did comment and misled - Rogue Amoeba, Dash - I'd turn that around. We only know Apple misled anyone because someone sought comment and published it, and the contradiction surfaced later when the fuller correspondence came out. The record that convicts them exists because the question got asked. That's an argument for asking, not against it.
"I don’t see how getting no response or a no-comment from Apple would have helped anything."
Probably not, but I agree with MD that this should be a basic expectation for anyone with Gruber's reach, power, and access to Apple. If the article had ended with 'Apple refused to comment' or 'Apple didn't respond in time for publication,' that would still have been good, because it would have shown that Gruber took this seriously and didn't publish false information without at least doing basic due diligence.
That said, this is me speaking in hindsight. I don't think there was any reason to expect the developer to just be lying. I still don't know what they expected to gain from this. It's just really strange behavior.
I personally think it's all on Apple. Gruber as a columnist, writes feels based quips. Of course he thought Apple had done yet another unjust rejection, because that feels like the most likely scenario.
That the sheepdog of the fanboi community feels that way speaks volumes.
Every individual person is fallible, makes mistakes. I certainly am, and do.
As a lone developer, I can sympathize with Gruber's mistake, because we have nobody else to catch our mistakes. I critize Apple for shipping bugs, yet I also ship bugs. Am I a hypocrite? I don't think so, because there's a crucial difference between a massive organization like Apple and a lone developer like me. Likewise, there's a crucial difference between a massive organization like Bloomberg and a lone writer like Gruber. Mark Gurman has an editor and coworkers, while Gruber does not. Bloomberg and Apple receive $billions in revenue per year. Setting aside factual errors, Gruber publishes a lot more typos than Bloomberg. I wish I had coworkers to review my source code and catch my errors before I release, but my business does not make enough money to support that, so it's just me. I berate myself for my mistakes, and I'm sure Gruber berated himself over this. Ultimately, though, it makes sense to hold companies with more resources to higher standards. They ought to have safeguards, a luxury that we individuals can't afford.
@MD I agree with you about the process. It can’t hurt to ask. I just disagree with your stated point, that a no-comment would have changed what got published. Gruber could have handled this better, but I mostly blame Godier for lying and Apple for creating the conditions where everyone would instinctively believe him. If it weren’t for Gruber, maybe someone else would have run with this story, with similar result. Ultimately, as Plume says, it’s strange behavior. I wonder what he was thinking.
What wasn’t obvious to me from reading all this is that Apple explicitly calls out fortune telling apps under the rule: “Certain kinds of apps, such as dating, flashlight, sound effects, wallpaper, simple timers, and fortune telling, are well established on the App Store, and we will not accept new submissions unless they offer a meaningfully different or improved experience.” (4.3 b)
Gruber may disdain astrology, (fair) and Godier didn’t give the full picture. But the underlying issue he raised is still valid. If you want to release certain kinds of apps, Apple gets to decide whether your app idea (and by proxy, business) are meaningfully different.
A system where new app are allowed only if the central authority decides it fits their plan. I've heard that idea somewhere before…
@Marc Yes, that is a longstanding Apple policy. I still don’t like it, neither the principle nor how opaque the determinations are. And somehow that doesn’t seem to stop the various duplicative casino apps and scams/spams in other categories.
Terry Godier is the goat, saying that he "cannot be trusted" for what seems to be an honest mistake is a bit much.
I was busy enough with personal/professional stuff that I missed this brouhaha.
I was actively considering buying the Current RSS reader app by the same developer and am now I am not so sure anymore.
Also, I find some of Gruber’s takes fatuous but by and large his direction is consistent.
Apple used to have a devils advocate for us in Steve Jobs who cared about more than the bottom line across everything Apple did.
Still true of hardware. A touch less true of software. The synergy is still off the charts compared to almost anyone else.
Services is where they are lost. Truly lost. They have made simple into complex and complex into simple.
Apple Music and Apple TV should have been web based apps, while iTunes gets simplified for people who like buying music, movies and TV shows. Device management moves into the cloud and is obviously web based.
Hell, I pay for iTunes Match instead of Apple Music (must be a fair number of us)and they don’t even give us song lyrics for purchased songs.
How cheap and tawdry of them.
App Store needs to be complex now instead of simple. Simplicity was a strength in the beginning and now its a weakness.
Evolve the App Store so all this becomes possible:
Users can install things via store or web as long as it’s authorised properly.
And devs/firms need to be tiered and layered. No more $99/year for all except for true indies. End this buffet.
Why should company A that updates it app every 2 weeks pay the same as a dev who updates an app maybe once of twice annually?
Freaking start charging for app updates after an appropriate free limit Apple. And see your workload on that front shrink.
Think different you yahoos!
"saying that he "cannot be trusted" for what seems to be an honest mistake is a bit much."
If you don't mind, I'd like you to explain to me how this could possibly have been an honest mistake.
https://daringfireball.net/2026/08/retraction_app_store_rejection_of_the_week
He has publicly retracted the piece.
He explains that the dev lied to him and that he believed the dev because of the general situation and perception around Apple’s App Store policies.
What more can he do?
And I don’t see any use is applying labels like is he a blogger or reporter or journalist?
He tries to give context to the tech world and particularly Apple. Everything from customer relationships to geopolitical headaches.
And there are no paywalls or dark patterns in his site.
Yes, he is wrong occasionally and was wrong here quite badly. Retraction with an apology to do better in the future is good enough for me.
So what more should he do, in your opinion?
@Plume my apologies.
I did not realise you were talking about Godier and responding to Timothée.
Assumed it was about Gruber. Sorry again.
No worries. I'm on the "Leave Gruber alone!" side on this one.
And I'd like to hear Timothée's explanation for what he thinks happened; if there is some absolutely crazily implausible sequence of events that made all of this an honest mistake, I'd love to hear what it was. I don't see it, particularly with the "mea culpa" blog post that completely ignores the whole Apple rejection side of the story.