LIVE MUSIC
Hong Kong boasts a deep and skilled Jazz music scene. We’re happy to feature local artists doing what they do best. Reliving the Jazz era with skill and panache.
We’re happy to welcome back Nate Wong as our music director for the weekend. With deep ties to Hong Kong local music scene and plenty of experience as one of the major leaders of Hong Kong Jazz. We’re in good hands with Nate Wong.
Perhaps more importantly, he knows what will get the dancers moving. He’s been a long time friend of Rhythm Studio and a featured musicians for the last two editing of HSF.
Stay tuned for more info about our Live Music and Featured DJs for HSF26.
Get ready to dance the weekend away at HSF with an unforgettable, high-energy music lineup! We are bringing you three nights of incredible swinging tunes, starting with a trio of fantastic DJs spinning rare grooves and hidden gems on Friday night. On Saturday, experience the vibrant live sounds of Nate Wong and Friends as they gather Hong Kong’s finest jazz talent, and close out the weekend on Sunday with a raw, collaborative jazz jam celebrating the deep connection between dancers and musicians. From spinning records to spectacular live jazz, we have exactly what you need to keep your feet moving all night long.
TEACHERS
We’re inviting 4 amazing teachers to come to Hong Kong to Share their skills and thoughts about Swing Dancing.
EVENT DETAILS
Theme-Based Learning
We believe that learning happens best when you are inspired. Our festival classes are theme-based rather than level-based, giving you the freedom to explore specific concepts alongside dancers of various experiences.
-
Who is this for? These classes are open to all dancers who are comfortable with Swingouts and basic Charleston.
-
How to join: Specific class themes (to be announced) may require advance registration. We will email all pass holders with details and sign-up instructions closer to the event.
This weekend, we’re serving up three unique competition formats—because one size fits no one. Expect a perfectly balanced mix of chaos and charm across Rookie, Wildcard M&M, and Strictly divisions. Designed to spark your competitive spirit without killing your vibe. Details dropping soon—try to contain your excitement.
The rumors are true — we’ve locked in our weekend venues.
Friday and Saturday? Studio 9 Ballroom. You already know the place — high ceilings, smooth floors, and exactly the kind of space that makes your triple steps feel cinematic. We’ve danced here before, and honestly, we couldn’t stay away.
Sunday, we’re back at our home base: DANCETRINITY. It’s got the best sprung floor in Hong Kong. Don’t bother arguing — we’ve tested them all.
Both venues are located around the Sheung Wan area on Hong Kong Island.
UPDATE: SUNDAY VENUE IS CHANGED TO STUDIO 9
DANCE IN A DAY
An introductory session will teach you the fundamentals of social dancing in a fun, welcoming environment. You’ll learn essential steps and partnering basics that will have you feeling confident and ready to hit the dance floor. By the end of class, you’ll be prepared to dance the night away at our Harbourside Swing Fest Saturday Night Social, featuring live music that brings the authentic swing era to life.
SCHEDULE
Don’t miss out our on next update
var rm_pre_data = {"ajax_url":"https://harboursideswingfest.com/wp-admin/admin-ajax.php", "rm_nonce_field":"41c56f0412"};jQuery.fn.bindFirst = function(name, fn) {
// bind as you normally would
// don't want to miss out on any jQuery magic
this.on(name, fn);
var events = this.data('events') || jQuery._data(this[0], 'events');
var handlers = events[name];
// take out the handler we just inserted from the end
var handler = handlers.splice(handlers.length - 1)[0];
// move it at the beginning
handlers.splice(0, 0, handler);
};
//Rainmaker
var Rainmaker = function() {}
Rainmaker.prototype = {
init : function(form){
// var that = form;
if(jQuery(form).closest('.rainmaker_form').length < 1) return;
if(jQuery(form).closest('.rainmaker_form').hasClass('rm_init_done') ) return;
if(jQuery(form).find('.rm_required_field, .ig_form_required_field').length < 1){
jQuery(form).append('');
}
jQuery(form).closest('.rainmaker_form').addClass(jQuery(form).closest('.rainmaker_form').data('type') || '');
jQuery(form).bindFirst('submit', function(e){
window.rainmaker.addLead(e, jQuery(e.target));
}); // submit Event
jQuery(form).closest('.rainmaker_form').addClass('rm_init_done');
},
addLead : function(e, form, icg_msg){
var form = form || undefined;
if(typeof(form) !== 'undefined'){
if(jQuery(form).closest('.rainmaker_form').length 0;
if(!jQuery(fm_parent).hasClass('rm_custom') || (!jQuery(form).attr('action') && !mc4wpform) ){
e.preventDefault();
}
if(jQuery(form).find('.rm_required_field').val() || jQuery(form).find('.ig_form_required_field').val()){
jQuery(fm_parent).find('.rm-loader').hide();
form.slideUp("slow");
jQuery(fm_parent).find('div.rm_form_message').show();
return;
}
var formData = {};
var formData = window.rainmaker.prepareFormData(e, form, icg_msg, formData);
action = rm_pre_data.ajax_url + '?action=rm_rainmaker_add_lead';
jQuery(form).trigger( 'add_lead.rm', [formData] );
jQuery.ajax({
type: 'POST',
url: action,
data: formData,
dataType: 'json',
success: function(response){
if(response && typeof response.error !== 'undefined' && response.error !== ""){
jQuery(fm_parent).find('.rm-loader').hide();
jQuery(fm_parent).find('div.rm_form_error_message').text(response.error).show();
jQuery(window).trigger('error.rm', [form, response]);
} else if(response && typeof response.success !== 'undefined'){
jQuery(form)[0].reset();
jQuery(form).trigger('success.rm', [form, response]);
jQuery(fm_parent).find('.rm-loader').hide();
//TODO :: Later Move this in success callback
form_message = jQuery(fm_parent).next('div.rm_form_message').html();
if( typeof form_message !== 'undefined' && form_message.trim() !== ''){
jQuery(fm_parent).slideUp("slow");
jQuery(fm_parent).next('div.rm_form_message').show();
// jQuery(fm_parent).next().next('div.rm_form_error_message').hide();
}
//TODO :: Later Move this in success callback
var redirection_url = response.redirection_url || '';
redirection_url = redirection_url.trim();
if (typeof(redirection_url) === 'string' && redirection_url != '') {
if (!/^https?:\/\//i.test(redirection_url) ) {
redirection_url = "http://"+redirection_url;
}
setTimeout(function(){
window.location.href = redirection_url;
}, 200);
}
}else{
jQuery(fm_parent).find('.rm-loader').hide();
}
},
error: function(err){
jQuery(fm_parent).find('.rm-loader').hide();
console.log(err);
},
});
}
},
prepareFormData: function (e, form, icg_msg, formData){
jQuery.each((jQuery(form).serializeArray() || {}), function(i, field){
formData['rmfpx_'+ field.name] = field.value;
});
formData['rmfpx_added'] = true;
formData['rmfpx_rm_nonce_field'] = rm_pre_data.rm_nonce_field;
formData['rmfpx_rm_form-id'] = jQuery(form.closest('.rainmaker_form')).data('form-id');
// Send Icegram Data To Rainmaker
if(typeof icegram !== 'undefined'){
formData['rmfpx_ig_mode'] = icegram.mode;
formData['rmfpx_ig_remote_url'] = window.location.href;
if(typeof icg_msg === 'undefined'){
var msg_id = (jQuery(form.closest('[id^=icegram_message_]') || {}).attr('id') || '').split('_').pop() || 0 ;
icg_msg = icegram.get_message_by_id(msg_id) || {};
}
if(typeof icg_msg.data !== 'undefined'){
formData['rmfpx_ig_message_id'] = icg_msg.data.id;
formData['rmfpx_ig_campaign_id'] = icg_msg.data.campaign_id;
}
}
return formData;
},
};
if(typeof window.rainmaker === 'undefined'){
window.rainmaker = new Rainmaker();
}
jQuery(document).ready(function(){
jQuery('.rainmaker_form form').each(function(i, v){
window.rainmaker.init(v);
});
});
// Start : For Icegram Compatibility
jQuery( window ).on( "init.icegram", function(e, ig) {
// Find and init all RM forms within Icegram messages/divs
if(typeof ig !== 'undefined' && typeof ig.messages !== 'undefined' ){
jQuery.each(ig.messages, function(i, msg){
var forms = jQuery(msg.el).find('.rainmaker_form form');
forms.each(function(i, form){
if(!jQuery(form).hasClass('rm_init_done')){
window.rainmaker.init(form);
jQuery(form).addClass('rm_init_done');
}
});
});
}
}); // init.icegram
//Handle CTA function(s) after successful submission of form
jQuery( window ).off('success.rm');
jQuery( window ).on('success.rm', function(e, form, response) {
if( typeof icegram !== 'undefined'){
var msg_id = ((jQuery(e.target).closest('[id^=icegram_message_]') || {}).attr('id') || '').split('_').pop() || 0 ;
var msg = icegram.get_message_by_id(msg_id) || undefined;
if(typeof msg !== 'undefined'){
//TODO:: test this for contact form.
// if(msg.data.cta === 'form_via_ajax' && msg.el.find('.rm_subscription').length > 0){
if(msg.data.cta === 'form_via_ajax' && msg.el.find('.rm_subscription, .rm_contact').length > 0){
// TODO::test this , causing duplicate messages
msg.el.trigger('form_success.ig_cta', [msg]);
} else if(msg.data.cta === 'form' || !msg.data.cta){
if(msg.data.use_form == undefined){
msg.data.response_text = '';
}
response_text = '
'+ (msg.data.response_text || msg.el.find('.rm_form_message').html() || '') +'
';
msg.el.find('.ig_form_container, .ig_message, .ig_headline').hide();
var appendTo = msg.el.filter('.ig_container');
if(jQuery.inArray(msg.data.type, ['interstitial', 'messenger']) !== -1){
appendTo = msg.el.find('.ig_message');
appendTo.show();
msg.el.find('.ig_headline').text('').show();
}else if(msg.data.type === 'tab'){
//TODO :: hide is not working
appendTo = msg.el.find('.ig_data');
msg.el.find('.ig_headline').show();
}
try{
appendTo.append(response_text);
}catch(err){
console.log(err);
}
}
}
}
}); //success.rm
// addLead on IG-CTA form submit event
jQuery(window).off('form_submit.ig_cta');
jQuery(window).on('form_submit.ig_cta', window.rainmaker.addLead);