1. Вешаете
IntersectionObserver или слушаете событие
scroll для определения когда пора подгружать.
2. Используя
xhr или
fetch получаете с сервера новую порцию данных.
3. Если нужно - наполняете этими данными шаблоны.
4. Вставляете на страницу,
5. обновляете правила для пункта 1.