Luni · Warnings

The Warnings We Do Not Give

Luni checks a routine for six conflicts. Apps and charts that circulate online list well over a hundred. The difference is not that we have not got round to the rest — it is that a warning is a claim, and we only make one when we can say what it rests on. This page is the standard we hold, the six rules that meet it, and what we found when we went looking at the combinations everyone else warns about.

Nothing here says a combination is safe. "We found no good evidence that this needs a warning" and "this is fine for you" are different sentences, and only the first one is ours to write.

The bar

A warning costs the reader something. It says: change what you are doing. If we are wrong, we have taken a product someone already owns out of their routine for no reason, and we have spent the credibility that makes the next warning worth reading. So Luni warns when one of three things is true, and not otherwise.

  • A published contraindication. A body whose job is to say so has said so.
  • An accumulation the user told us about. Not a claim about chemistry — a count of what is in their own routine, against a sensitivity they declared themselves.
  • A missing protection. Something the routine needs and does not have.

Notice what is not on that list: two ingredients that are said not to get along. Of Luni's six rules, exactly one is about a specific pair of ingredients, and it is about irritation from over-exfoliation rather than about the two molecules interfering with each other.

The six

All six live in one file, lib/core/engine/routine_conflicts.dart, and each carries a stable id so the rule and the words shown to the user cannot drift apart.

RuleWhat fires itWhy it meets the bar
Retinoid during pregnancyA retinoid anywhere in the routine, and the user has told us they are pregnant or planning to beA published contraindication. Topical retinoids are generally advised against in pregnancy; our note cites NICE NG198. Educational, and it says to ask a clinician.
No SPF with sun-sensitising activesA retinoid or an exfoliating acid, and no daily SPF detected in the morningA missing protection — a fact about the routine, not a claim about a reaction.
Retinoid + exfoliating acid, same eveningBoth scheduled into the same PMThe only pair rule. Over-exfoliation, not interference: the fix is to alternate nights, never to stop using either.
Multiple exfoliating acidsTwo or more exfoliant products anywhere in the routineA count of the user's own shelf.
Several strong actives, sensitive skinThree or more strong-tier actives, and the user has flagged sensitive skinA count, gated on something the user told us. It does not fire for anyone who has not.
Redundant serumsTwo products covering the same supporting roleThe mildest of the six, and it is not a safety rule at all — it says you already own this, do not buy another.

Three more rules exist in the deeper routine report — two about a patch test the user recorded, one about a procedure in the last seven days — and all three are facts the user entered rather than claims about ingredients.

Niacinamide with vitamin C

89.4 °Cthe temperature at which the study this claim is attributed to was run

This is the most warned-about pair in skincare, and the one we were asked about most. The claim is that niacinamide and ascorbic acid react to form nicotinic acid, which flushes the skin.

The reaction is real. The conditions are the thing nobody quotes. The work usually pointed at is Finholt & Higuchi, “Rate studies on the hydrolysis of niacinamide”, Journal of Pharmaceutical Sciences 51 (1962), 655–61 (PubMed 13892959), which measured the hydrolysis rate across pH 0.4 to 11.3 in aqueous solution at 89.4 °C — and reported that even so, the reaction is slow through the pH range products actually occupy, with a minimum between pH 4 and 6.

We should be careful about that word “usually”. This paper is repeatedly named as the origin of the warning, and its measurements are real and checkable — but we did not find a citation trail proving the modern advice descends from it, and we are not going to assert one. What we can say is narrower and enough: this is the study the claim is attributed to, and it was run at 89.4 °C. A serum on a bathroom shelf is not held at that temperature, and neither is a face. We could not find work showing the conversion proceeds meaningfully at the temperatures and timescales of getting dressed. So we do not warn. Not because we have established the pair is fine for you — we have not, and could not — but because we went looking for a measurement made under conditions resembling use and did not find one. The evidence we were pointed to was made more than 60 °C above them, and that does not meet our bar.

Luni's Advisor will still answer “Can I layer niacinamide with vitamin C?” if you ask it — it is one of the starter prompts the Advisor offers. What it will not do is interrupt you with an unasked-for warning while you are looking at your shelf.

Retinol with vitamin C

The second most warned-about pair, and an honest case of a different kind, because we have no primary source to show you and we are not going to pretend otherwise.

The argument is that L-ascorbic acid needs a low pH and retinol needs a higher one, so layering them costs you one or both. We went looking for a controlled measurement of either losing activity under conditions resembling use, and did not find one. We also did not find one showing they are unaffected. What we have is an argument from formulation premises, and secondary sources disagreeing about it.

That absence is exactly why there is no rule. A warning needs evidence of harm; it cannot be built out of the absence of proof of safety. If we warned every time we could not rule something out, the app would warn about nearly everything, and none of it would mean anything. If a controlled study lands, this section changes and the change gets a dated entry on our corrections page like every other verdict we have revised.

What we have not examined

The list of pairs that circulate as warnings is long, and we have looked properly at two. Niacinamide with acids, peptides with acids, vitamin C with acids, benzoyl peroxide with retinol — we hold no rule on any of them, and the honest reason for most is that nobody here has done the reading yet, not that we have weighed the evidence and found it wanting. Silence on this page means silence, and we would rather write that than let an empty row read as a verdict.

This page will grow the way the corrections page grows: one entry at a time, each dated, each saying what it rests on.

What this page is not

It is not a safety assurance. Nothing here says any combination is safe for you. Luni is cosmetic and educational: it reads published ingredient lists and applies rules to a routine you entered. It has never seen your skin and does not know what you react to. A section saying we found no evidence for a warning is a statement about the evidence, not about you.

It is not medical advice, and none of it substitutes for a clinician — particularly the pregnancy rule, which says so in the app as well.

Fewer rules is a choice, not a gap, but it is still a risk. An app with a hundred and fifty rules will warn you about something real that we miss. We think a warning you can trust is worth more than a warning that fires often, but that trade has a cost and it is ours to own rather than to hide.

You will not be warned about something you did not tell us. Two of the six rules only fire on a flag the user set — sensitive skin, pregnancy. If those are not set, those rules are silent, and the silence is not a judgement that the routine is fine.

How to check this

The rules are a single file in the app: lib/core/engine/routine_conflicts.dart, six rules, each with a stable ruleId, and the taxonomy is written out in docs/ROUTINE_CONFLICT_CHECK.md. The count on this page is the count in that file. The 1962 paper is linked above and its abstract states the temperature and the pH range — that part is checkable in one click. Its status as the origin of the modern warning is an attribution we repeat rather than a lineage we traced, and the page says so where it matters rather than here. Published 8 September 2026.