South Africa seeks halt to Israel’s Rafah offensive at International Court of Justice
South Africa seeks halt to Israel’s Rafah offensive at International Court of Justice
Read this story aloud
Listen to the clean text version of this article
Ready
2 min listen
Audio reading is not supported on this browser.
South Africa has also asked the court to order Israel to allow unimpeded access to Gaza for UN officials, organisations providing humanitarian aid, and journalists and investigators
South Africa will ask the top UN court on Thursday to order a halt to the Rafah offensive as part of its case in The Hague accusing Israel of genocide in the Gaza Strip.
The hearings at the International Court of Justice, also known as the World Court, come after South Africa last week asked for additional emergency measures to protect Rafah, a southern Gaza city where more than a million Palestinians have been sheltering.
It also asked the court to order Israel to allow unimpeded access to Gaza for UN officials, organisations providing humanitarian aid, and journalists and investigators. It added that Israel has so far ignored and violated earlier court orders.
More To Read
- DRC sues Rwanda at ICJ over alleged Genocide Convention breaches
- Ruto steps up ICC campaign for Judge Njoki Ndung’u ahead of 2026 elections in New York
- CJ Martha Koome sets 2026–2030 roadmap to cut backlogs, digitise courts
On Thursday, South Africa will present its latest intervention-seeking emergency measures starting at 3 p.m. (1300 GMT).

Ambassador Vusimuzi Madonsela (r) of South Africa during a hearing at the International Court of Justice (ICJ) on the legal consequences of the Israeli occupation of Palestinian territories. (Photo: ROBIN VAN LONKHUIJSEN/ANP via AFP)
Israel, which has denounced South Africa’s claim that it is violating the 1949 Genocide Convention as baseless, will respond on Friday. In previous filings, it stressed it had stepped up efforts to get humanitarian aid into Gaza as the ICJ had ordered.
Latest Stories
- Belgium knocks US out of World Cup after Balogun controversy
- KUCCPS set to release university placement results for over 980,000 Form Four leavers
- Saba Saba: Police block key roads as commuters face heavy traffic delays in Nairobi
- Microsoft to cut thousands of jobs, Xbox to be hit hard
Gilad Erdan, Israel’s ambassador to the United Nations told Army Radio on Wednesday the short notice the court gave for the hearings did not allow sufficient legal preparation, adding that was “a telling sign”.

