Skip to content

Releases: ideal-postcodes/postcodes.io

19.0.2

29 May 12:29

Choose a tag to compare

19.0.2 (2026-05-29)

Bug Fixes

  • upstream dump now nulls county names for pseudo-county areas (6c6bb34)

19.0.1

28 May 15:02

Choose a tag to compare

19.0.1 (2026-05-28)

Bug Fixes

  • deps: add docusaurus theme dependencies and pin webpackbar (82347d7)

19.0.0

26 May 20:56

Choose a tag to compare

19.0.0 (2026-05-26)

  • build(docker)!: Upgrade postgis to 17-3.5 and switch test container to debian slim (34055ba)
  • refactor(schema)!: Move canonical tables from pcio.* to public.* (8e10d36)

Bug Fixes

  • Docker: Enable postgis (7e53fda)
  • spec,api,docs: Align OpenAPI schemas, API behavior, and documentation for v13 (4561fac)

Documentation

  • openapi: Expand ScottishPostcodes for full SPD coverage (5b04b0a)

Features

  • api: Return Senedd Cymru constituency from postcode lookups (7b43570)
  • ingest: Remove ingest tooling and support-table models (6d37c16)
  • models: Delete the model layer (ab51e11)
  • PgDump: Expand exported dataset (ebbf184)
  • queries: Introduce api/app/queries/db.ts and migrate utils (5a85bc4)
  • queries: Migrate outcodes_controller to api/app/queries/outcodes (5fcdb22)
  • queries: Migrate places_controller to api/app/queries/places (52e4abd)
  • queries: Migrate postcodes_controller to api/app/queries/postcodes (18a69cb)
  • queries: Migrate scottish_postcodes_controller to full SPD shape (e4e077c)
  • queries: Migrate terminated_postcodes to api/app/queries (62c1440)
  • spec,docs: Add Senedd Cymru constituency fields to Postcode schema (c927d3d)
  • test: Replace model-driven seed with dump-based pipeline (364811b)

Performance Improvements

  • DB: Add partial indexes (5d0c2b2)
  • db: tune Postgres for read-only workload, add pg_prewarm (971f267)
  • outcodes: Read from pcio.outcodes matview instead of aggregating on the fly (466a283)
  • queries: Batch bulk postcode + reverse-geo endpoints into one SQL each (7743d9e)
  • test: Strip pnpm install from test image build (480da6d)

BREAKING CHANGES

  • All canonical data now lives under the public schema.
    Existing deployments using the old pcio.* layout must reload from the
    new dump (or migrate the schema) before pulling this version. The
    test seed (test/seed/v13.sql.gz) needs regenerating against a public.*
    source dump.
  • Postgres major version upgrade. Existing PG16 data volumes
    are not in-place compatible with the PG17 server — operators must drop the
    volume (or pg_upgrade) before pulling the new images. The published pg_dump
    under latest must be regenerated from PG17 to keep the format aligned.
  • models: api/app/models/* removed. Any external consumer
    that imported from postcodes.io's compiled output (we don't think
    there is one) must migrate to api/app/queries/*.
  • queries: GET /scotland/postcodes/:postcode now returns the
    full SPD record. Existing fields (postcode,
    scottish_parliamentary_constituency,
    codes.scottish_parliamentary_constituency) preserved at their
    canonical names.
  • ingest: removed CLIs postcodesio-onspd, postcodesio-scotpd,
    and postcodesio-oson. Ingestion is no longer this package's
    responsibility - consume a published pg_dump instead.
  • openapi: GET /scotland/postcodes/:postcode response shape
    expands from 3 fields to a full SPD record. Existing fields
    (postcode, scottish_parliamentary_constituency, codes.scottish_parliamentary_constituency)
    are preserved under their canonical names.
  • test: npm scripts setup_test_db, test:seed and test:clear
    have been removed. test:create no longer compiles TypeScript; it
    shells to bin/load_test_seed and expects test/seed/v13.sql.gz to be
    present (regenerate with bin/generate_test_seed against a fully loaded
    dev DB).
  • PgDump: This update restructures the database into just three tables:
  • onspd (ONS Postcode Directory)
  • spd (Scottish Postcode Directory)
  • osopennames (OS Open Names)

Tables are now fully denormalised for performance

18.0.1

16 Feb 20:21

Choose a tag to compare

18.0.1 (2026-02-16)

Bug Fixes

  • Release: Trigger fixed DB build (955c43f)

18.0.0

18 Dec 13:05

Choose a tag to compare

18.0.0 (2025-12-18)

Features

  • api: Update LSOA and MSOA to 2021 Census data (fd4426a), closes #1181 #1053 #898
  • models: Add lookup table models for new ONSPD fields (b89ec32)
  • ONSPD: Add extraction scripts and lookup data for new fields (2cb312a)
  • postcode: Add lsoa11 and msoa11 as explicit aliases (326ec47)
  • postcode: Add schema, mappings and API response for new fields (afa64cb)
  • postcode: Change lsoa/msoa to point to 2021 census data (cfa7cd0)
  • setup: Add new ONSPD lookup tables to support tables array (36e9822)

BREAKING CHANGES

  • api: lsoa and msoa fields now return 2021 Census values instead of 2011
  • postcode: lsoa and msoa fields now return 2021 census data
    instead of 2011 census data.
  • lsoa/msoa now return 2021 LSOA/MSOA names
  • codes.lsoa/codes.msoa now return 2021 GSS codes
  • lsoa11/msoa11 added as aliases for 2011 data
  • codes.lsoa11/codes.msoa11 added for 2011 codes
  • Updated OpenAPI spec and documentation

17.7.0

12 Dec 14:37

Choose a tag to compare

17.7.0 (2025-12-12)

Features

  • postcode: Return terminated postcode data in 404 response (afb7d73), closes #1295

17.6.2

12 Dec 13:31

Choose a tag to compare

17.6.2 (2025-12-12)

Bug Fixes

  • places: Strip BOM character from code field during import (d4cae31)

17.6.1

12 Dec 13:10

Choose a tag to compare

17.6.1 (2025-12-12)

Bug Fixes

  • Places: Fix broken places table (98d2802)

17.6.0

10 Dec 13:12

Choose a tag to compare

17.6.0 (2025-12-10)

Features

  • ONSPD: Update to Nov 2025 (8936a4b)

17.5.0

12 Sep 09:14

Choose a tag to compare

17.5.0 (2025-09-12)

Bug Fixes

  • import: Update CSV header check for ONSPD AUG 2025 format (da9d96b)
  • Seed Data: Update for new labels (cacbc7f)

Features

  • data: Update County Electoral Divisions to May 2025 release (0e653bb)
  • data: Update Parish/Non-Civil Parish codes to April 2025 v2 (caf17e8)