Skip to content

Next.js in Adelaide

Next.js development for Adelaide businesses on a half-hour offset

A Next.js development company working with Adelaide businesses. A time zone thirty minutes off the hour, which breaks the arithmetic in a surprising amount of software.

Working day overlap
About an hour and a half. Adelaide is six and a half hours ahead of Ankara, and the half hour is not a rounding error
Who buys here
Defence and space businesses, wine and agribusiness exporters, health and medical research, and manufacturing
What that changes
A half-hour offset breaks code that assumes whole-hour time zones, which is a surprising amount of otherwise careful software
Local specifics
South Australia observes daylight saving while Queensland and Western Australia do not, so a national application faces three different behaviours

Adelaide is half an hour off the hour, and that is not a trivia question - it is the reason Adelaide finds time zone bugs that no other Australian city finds.

Six and a half hours ahead of us. Half an hour behind Sydney for part of the year. A great deal of software, written carefully by people who thought about time zones, nonetheless assumes that a time zone offset is a whole number of hours. All of that code is correct for Sydney and wrong for Adelaide.

The half hour is where the bugs are

The pattern repeats across codebases that have nothing else in common.

An offset stored as an integer number of hours. A conversion written as arithmetic on a timestamp rather than a lookup against a time zone database. A truncation to the start of an hour used as a proxy for the start of a period. A cached "current offset" that is correct until the clocks move. Each of these produces a result that is right for most users and half an hour out for South Australia.

The symptom is characteristic and easy to misread: a date that is correct during the working day and wrong for an hour either side of midnight, or a figure that lands in the wrong reporting day for some users and not others. It is diagnosed by looking at who, not what - if the affected users are all in one state, the cause is the offset.

Formatting a date twice is the common Next.js version

There is a specific way this shows up in an App Router application, and it is worth naming because the error message points somewhere unhelpful.

A date formatted on the server uses the server's time zone. The same date formatted in the browser uses the visitor's. If both happen - server render, then hydration - the two disagree, and what surfaces is a hydration mismatch rather than a visibly wrong date. People then go looking for a rendering problem.

The rule that prevents it is to decide, per date, whose time zone it belongs in. A delivery window belongs in the customer's. A market close belongs in the exchange's. A report period belongs in the business's. Once that is decided, the date is formatted once, in the place that owns the decision, and the other side never reformats it. Why hydration mismatches happen covers the error itself.

Three behaviours in one country

A national Australian application has to cope with three different daylight saving behaviours at once.

South Australia and the eastern states move their clocks. Queensland does not. Western Australia does not. The practical consequence is that the gap between two Australian cities is not a constant, and anything that stores an offset rather than a named zone will be wrong for several months of each year.

So zones are stored by name, offsets are never stored, and anything scheduled nationally is evaluated per zone rather than once. That is unremarkable advice and it is ignored often enough that Adelaide keeps proving it.

Commercially

Scope fixed in writing before work starts, priced per project. The country-level ground - the privacy and breach regime, hosting expectations, invoicing - is on the Australia market page.

Invoiced by Codefacture Yazılım A.Ş. in Türkiye, in US dollars by bank transfer, with no Turkish VAT because exported services are exempt.

The regulatory and commercial ground for this city is on the Australia market page.

Frequently asked questions

Why does Adelaide break our date handling when Sydney does not?
Because Adelaide is thirty minutes off the hour, and a lot of code quietly assumes time zones are whole hours. A truncation to the hour, an offset stored as an integer, a hand-rolled conversion using arithmetic rather than a time zone database - each of these is correct for Sydney and wrong by half an hour for Adelaide. The symptom is usually a date that is right most of the day and wrong near midnight, which is the hardest version to notice.
Our dates show differently for some users. Where does that come from?
Almost always from a date being formatted in two places - once on the server in the server's zone, and once in the browser in the visitor's. Those disagree, and in Next.js the disagreement surfaces as a hydration mismatch rather than as a wrong date, which sends people looking in the wrong place. The rule that avoids it is to decide for each date whether it is being shown in the business's time zone or the viewer's, and to format it once, in the place that owns that decision.
We are a national Australian business. How many time zone behaviours is that?
Three, which is the thing that surprises people. South Australia and the eastern states observe daylight saving; Queensland does not; Western Australia does not. So for part of the year Adelaide is half an hour behind Sydney and for part of it the gap is different, and Brisbane moves relative to both without changing its own clock. Anything scheduled or displayed nationally has to work from named zones rather than from stored offsets.
Our defence client restricts where data can be hosted. Does that work?
It is a design input rather than a problem, and it means running the application on infrastructure that meets the requirement rather than on a platform. That changes a known set of defaults - image optimisation, a revalidation cache shared across replicas, middleware no longer running at an edge, and a proxy that must not buffer streaming responses. All four are supported and all four are cheaper settled in week one.
Call us+1 848 272 7583WhatsApp+90 850 308 5436Emailinfo@codefacture.comContact page