The Israel-Hamas war has killed nearly 35,000 people in Gaza, according to health authorities there.
South Africa accuses Israel of acts of genocide against Palestinians. In January, the court ordered Israel to ensure its troops commit no genocidal acts against Palestinians in Gaza, allow in more humanitarian aid and preserve any evidence of violations.
The hearings on May 16 and 17 will focus on issuing emergency measures, to keep the dispute from escalating.
The ICJ’s rulings and orders are binding and without appeal. While the court has no way to enforce them, an order against a country could hurt its international reputation and set a legal precedent.
Other Topics To Read
Top Stories Today
- Saba Saba: Police block key roads as commuters face heavy traffic delays in Nairobi
- Nairobi among 35 counties to receive rains this week, weatherman says
- Live update: Police mount roadblocks ahead of Saba Saba protests
- KUCCPS set to release university placement results for over 980,000 Form Four leavers
- Presidential candidates to spend only upto Sh4.43 billion on campaigns in draft IEBC rules
- From AI to ‘killer robots’: UN chief issues urgent governance call
`;
}
return “;
}
function commentActionsMarkup(comment, canComment) {
const likeLabel = comment.liked_by_me ? ‘Liked’ : ‘Like’;
const likeCount = Number(comment.like_count || 0) > 0
? “
: ”;
const likeButton = canComment && comment.status === ‘approved’
? “
: “;
const replyButton = canComment && comment.status === ‘approved’
? “
: ”;
return `
`;
}
function commentMarkup(comment, canComment, isReply = false) {
const pendingBadge = comment.status && comment.status !== ‘approved’
? “
: ”;
const edited = comment.is_edited
? “
: ”;
const repliesHtml = Array.isArray(comment.replies) && comment.replies.length
? `
`
: “;
return `
`;
}
function replyFormMarkup(commentId) {
return `
`;
}
function setNotice(widget, message, type = ‘info’) {
const notice = widget.querySelector(‘[data-role=”notice”]’);
if (!notice) return;
if (!message) {
notice.hidden = true;
notice.textContent = ”;
notice.classList.remove(‘is-error’);
return;
}
notice.hidden = false;
notice.textContent = message;
notice.classList.toggle(‘is-error’, type === ‘error’);
}
function setCount(widget, total) {
const count = widget.querySelector(‘[data-role=”count”]’);
if (!count) return;
const num = Number(total || 0);
count.textContent = num === 1 ? ‘1 comment’ : `${num} comments`;
}
function openReplyBox(widget, commentId) {
widget.querySelectorAll(‘[data-role=”reply-box”]’).forEach(box => {
box.hidden = true;
box.innerHTML = ”;
});
const targetItem = widget.querySelector(`.ev-comments__item[data-comment-id=”${commentId}”]`);
if (!targetItem) return;
const replyBox = targetItem.querySelector(‘[data-role=”reply-box”]’);
if (!replyBox) return;
replyBox.hidden = false;
replyBox.innerHTML = replyFormMarkup(commentId);
const textarea = replyBox.querySelector(‘textarea’);
if (textarea) textarea.focus();
}
function closeReplyBox(container) {
if (!container) return;
container.hidden = true;
container.innerHTML = ”;
}
async function initCommentsWidget(widget) {
const state = {
articleId: Number(widget.dataset.articleId),
loadUrl: widget.dataset.loadUrl,
storeUrl: widget.dataset.storeUrl,
commentsBaseUrl: widget.dataset.commentsBaseUrl,
canComment: widget.dataset.canComment === ‘1’,
page: 1,
perPage: 10,
sort: ‘newest’,
total: 0,
hasMore: false,
busy: false
};
const list = widget.querySelector(‘[data-role=”list”]’);
const loading = widget.querySelector(‘[data-role=”loading”]’);
const empty = widget.querySelector(‘[data-role=”empty”]’);
const loadMoreBtn = widget.querySelector(‘[data-role=”load-more”]’);
const sortSelect = widget.querySelector(‘[data-role=”sort”]’);
const composerForm = widget.querySelector(‘[data-role=”composer-form”]’);
async function loadComments(reset = true) {
if (state.busy) return;
state.busy = true;
setNotice(widget, ”);
loading.hidden = false;
if (reset) {
state.page = 1;
list.innerHTML = ”;
empty.hidden = true;
}
try {
const url = new URL(state.loadUrl, window.location.origin);
url.searchParams.set(‘page’, state.page);
url.searchParams.set(‘per_page’, state.perPage);
url.searchParams.set(‘sort’, state.sort);
const response = await requestJson(url.toString(), {
method: ‘GET’,
headers: {
‘Accept’: ‘application/json’,
‘X-Requested-With’: ‘XMLHttpRequest’
}
});
const items = Array.isArray(response.data) ? response.data : [];
const meta = response.meta || {};
state.total = Number(meta.total || 0);
state.hasMore = !!meta.has_more;
setCount(widget, state.total);
if (reset) {
list.innerHTML = ”;
}
if (!items.length && reset) {
empty.hidden = false;
} else {
empty.hidden = true;
list.insertAdjacentHTML(
‘beforeend’,
items.map(item => commentMarkup(item, state.canComment, false)).join(”)
);
}
loadMoreBtn.hidden = !state.hasMore;
} catch (error) {
if (!list.children.length) {
empty.hidden = false;
empty.textContent = ‘Unable to load comments right now.’;
}
setNotice(widget, error.message || ‘Unable to load comments.’, ‘error’);
} finally {
loading.hidden = true;
state.busy = false;
}
}
async function submitTopLevelComment(form) {
const textarea = form.querySelector(‘textarea[name=”content”]’);
const button = form.querySelector(‘[data-role=”submit-comment”]’);
if (!textarea) return;
const content = textarea.value.trim();
if (!content) return;
const originalText = button ? button.textContent : ”;
try {
if (button) {
button.disabled = true;
button.textContent = ‘Posting…’;
}
const response = await requestJson(state.storeUrl, {
method: ‘POST’,
headers: buildJsonHeaders(),
body: JSON.stringify({
article_id: state.articleId,
content: content,
source_url: window.location.href
})
});
textarea.value = ”;
if (response?.data) {
list.insertAdjacentHTML(
‘afterbegin’,
commentMarkup(response.data, state.canComment, false)
);
empty.hidden = true;
if ((response.data.status || ”) === ‘approved’) {
state.total += 1;
setCount(widget, state.total);
}
}
setNotice(widget, response.message || ‘Comment posted successfully.’);
} catch (error) {
setNotice(widget, error.message || ‘Unable to post comment.’, ‘error’);
} finally {
if (button) {
button.disabled = false;
button.textContent = originalText || ‘Post comment’;
}
}
}
async function submitReply(form) {
const commentId = Number(form.dataset.commentId || 0);
const textarea = form.querySelector(‘textarea[name=”content”]’);
const button = form.querySelector(‘.ev-comments__reply-submit’);
if (!commentId || !textarea) return;
const content = textarea.value.trim();
if (!content) return;
const originalText = button ? button.textContent : ”;
try {
if (button) {
button.disabled = true;
button.textContent = ‘Posting…’;
}
const response = await requestJson(`${state.commentsBaseUrl}/${commentId}/reply`, {
method: ‘POST’,
headers: buildJsonHeaders(),
body: JSON.stringify({
article_id: state.articleId,
content: content,
source_url: window.location.href
})
});
if (response?.data) {
const parentItem = widget.querySelector(`.ev-comments__item[data-comment-id=”${commentId}”]`);
if (parentItem) {
const repliesWrap = parentItem.querySelector(‘.ev-comments__replies’);
if (repliesWrap) {
repliesWrap.insertAdjacentHTML(
‘beforeend’,
commentMarkup(response.data, state.canComment, true)
);
}
}
}
closeReplyBox(form.closest(‘[data-role=”reply-box”]’));
setNotice(widget, response.message || ‘Reply posted successfully.’);
} catch (error) {
setNotice(widget, error.message || ‘Unable to post reply.’, ‘error’);
} finally {
if (button) {
button.disabled = false;
button.textContent = originalText || ‘Post reply’;
}
}
}
async function toggleLike(button) {
const commentId = Number(button.dataset.commentId || 0);
if (!commentId) return;
const originalHtml = button.innerHTML;
try {
button.disabled = true;
button.innerHTML = ‘Working…’;
const response = await requestJson(`${state.commentsBaseUrl}/${commentId}/like`, {
method: ‘POST’,
headers: buildJsonHeaders(),
body: JSON.stringify({})
});
const liked = !!response?.data?.liked;
const likeCount = Number(response?.data?.like_count || 0);
button.classList.toggle(‘is-liked’, liked);
button.innerHTML = `${liked ? ‘Liked’ : ‘Like’} ${likeCount > 0 ? “ : ”}`;
} catch (error) {
button.innerHTML = originalHtml;
setNotice(widget, error.message || ‘Unable to update like.’, ‘error’);
} finally {
button.disabled = false;
}
}
if (composerForm) {
composerForm.addEventListener(‘submit’, function (e) {
e.preventDefault();
submitTopLevelComment(composerForm);
});
}
if (sortSelect) {
sortSelect.addEventListener(‘change’, function () {
state.sort = this.value || ‘newest’;
loadComments(true);
});
}
if (loadMoreBtn) {
loadMoreBtn.addEventListener(‘click’, function () {
if (state.busy || !state.hasMore) return;
state.page += 1;
loadComments(false);
});
}
widget.addEventListener(‘click’, function (e) {
const likeBtn = e.target.closest(‘[data-action=”toggle-like”]’);
if (likeBtn) {
e.preventDefault();
toggleLike(likeBtn);
return;
}
const replyBtn = e.target.closest(‘[data-action=”toggle-reply”]’);
if (replyBtn) {
e.preventDefault();
openReplyBox(widget, Number(replyBtn.dataset.commentId || 0));
return;
}
const cancelReplyBtn = e.target.closest(‘[data-action=”cancel-reply”]’);
if (cancelReplyBtn) {
e.preventDefault();
closeReplyBox(cancelReplyBtn.closest(‘[data-role=”reply-box”]’));
}
});
widget.addEventListener(‘submit’, function (e) {
const replyForm = e.target.closest(‘.ev-comments__reply-form’);
if (replyForm) {
e.preventDefault();
submitReply(replyForm);
}
});
loadComments(true);
}
document.addEventListener(‘DOMContentLoaded’, function () {
document.querySelectorAll(‘.ev-comments’).forEach(initCommentsWidget);
});
})();
Trending

KUCCPS set to release university placement results for over 980,000 Form Four leaversEducation
|Lucy Mumbi
|29 minutes ago

Saba Saba: Police block key roads as commuters face heavy traffic delays in NairobiNews
|Lucy Mumbi
|48 minutes ago

Belgium knocks US out of World Cup after Balogun controversyNews
|DW News
|20 minutes ago

Mombasa tuk-tuk operators issue seven-day ultimatum over new traffic penaltiesCoast
|Farhiya Hussein
|2 hours ago

CS Duale, Attorney General Oduor face contempt case over failure to implement KNDI court orderNews
|Carolyne Kubwa
|14 hours ago

Kenyans urged to join Saba Saba march to honour victims of alleged abductions, killingsNews
|Lucy Mumbi
|1 day ago

Peace team sounds alarm over gang attacks on worship centres and peaceful gatheringsNational
|Abdirahman Khalif
|12 hours ago

Nairobi among 35 counties to receive rains this week, weatherman saysNews
|Lucy Mumbi
|2 minutes ago

Burkina Faso tightens grip on NGOs with new ban on exploitative humanitarian imagesAfrica
|Rachael Mutabasi
|1 day ago

Live update: Police mount roadblocks ahead of Saba Saba protestsNational
|Eastleigh Voice Reporter
|1 hour ago