diff --git a/frontend/src/__tests__/components/resource/FullDetailsTable.test.tsx b/frontend/src/__tests__/components/resource/FullDetailsTable.test.tsx
index efc6c7cf..ea9326cf 100644
--- a/frontend/src/__tests__/components/resource/FullDetailsTable.test.tsx
+++ b/frontend/src/__tests__/components/resource/FullDetailsTable.test.tsx
@@ -264,6 +264,42 @@ describe('FullDetailsTable', () => {
expect(screen.getByText('Restricted')).toBeInTheDocument();
});
+ it('preserves a year-only Date Issued value', () => {
+ const data = {
+ ...baseData,
+ attributes: {
+ ...baseData.attributes,
+ ogm: {
+ ...baseData.attributes.ogm,
+ dct_issued_s: '1950',
+ },
+ },
+ };
+
+ renderWithRouter();
+
+ expect(screen.getByText('Date Issued')).toBeInTheDocument();
+ expect(screen.getByText('1950')).toBeInTheDocument();
+ expect(screen.queryByText('January 1, 1950')).not.toBeInTheDocument();
+ });
+
+ it('formats a full Date Issued value with month and day', () => {
+ const data = {
+ ...baseData,
+ attributes: {
+ ...baseData.attributes,
+ ogm: {
+ ...baseData.attributes.ogm,
+ dct_issued_s: '2019-01-15',
+ },
+ },
+ };
+
+ renderWithRouter();
+
+ expect(screen.getByText('January 15, 2019')).toBeInTheDocument();
+ });
+
it('metadata facet labels use sequential heading level (h3 under h2)', () => {
const data = {
...baseData,
diff --git a/frontend/src/components/resource/FullDetailsTable.tsx b/frontend/src/components/resource/FullDetailsTable.tsx
index ceb5ddff..62b446c4 100644
--- a/frontend/src/components/resource/FullDetailsTable.tsx
+++ b/frontend/src/components/resource/FullDetailsTable.tsx
@@ -360,7 +360,14 @@ export function FullDetailsTable({ data }: FullDetailsTableProps) {
// IMPORTANT: make this deterministic across SSR/client.
// Manually parse YYYY-MM-DD to avoid `new Date(string)` ambiguity and timezone offsets.
// We strictly interpret the date string as UTC YYYY-MM-DD.
- const valStr = value.toString();
+ const valStr = value.toString().trim();
+
+ // Date Issued often has year-level precision. Preserve that precision instead
+ // of allowing `new Date("2024")` to invent January 1 as a month and day.
+ if (key === 'dct_issued_s' && /^\d{4}$/.test(valStr)) {
+ return valStr;
+ }
+
// Match YYYY-MM-DD pattern (stripping time if present)
const match = valStr.match(/^(\d{4})-(\d{2})-(\d{2})/);